//A. float4 GlowX_fp ( float2 uv: TEXCOORD0, uniform sampler2D scene: register(s0), uniform float4 invTexSize ) : COLOR #define RENDER_SCENE 1 #define BLUR_RADIUS 1 { float4 colour = float4(0); float blurSize = BLUR_RADIUS * invTexSize.x; //X-blur. int x = uv.x/blurSize; colour += tex2D(scene, float2((x - 4.0) * blurSize, uv.y)) * 1.0/25.0; colour += tex2D(scene, float2((x - 3.0) * blurSize, uv.y)) * 2.0/25.0; colour += tex2D(scene, float2((x - 2.0) * blurSize, uv.y)) * 3.0/25.0; colour += tex2D(scene, float2((x - 1.0) * blurSize, uv.y)) * 4.0/25.0; colour += tex2D(scene, float2((x + 0.0) * blurSize, uv.y)) * 5.0/25.0; colour += tex2D(scene, float2((x + 1.0) * blurSize, uv.y)) * 4.0/25.0; colour += tex2D(scene, float2((x + 2.0) * blurSize, uv.y)) * 3.0/25.0; colour += tex2D(scene, float2((x + 3.0) * blurSize, uv.y)) * 2.0/25.0; colour += tex2D(scene, float2((x + 4.0) * blurSize, uv.y)) * 1.0/25.0; return colour; } //B. float4 GlowY_fp ( float2 uv: TEXCOORD0, uniform sampler2D blurX: register(s0), uniform float4 invTexSize ) : COLOR { float4 colour = float4(0); float blurSize = BLUR_RADIUS * invTexSize.y; //Y-blur. int y = uv.y/blurSize; colour += tex2D(blurX, float2(uv.x, (y - 4.0) * blurSize)) * 1.0/25.0; colour += tex2D(blurX, float2(uv.x, (y - 3.0) * blurSize)) * 2.0/25.0; colour += tex2D(blurX, float2(uv.x, (y - 2.0) * blurSize)) * 3.0/25.0; colour += tex2D(blurX, float2(uv.x, (y - 1.0) * blurSize)) * 4.0/25.0; colour += tex2D(blurX, float2(uv.x, (y + 0.0) * blurSize)) * 5.0/25.0; colour += tex2D(blurX, float2(uv.x, (y + 1.0) * blurSize)) * 4.0/25.0; colour += tex2D(blurX, float2(uv.x, (y + 2.0) * blurSize)) * 3.0/25.0; colour += tex2D(blurX, float2(uv.x, (y + 3.0) * blurSize)) * 2.0/25.0; colour += tex2D(blurX, float2(uv.x, (y + 4.0) * blurSize)) * 1.0/25.0; return colour; } //C. float4 GlowBlend_fp ( float2 uv: TEXCOORD0, uniform sampler2D scene: register(s0), uniform sampler2D blurXY: register(s1) ) : COLOR { //Add this to original, return. return #if RENDER_SCENE tex2D(scene, uv) + #endif tex2D(blurXY, uv) * 1; }