00001 void main()
00002 {
00003
00004 gl_TexCoord[0] = gl_MultiTexCoord0;
00005
00006
00007 gl_Position = ftransform();
00008 }
00009
00010 ~~~~~
00011
00012 uniform sampler2D Texture0;
00013 uniform sampler2D Texture1;
00014 uniform sampler2D Texture2;
00015
00016 uniform float motionbias;
00017 uniform float motionclamp;
00018
00019 #define KERNEL_SIZE 3.0
00020 #define KERNEL_AREA 16.0
00021
00022 void main()
00023 {
00024
00025 vec4 vMotion = texture2D( Texture2, gl_TexCoord[0].xy ) * 2.0 - 1.0;
00026
00027
00028 vec2 blur = clamp( vMotion.xy * vMotion.xy * motionbias, -motionclamp, motionclamp );
00029
00030
00031 vec4 col = vec4( 0, 0, 0, 0 );
00032 for ( float x = -KERNEL_SIZE + 1.0; x < KERNEL_SIZE; x += 1.0 )
00033 {
00034 for ( float y = -KERNEL_SIZE + 1.0; y < KERNEL_SIZE; y += 1.0 )
00035 {
00036 col += texture2D( Texture0, gl_TexCoord[0].xy + vec2( blur.x * x, blur.y * y ) );
00037 }
00038 }
00039 col /= KERNEL_AREA;
00040
00041 gl_FragColor = col;
00042 }