snake5 icon

5x5 gaussian

snake5 | PRO | 02/14/15 08:32:53 AM UTC | 0 ⭐ | 998 👁️ | Never ⏰ | []
OpenGL Shading |

0 B

|

None

|

0 👍

/

0 👎

 
varying vec4 Color;
varying vec2 TexCoord0;
 
#ifdef VSHADER
 
void main()
{
    gl_Position = ProjectionMatrix * ViewMatrix * GLVertex;
    TexCoord0 = GLTexCoord0.xy;
    Color = GLColor;
}
 
 
 
#elif defined PSHADER
 
#define TEX2DLOD textureLod
 
uniform sampler2D Tex0;
 
void main()
{
    vec4 color = vec4( 0, 0, 0, 0 );
    vec2 hrange = ( abs( dFdx( TexCoord0 ) ) + abs( dFdy( TexCoord0 ) ) ) * 0.75;
    
    // LINE 1
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( -hrange.x, -hrange.y ), 0 ) * ( 0.1 * 0.1 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( -hrange.x * 0.5, -hrange.y ), 0 ) * ( 0.2 * 0.1 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( 0, -hrange.y ), 0 ) * ( 0.4 * 0.1 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( hrange.x * 0.5, -hrange.y ), 0 ) * ( 0.2 * 0.1 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( hrange.x, -hrange.y ), 0 ) * ( 0.1 * 0.1 );
 
    // LINE 2
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( -hrange.x, -hrange.y * 0.5 ), 0 ) * ( 0.1 * 0.2 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( -hrange.x * 0.5, -hrange.y * 0.5 ), 0 ) * ( 0.2 * 0.2 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( 0, -hrange.y * 0.5 ), 0 ) * ( 0.4 * 0.2 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( hrange.x * 0.5, -hrange.y * 0.5 ), 0 ) * ( 0.2 * 0.2 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( hrange.x, -hrange.y * 0.5 ), 0 ) * ( 0.1 * 0.2 );
 
    // LINE 3
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( -hrange.x, 0 ), 0 ) * ( 0.1 * 0.4 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( -hrange.x * 0.5, 0 ), 0 ) * ( 0.2 * 0.4 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( 0, 0 ), 0 ) * ( 0.4 * 0.4 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( hrange.x * 0.5, 0 ), 0 ) * ( 0.2 * 0.4 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( hrange.x, 0 ), 0 ) * ( 0.1 * 0.4 );
 
    // LINE 4
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( -hrange.x, hrange.y * 0.5 ), 0 ) * ( 0.1 * 0.2 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( -hrange.x * 0.5, hrange.y * 0.5 ), 0 ) * ( 0.2 * 0.2 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( 0, hrange.y * 0.5 ), 0 ) * ( 0.4 * 0.2 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( hrange.x * 0.5, hrange.y * 0.5 ), 0 ) * ( 0.2 * 0.2 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( hrange.x, hrange.y * 0.5 ), 0 ) * ( 0.1 * 0.2 );
 
    // LINE 5
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( -hrange.x, hrange.y ), 0 ) * ( 0.1 * 0.1 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( -hrange.x * 0.5, hrange.y ), 0 ) * ( 0.2 * 0.1 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( 0, hrange.y ), 0 ) * ( 0.4 * 0.1 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( hrange.x * 0.5, hrange.y ), 0 ) * ( 0.2 * 0.1 );
    color += TEX2DLOD( Tex0, TexCoord0 + vec2( hrange.x, hrange.y ), 0 ) * ( 0.1 * 0.1 );
 
    gl_FragColor = color * Color;
}
 
 
 
#endif

Comments