You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
vec4 fast_hash32(vec2 pos) {
// pos is assumed to be an integer coordinateconstvec2 OFFSET =vec2(403.839172, 377.242706);
constfloat DOMAIN =71.0;
constfloat K =32745.708984;
constvec2 SCALE =vec2(2.009842, 1.372549);
vec4 P =vec4(pos, pos +1.0);
P = P -floor(P * (1.0/ DOMAIN)) * DOMAIN;
P = P * SCALE.xyxy + OFFSET.xyxy;
P *= P;
returnfract(P.xzxz * P.yyww * (1.0/ K));
}
Fractal noise
float fbm3(vec3 p) {
float f =0.0;
f +=0.50000*noise3(p); p *=2.02;
f -=0.25000*noise3(p); p *=2.03;
f +=0.12500*noise3(p); p *=2.01;
f +=0.06250*noise3(p); p *=2.04;
f -=0.03125*noise3(p);
return f /0.984375;
}
Simplex noise
// Description : Array and textureless GLSL 2D simplex noise function.// Author : Ian McEwan, Ashima Arts.// Maintainer : ijm// Lastmod : 20110822 (ijm)// License : Copyright (C) 2011 Ashima Arts. All rights reserved.// Distributed under the MIT License. See LICENSE file.// https://github.com/ashima/webgl-noisevec2 mod289(vec2 x) {
return x -floor(x * (1.0/289.0)) *289.0;
}
vec3 mod289(vec3 x) {
return x -floor(x * (1.0/289.0)) *289.0;
}
vec3 permute(vec3 x) {
return mod289(((x*34.0)+1.0)*x);
}
float snoise(vec2 v) {
constvec4 C =vec4(0.211324865405187, // (3.0-sqrt(3.0))/6.00.366025403784439, // 0.5*(sqrt(3.0)-1.0)-0.577350269189626, // -1.0 + 2.0 * C.x0.024390243902439); // 1.0 / 41.0// First cornervec2 i =floor(v +dot(v, C.yy) );
vec2 x0 = v - i +dot(i, C.xx);
// Other cornersvec2 i1;
i1 = (x0.x > x0.y) ?vec2(1.0, 0.0) :vec2(0.0, 1.0);
// x0 = x0 - 0.0 + 0.0 * C.xx ;// x1 = x0 - i1 + 1.0 * C.xx ;// x2 = x0 - 1.0 + 2.0 * C.xx ;vec4 x12 = x0.xyxy + C.xxzz;
x12.xy -= i1;
// Permutations
i = mod289(i); // Avoid truncation effects in permutationvec3 p = permute( permute( i.y +vec3(0.0, i1.y, 1.0 ))
+ i.x +vec3(0.0, i1.x, 1.0 ));
vec3 m =max(0.5-vec3(dot(x0, x0), dot(x12.xy, x12.xy), dot(x12.zw, x12.zw)), 0.0);
m = m * m ;
m = m * m ;
// Gradients: 41 points uniformly over a line, mapped onto a diamond.// The ring size 17*17 = 289 is close to a multiple of 41 (41*7 = 287)vec3 x =2.0*fract(p * C.www) -1.0;
vec3 h =abs(x) -0.5;
vec3 ox =floor(x +0.5);
vec3 a0 = x - ox;
// Normalise gradients implicitly by scaling m// Approximation of: m *= inversesqrt( a0*a0 + h*h );
m *=1.79284291400159-0.85373472095314* ( a0 * a0 + h * h );
// Compute final noise value at Pvec3 g;
g.x = a0.x * x0.x + h.x * x0.y;
g.yz = a0.yz * x12.xz + h.yz * x12.yw;
return130.0*dot(m, g);
}