From ee1fa2fbfe9ab66be3f95b4a946b6591442c2d85 Mon Sep 17 00:00:00 2001 From: beppe Date: Fri, 26 Apr 2024 10:47:13 +0200 Subject: [PATCH] smoothstep lijkt super interessant --- learning/shaping/main.frag | 24 ++++++++++++++++++++++++ learning/shaping/pow.frag | 28 ++++++++++++++++++++++++++++ learning/shaping/step.frag | 32 ++++++++++++++++++++++++++++++++ 3 files changed, 84 insertions(+) create mode 100644 learning/shaping/main.frag create mode 100644 learning/shaping/pow.frag create mode 100644 learning/shaping/step.frag diff --git a/learning/shaping/main.frag b/learning/shaping/main.frag new file mode 100644 index 0000000..3e15f13 --- /dev/null +++ b/learning/shaping/main.frag @@ -0,0 +1,24 @@ +#ifdef GL_ES +precision mediump float; +#endif + +uniform vec2 u_resolution; +uniform vec2 u_mouse; +uniform float u_time; + +// Plot a line on Y using a value between 0.0-1.0 +float plot(vec2 st) { + return smoothstep(0.02,0.0, abs(st.y - st.x)); +} + +void main() { + vec2 st = gl_FragCoord.xy/u_resolution; + float y = st.x; + + vec3 color = vec3(y); + + float pct = plot(st); + color = (1.0-pct)*color+pct*vec3(0.0,1.0,0.0); + + gl_FragColor = vec4(color, 1.0); +} diff --git a/learning/shaping/pow.frag b/learning/shaping/pow.frag new file mode 100644 index 0000000..58482b0 --- /dev/null +++ b/learning/shaping/pow.frag @@ -0,0 +1,28 @@ +#ifdef GL_ES +precision mediump float; +#endif + +uniform vec2 u_resolution; +uniform vec2 u_mouse; +uniform float u_time; + +#define PI 3.14159265359 + + +// Plot a line on Y using a value between 0.0-1.0 +float plot(vec2 st, float pct) { + return smoothstep( pct-0.02, pct, st.y) - smoothstep( pct, pct+0.02, st.y); +} + +void main() { + vec2 st = gl_FragCoord.xy/u_resolution; + // float y = pow(st.x, 2.0); + // float y = pow(st.x, PI); + float y = sqrt(st.x); + vec3 color = vec3(y); + + float pct = plot(st,y); + color = (1.0-pct)*color+pct*vec3(0.0,1.0,0.0); + + gl_FragColor = vec4(color, 1.0); +} diff --git a/learning/shaping/step.frag b/learning/shaping/step.frag new file mode 100644 index 0000000..fee031f --- /dev/null +++ b/learning/shaping/step.frag @@ -0,0 +1,32 @@ +#ifdef GL_ES +precision mediump float; +#endif + +uniform vec2 u_resolution; +uniform vec2 u_mouse; +uniform float u_time; + +#define PI 3.14159265359 + + +// Plot a line on Y using a value between 0.0-1.0 +float plot(vec2 st, float pct) { + return smoothstep( pct-0.02, pct, st.y) - smoothstep( pct, pct+0.02, st.y); +} + +void main() { + vec2 st = gl_FragCoord.xy/u_resolution; + // float y = pow(st.x, 2.0); + // float y = pow(st.x, PI); + // float y = sqrt(st.x); + // float y = step(0.5, st.x); + // float y = smoothstep(0.3,0.9,st.x); + // this code creates a smooth gradient for a line edge from 0.4 to 0.5 and 0.5 to 0.6 since it's only checking the x coors + float y = smoothstep(0.4,0.5,st.x) - smoothstep(0.5,0.6,st.x); + vec3 color = vec3(y); + + float pct = plot(st,y); + color = (1.0-pct)*color+pct*vec3(0.0,1.0,0.0); + + gl_FragColor = vec4(color, 1.0); +}