/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2006 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// struct PS_INPUT { float2 mainTexCoord: TEXCOORD0; float4 baseVec: TEXCOORD2; }; /////////////////////////////////////////////////////////////////////////////// sampler tex0: register(s0); /////////////////////////////////////////////////////////////////////////////// // Pixelshader // Profile: 2x0 float4 main(PS_INPUT input): COLOR0 { float2 mainTexCoord = input.mainTexCoord; float2 offsPix0 = input.baseVec.xy; float2 offsPix1 = input.baseVec.zw; float2 offsPix2 = offsPix0 + offsPix1; float2 offsPix3 = offsPix0 - offsPix1; float4 val = tex2D(tex0, mainTexCoord); float4 val0 = tex2D(tex0, mainTexCoord.xy + offsPix0); float4 val1 = tex2D(tex0, mainTexCoord.xy + offsPix1); float4 val2 = tex2D(tex0, mainTexCoord.xy + offsPix2); float4 val3 = tex2D(tex0, mainTexCoord.xy + offsPix3); float4 val4 = tex2D(tex0, mainTexCoord.xy - offsPix0); float4 val5 = tex2D(tex0, mainTexCoord.xy - offsPix1); float4 val6 = tex2D(tex0, mainTexCoord.xy - offsPix2); float4 val7 = tex2D(tex0, mainTexCoord.xy - offsPix3); float4 sum = (val * val + val0 * val0 + val1 * val1 + val2 * val2 + val3 * val3 + 0.5 * (val4 * val4 + val5 * val5 + val6 * val6 + val7 * val7)) * 0.142857f; // = approx. 1.0 / 7.0 return sqrt(sum); } ///////////////////////////////////////////////////////////////////////////////