123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- // Source: https://www.shadertoy.com/view/4lB3zz
- // Uniforms
- uniform float brightness;
- uniform float persistence;
- uniform float timeScale;
- // Varyings
- varying vec2 vUV;
- // Functions
- vec2 hash22(vec2 p)
- {
- p = p * mat2(127.1, 311.7, 269.5, 183.3);
- p = -1.0 + 2.0 * fract(sin(p) * 43758.5453123);
- return sin(p * 6.283 + timeScale);
- }
- float interpolationNoise(vec2 p)
- {
- vec2 pi = floor(p);
- vec2 pf = p-pi;
-
- vec2 w = pf * pf * (3.-2. * pf);
-
- float f00 = dot(hash22(pi + vec2(.0,.0)), pf-vec2(.0,.0));
- float f01 = dot(hash22(pi + vec2(.0,1.)), pf-vec2(.0,1.));
- float f10 = dot(hash22(pi + vec2(1.0,0.)), pf-vec2(1.0,0.));
- float f11 = dot(hash22(pi + vec2(1.0,1.)), pf-vec2(1.0,1.));
-
- float xm1 = mix(f00,f10,w.x);
- float xm2 = mix(f01,f11,w.x);
-
- float ym = mix(xm1,xm2,w.y);
- return ym;
-
- }
- float perlinNoise2D(float x,float y)
- {
- float sum = 0.0;
- float frequency = 0.0;
- float amplitude = 0.0;
- for(int i = 0; i < OCTAVES; i++)
- {
- frequency = pow(2.0, float(i));
- amplitude = pow(persistence, float(i));
- sum = sum + interpolationNoise(vec2(x * frequency, y * frequency)) * amplitude;
- }
-
- return sum;
- }
- // Main
- void main(void)
- {
- float x = abs(vUV.x);
- float y = abs(vUV.y);
- float noise = brightness + (1.0 - brightness) * perlinNoise2D(x,y);
- gl_FragColor = vec4(noise, noise, noise, 1.0);
- }
|