#define samplesU 5 #define samplesV 5 struct VS_INPUT { float4 Position : POSITION; }; struct VS_OUTPUT { float4 hPosition : POSITION; float2 Position : TEXCOORD0; }; VS_OUTPUT BlurVS(VS_INPUT IN) { VS_OUTPUT OUT; OUT.hPosition = IN.Position; OUT.Position =(IN.Position.xy + 1.0) / 2.0; OUT.Position.y = 1.0 - OUT.Position.y; return OUT; } float4 BlurPS(VS_OUTPUT IN, uniform sampler2D Texture : register(s0), uniform float width, uniform float height ) : COLOR { float2 pixel = float2(1.0 / width, 1.0 / height); float2 uv = IN.Position + pixel * 0.5; float4 sum = float4(0,0,0,0); for(int i = 0; i < samplesU; i++) for(int j = 0; j < samplesU; j++) sum += tex2D(Texture, uv + float2(i - samplesU * 0.5,j - samplesV * 0.5) * pixel); sum /= samplesU * samplesV; return sum; return tex2D(Texture, uv); }