port from perforce
This commit is contained in:
81
underwater4k/texture.glsl_0
Normal file
81
underwater4k/texture.glsl_0
Normal file
@@ -0,0 +1,81 @@
|
||||
// Parameters from our host
|
||||
// x: #sceneid.#scenetime (float)
|
||||
// y: undefined
|
||||
// z: Snare drum intensity (amiga ball radius gain)
|
||||
// w: undefined
|
||||
uniform vec4 Z;
|
||||
|
||||
float rnd(vec2 p)
|
||||
{
|
||||
p.x += p.y * 57.;
|
||||
return sin(cos(p.x) * p.x);
|
||||
}
|
||||
|
||||
float scale;
|
||||
vec2 hash( vec2 p )
|
||||
{
|
||||
p = mod(p, scale);
|
||||
p = vec2( dot(p,vec2(127.1,311.7)),
|
||||
dot(p,vec2(269.5,183.3)) );
|
||||
|
||||
return -1.0 + 2.0*fract(sin(p)*43758.5453123);
|
||||
}
|
||||
|
||||
float noise( in vec2 p, float s )
|
||||
{
|
||||
scale = s;
|
||||
p *= s;
|
||||
vec2 i = floor( p );
|
||||
vec2 f = fract( p );
|
||||
|
||||
vec2 u = f*f*(3.0-2.0*f);
|
||||
|
||||
return mix( mix( dot( hash( i + vec2(0.0,0.0) ), f - vec2(0.0,0.0) ),
|
||||
dot( hash( i + vec2(1.0,0.0) ), f - vec2(1.0,0.0) ), u.x),
|
||||
mix( dot( hash( i + vec2(0.0,1.0) ), f - vec2(0.0,1.0) ),
|
||||
dot( hash( i + vec2(1.0,1.0) ), f - vec2(1.0,1.0) ), u.x), u.y);
|
||||
}
|
||||
|
||||
float voronoi(vec2 p)
|
||||
{
|
||||
p = mod(p, 1.0);
|
||||
float min1 = 1, min2 = 1; float seed = 10; const int numPoints = 256;
|
||||
for (int i = 0; i < numPoints; ++i)
|
||||
{
|
||||
vec2 pointPos = vec2(rnd(vec2(0, seed++)), rnd(vec2(1, seed++)))*.5+.5;
|
||||
//pointPos += vec2(sin(Z.z+rnd(vec2(0, seed++))), cos(Z.z+rnd(vec2(1, seed++))))*0.1;
|
||||
vec2 d = abs(p - pointPos);
|
||||
vec2 s = step(0.5, d);
|
||||
d = s+d*(-s*2+1);
|
||||
float dist = length(d);
|
||||
if (dist < min2)
|
||||
{
|
||||
if (dist < min1)
|
||||
{
|
||||
min2 = min1;
|
||||
min1 = dist;
|
||||
}
|
||||
else
|
||||
{
|
||||
min2 = dist;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//return pow(1.0 - (min2 - min1), 32.0);
|
||||
return (min2 - min1) * 8.0;
|
||||
}
|
||||
|
||||
void main()
|
||||
{
|
||||
vec2 p = gl_FragCoord.xy / Z.xy;
|
||||
float l = voronoi(p);
|
||||
|
||||
float f = 0.5;
|
||||
float seed = 10.0;
|
||||
for (float t = 2.0; t <= Z.x; t *= 2.0)
|
||||
{
|
||||
f += (0.5 / pow(t, 0.6)) * noise(p,t);
|
||||
}
|
||||
gl_FragColor = vec4(l,f,l,1);
|
||||
}
|
||||
Reference in New Issue
Block a user