OpenGL ES SDK for Android ARM Developer Center
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
noise.cpp
Go to the documentation of this file.
1 /* Copyright (c) 2014-2017, ARM Limited and Contributors
2  *
3  * SPDX-License-Identifier: MIT
4  *
5  * Permission is hereby granted, free of charge,
6  * to any person obtaining a copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation the rights to
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
9  * and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
12  *
13  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
14  * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
16  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
17  * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19  */
20 
21 #include "noise.h"
22 #include <random>
23 
24 float clamp(float x, float min, float max)
25 {
26  return x < min ? min : x > max ? max : x;
27 }
28 
29 float max(float x, float y)
30 {
31  return x > y ? x : y;
32 }
33 
34 float min(float x, float y)
35 {
36  return x < y ? x : y;
37 }
38 
39 // See http://en.wikipedia.org/wiki/Xorshift
40 unsigned int xor128()
41 {
42  static unsigned int x = 123456789;
43  static unsigned int y = 362436069;
44  static unsigned int z = 521288629;
45  static unsigned int w = 88675123;
46  unsigned int t;
47 
48  t = x ^ (x << 11);
49  x = y; y = z; z = w;
50  return w = w ^ (w >> 19) ^ (t ^ (t >>8));
51 }
52 
53 float frand()
54 {
55  return xor128() / float(4294967295.0f);
56 }
float min(float x, float y)
Definition: noise.cpp:34
float clamp(float x, float min, float max)
Definition: noise.cpp:24
unsigned int xor128()
Definition: noise.cpp:40
float frand()
Definition: noise.cpp:53
GLfloat GLfloat GLfloat w
Definition: gl2ext.h:2701
GLfloat GLfloat f
Definition: gl2ext.h:2707
float max(float x, float y)
Definition: noise.cpp:29
GLint GLint GLint GLint GLint x
Definition: gl2ext.h:574
precision highp float
Definition: hiz_cull.cs:37
GLint y
Definition: gl2ext.h:179