mirror of
https://github.com/patriciogonzalezvivo/thebookofshaders
synced 2024-11-11 13:10:57 +00:00
e58dec55ee
in four shaders a function that implements gradient noise was labeled as value noise and linked to IQ's value noise example on shadertoy. this pr labels that function as gradient noise and instead links to IQ's gradient noise example on shadertoy.
45 lines
1.3 KiB
GLSL
45 lines
1.3 KiB
GLSL
#ifdef GL_ES
|
|
precision mediump float;
|
|
#endif
|
|
|
|
uniform vec2 u_resolution;
|
|
uniform vec2 u_mouse;
|
|
uniform float u_time;
|
|
|
|
vec2 random2(vec2 st){
|
|
st = vec2( dot(st,vec2(127.1,311.7)),
|
|
dot(st,vec2(269.5,183.3)) );
|
|
return -1.0 + 2.0*fract(sin(st)*43758.5453123);
|
|
}
|
|
|
|
// Gradient Noise by Inigo Quilez - iq/2013
|
|
// https://www.shadertoy.com/view/XdXGW8
|
|
float noise(vec2 st) {
|
|
vec2 i = floor(st);
|
|
vec2 f = fract(st);
|
|
|
|
vec2 u = f*f*(3.0-2.0*f);
|
|
|
|
return mix( mix( dot( random2(i + vec2(0.0,0.0) ), f - vec2(0.0,0.0) ),
|
|
dot( random2(i + vec2(1.0,0.0) ), f - vec2(1.0,0.0) ), u.x),
|
|
mix( dot( random2(i + vec2(0.0,1.0) ), f - vec2(0.0,1.0) ),
|
|
dot( random2(i + vec2(1.0,1.0) ), f - vec2(1.0,1.0) ), u.x), u.y);
|
|
}
|
|
|
|
void main() {
|
|
vec2 st = gl_FragCoord.xy/u_resolution.xy;
|
|
st.x *= u_resolution.x/u_resolution.y;
|
|
vec3 color = vec3(0.0);
|
|
|
|
float t = 1.0;
|
|
// Uncomment to animate
|
|
// t = abs(1.0-sin(u_time*.1))*5.;
|
|
// Comment and uncomment the following lines:
|
|
st += noise(st*2.)*t; // Animate the coordinate space
|
|
color = vec3(1.) * smoothstep(.18,.2,noise(st)); // Big black drops
|
|
color += smoothstep(.15,.2,noise(st*10.)); // Black splatter
|
|
color -= smoothstep(.35,.4,noise(st*10.)); // Holes on splatter
|
|
|
|
gl_FragColor = vec4(1.-color,1.0);
|
|
}
|