X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=shaders%2Fblitblur.h;h=ac8f3cc20cf3e3bcfd58deca8a63a32de1a58b4c;hb=c52dacb7bc07e300312e45d605d206222dcbb181;hp=5de8e0a63544bdba324545f468d0d0710ff5f768;hpb=bf8478e3656ae729248a594a57d111f08bed41e0;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/shaders/blitblur.h b/shaders/blitblur.h index 5de8e0a..ac8f3cc 100644 --- a/shaders/blitblur.h +++ b/shaders/blitblur.h @@ -31,6 +31,7 @@ static struct vg_shader _shader_blitblur = { "uniform vec2 uOverrideDir;\n" "uniform float uTime;\n" "uniform float uGlitchStrength;\n" +"uniform vec2 uClampUv;\n" "\n" "in vec2 aUv;\n" "\n" @@ -51,21 +52,21 @@ static struct vg_shader _shader_blitblur = { "void main(){\n" " vec2 vuv = aUv; \n" "\n" -" if( uGlitchStrength > 0.0 ){\n" -" uvec3 p = uvec3( gl_FragCoord.xy, uint(uTime*30.0) );\n" -" vec2 g = digital_noise(p).xy;\n" -" vuv = aUv + g.xy*uGlitchStrength - uGlitchStrength*0.5;\n" -" }\n" +" //if( uGlitchStrength > 0.0 ){\n" +" // uvec3 p = uvec3( gl_FragCoord.xy, uint(uTime*30.0) );\n" +" // vec2 g = digital_noise(p).xy;\n" +" // vuv = aUv + g.xy*uGlitchStrength - uGlitchStrength*0.5;\n" +" //}\n" "\n" " vec2 vrand = rand_hash22( vuv ) * 2.0 - vec2(1.0);\n" " vec2 vrand1 = rand_hash22( vrand ) * 2.0 - vec2(1.0);\n" " \n" " vec2 vdir = texture( uTexMotion, vuv ).xy * uBlurStrength + uOverrideDir;\n" "\n" -" vec4 vcolour0 = texture( uTexMain, vuv + vdir*vrand.x );\n" -" vec4 vcolour1 = texture( uTexMain, vuv + vdir*vrand.y );\n" -" vec4 vcolour2 = texture( uTexMain, vuv + vdir*vrand1.x );\n" -" vec4 vcolour3 = texture( uTexMain, vuv + vdir*vrand1.y );\n" +" vec4 vcolour0 = texture( uTexMain, min(vuv + vdir*vrand.x,uClampUv) );\n" +" vec4 vcolour1 = texture( uTexMain, min(vuv + vdir*vrand.y,uClampUv) );\n" +" vec4 vcolour2 = texture( uTexMain, min(vuv + vdir*vrand1.x,uClampUv) );\n" +" vec4 vcolour3 = texture( uTexMain, min(vuv + vdir*vrand1.y,uClampUv) );\n" "\n" " FragColor = ( vcolour0 + vcolour1 + vcolour2 + vcolour3 ) * 0.25;\n" "}\n" @@ -79,6 +80,7 @@ static GLuint _uniform_blitblur_uBlurStrength; static GLuint _uniform_blitblur_uOverrideDir; static GLuint _uniform_blitblur_uTime; static GLuint _uniform_blitblur_uGlitchStrength; +static GLuint _uniform_blitblur_uClampUv; static void shader_blitblur_uInverseRatio(v2f v){ glUniform2fv(_uniform_blitblur_uInverseRatio,1,v); } @@ -100,6 +102,9 @@ static void shader_blitblur_uTime(float f){ static void shader_blitblur_uGlitchStrength(float f){ glUniform1f(_uniform_blitblur_uGlitchStrength,f); } +static void shader_blitblur_uClampUv(v2f v){ + glUniform2fv(_uniform_blitblur_uClampUv,1,v); +} static void shader_blitblur_register(void){ vg_shader_register( &_shader_blitblur ); } @@ -112,5 +117,6 @@ static void shader_blitblur_link(void){ _uniform_blitblur_uOverrideDir = glGetUniformLocation( _shader_blitblur.id, "uOverrideDir" ); _uniform_blitblur_uTime = glGetUniformLocation( _shader_blitblur.id, "uTime" ); _uniform_blitblur_uGlitchStrength = glGetUniformLocation( _shader_blitblur.id, "uGlitchStrength" ); + _uniform_blitblur_uClampUv = glGetUniformLocation( _shader_blitblur.id, "uClampUv" ); } #endif /* SHADER_blitblur_H */