graadients
Log in to post a comment.
#version 300 es
precision highp float;
uniform float iTime;
uniform vec2 iResolution;
out vec4 fragColor;
uniform float _Temporal; //value=0.1, min=0, max=1, step=0.01
uniform float _Spatial; //value=2, min=0, max=4, step=0.01
uniform float _GX; //value=0, min=0, max=1, step=0.01
uniform float _GY; //value=0.1, min=0, max=1, step=0.01
uniform float _GZ; //value=0.2, min=0, max=1, step=0.01
uniform float _Gradient; //value=0.3, min=0, max=1, step=0.01
#define m4 mat4( 0.00, 0.80, 0.60, -0.4, -0.80, 0.36, -0.48, -0.5, -0.60, -0.48, 0.64, 0.2, 0.40, 0.30, 0.20,0.4)
vec4 twistedSineNoise(vec4 q)
{
float a = 1.;
float f = 1.;
vec4 sum = vec4(0);
for(int i = 0; i < 3 ; i++){
q = m4 * q;
vec4 s = sin( q.ywxz * f) / f;
q += s;
sum += s;
f *= 1.618;
}
return sum;
}
vec3 gradient( in float t)
{
return .5 + .5*cos( 6.28318*(t+ vec3(_GX, _GY, _GZ)) );
}
float hash12(vec2 p)
{
vec3 p3 = fract(vec3(p.xyx) * .1031);
p3 += dot(p3, p3.yzx + 33.33);
return fract((p3.x + p3.y) * p3.z);
}
void main()
{
float t = iTime * _Temporal;
vec3 c = vec3(0.);
for(int y = 0; y < 2; y++){
for(int x = 0; x < 2; x++){
vec2 uv = ( gl_FragCoord.xy + vec2(x, y) * 0.5) /iResolution.y;
vec4 qa = vec4(uv * _Spatial, 10., t);
vec4 a = twistedSineNoise(qa);
vec4 ia = step(a, vec4(0.));
vec4 qb = vec4(uv * _Spatial * 1.618, 20., -t);
vec4 b = twistedSineNoise(qb);
vec4 ib = step(b, vec4(0.));
vec4 n = mod( ia +ib , vec4(2.));
float i = dot(n, vec4(1, 2,4,8));
c += gradient(i/ 16. + uv.x * _Gradient );
}
}
c = sqrt(c * .25);
c += hash12( gl_FragCoord.xy) * 0.075;
fragColor = vec4(c, 1.);
}