diff options
author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-05-26 17:34:58 +0200 |
---|---|---|
committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-05-26 17:34:58 +0200 |
commit | 52bc19527838f2cac481a89cefd18cfea6e1a2d2 (patch) | |
tree | aed452488b766f9e0f02d6e5237d6eecf0e8e909 /visuals.frag | |
parent | 33deac9462906c5e7b084665df3194cfa5e73249 (diff) |
WIP add framebuffer
Diffstat (limited to 'visuals.frag')
-rw-r--r-- | visuals.frag | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/visuals.frag b/visuals.frag index d680834..35f9a6a 100644 --- a/visuals.frag +++ b/visuals.frag @@ -1,18 +1,22 @@ -#version 330 core +#version 460 core + +out vec4 color; +in vec4 gl_FragCoord; uniform float time; uniform ivec2 window; - -// adapted from <https://www.shadertoy.com/view/4djSRW> -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); -} +uniform sampler2D buf; void main() { - vec2 uv = gl_FragCoord.xy / window; - vec2 pos = gl_FragCoord.xy + time; - gl_FragColor = vec4(hash12(pos), uv.xy, 1.0); + vec2 point = vec2(sin(time), cos(time)) * 0.7; + point.x *= float(window.y) / float(window.x); // adjust for aspect ratio + point = ((point + 1.0) / 2.0) * window.xy; // convert to screen coords + float r = 20.0; // circle radius + + color = vec4(0.0); + if (length(gl_FragCoord.xy - point) < r) + color = vec4(1.0); + + color += texture(buf, gl_FragCoord.xy / window.xy) * 0.90; } |