void main_fp(float2 texCoord: TEXCOORD0, float2 subTexCoord: TEXCOORD1, uniform sampler2D indirectTexture, uniform sampler2D sourceTexture, uniform float epsilonX, uniform float epsilonY, uniform float sourceTextureSize, uniform float numSamples, uniform float sqrtNumSamples, out float4 ocolor: COLOR) { ocolor = float4(0.0, 0.0, 0.0, 0.0); float2 epsilon = float2(epsilonX, epsilonY); float4 value = tex2D(indirectTexture, subTexCoord).xyzw; float2 coords = float2(0.0, 1.0) - abs(texCoord - ( value.xy - epsilon ) ); if (value.z != 0.0) { float2 newcoord = (float2(1.0, 1.0) - value.zw) + ((coords * sourceTextureSize) / sqrtNumSamples); ocolor = float4(tex2D(sourceTexture, newcoord).xyzw); } }