texture atlas; sampler atlasSampler = sampler_state { Texture = ; MinFilter = Point; MagFilter = Point; MipFilter = None; AddressU = Wrap; AddressV = Wrap; }; struct vsInputNormalizePRM { float4 pos : POSITION; float2 tex : TEXCOORD0; }; struct vsOutputNormalizePRM { float4 pos : POSITION; float2 tex : TEXCOORD0; }; vsOutputNormalizePRM vsNormalizePRM(vsInputNormalizePRM input) { vsOutputNormalizePRM output = (vsOutputNormalizePRM)0; output.pos = input.pos; output.tex = input.tex; return output; } float4 psNormalizePRM(vsOutputNormalizePRM input) : COLOR0 { // float4 unn = tex2D(atlasSampler, input.tex + float2(0.5 / 4096.0, 0.5 / 128.0)); float4 unn = tex2D(atlasSampler, input.tex); // if(unn.a < 1.0 / 4096.0) // unn = float4(0, 0, 0, 1); // return unn; return float4(unn.rgb * (4096.0 / unn.a), 1); } technique NormalizePRM{ pass P0 { VertexShader = compile vs_3_0 vsNormalizePRM(); PixelShader = compile ps_3_0 psNormalizePRM(); } }