diff options
Diffstat (limited to 'shader.frag')
-rw-r--r-- | shader.frag | 41 |
1 files changed, 25 insertions, 16 deletions
diff --git a/shader.frag b/shader.frag index c6cc012..0141563 100644 --- a/shader.frag +++ b/shader.frag @@ -4,11 +4,11 @@ precision mediump float; #endif uniform vec2 resolution; -uniform float time; +uniform float ticks; +uniform int program; uniform sampler2D images[4]; layout (binding = 0,rgba32f) uniform image2D backbuffer; -//uniform image2DArray buffers; uniform float ratios[4]; uniform float params[32]; @@ -18,25 +18,34 @@ float random (in float x) { return fract(sin(x)*43758.5453123)-0.5; } -vec4 image(int i) { +vec4 img(int i) { vec2 st = gl_FragCoord.xy/resolution.xy; st.x *= ratios[i]; st.x += (1-ratios[i])*0.5; - st.x += 0.5*time; + st.x += 0.5; return texture2D(images[i],st); } void main (void) { - vec4 img1 = mix(image(0),image(1),sin(time)); - vec4 img2 = mix(image(2),image(3),cos(time)); - ivec2 P = ivec2(gl_FragCoord.xy); - vec4 buf = imageLoad(backbuffer,P); - buf.rg = buf.gr; - //buf.b = 0.0; - vec4 i = mix(img1,img2,0.5); - //P = ivec2(gl_FragCoord.xy); - imageStore(backbuffer,P,i); - i = mix(i,buf,0.8); - //i = image(0); - fragColor = i; + vec4 image = img(0); + if (program == 0) { + image = img(2); + image.rg = image.gr; + image = 1.5*image; + } + /* + else { + ivec2 P = ivec2(gl_FragCoord.xy); + vec4 buf = imageLoad(backbuffer,P); + vec4 img1 = mix(img(0),img(1),sin(ticks)); + vec4 img2 = mix(img(2),img(3),cos(ticks)); + buf.bg = buf.gr; + //buf.b = 0.0; + vec4 i = mix(img1,img2,0.5); + //P = ivec2(gl_FragCoord.xy); + imageStore(backbuffer,P,i); + image = mix(i,buf,0.8); + } + */ + fragColor = image; } |