uniform samplerRECT samp0 : register(s0); void main(out float4 ocol0 : COLOR0, in float2 uv0 : TEXCOORD0) { float4 to_gray = float4(0.3,0.59,0.11,0); float x1 = dot(to_gray, texRECT(samp0, uv0+float2(1,1))); float x0 = dot(to_gray, texRECT(samp0, uv0+float2(-1,-1))); float x3 = dot(to_gray, texRECT(samp0, uv0+float2(1,-1))); float x2 = dot(to_gray, texRECT(samp0, uv0+float2(-1,1))); float edge = (x1 - x0) * (x1 - x0); float edge2 = (x3 - x2) * (x3 - x2); edge += edge2; float4 color = texRECT(samp0, uv0).rgba; ocol0 = max(color - float4(edge, edge, edge, edge) * 12, float4(0,0,0,0)); }