/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2006 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// struct PS_INPUT { float2 texCoord0: TEXCOORD0; float2 texCoord1: TEXCOORD1; float2 depthScr: TEXCOORD2; }; /////////////////////////////////////////////////////////////////////////////// // Pixelshader // Profile: 2x0 sampler tex0: register(s0); sampler tex1: register(s1); float4 main(PS_INPUT input): COLOR0 { float sourceTextureSize = 16.0; float sqrtNumSamples = 4.0; float epsilonX = -0.35; float epsilonY = -0.06; float2 epsilon = float2(epsilonX, epsilonY); float4 value = tex2D(tex0, input.texCoord1).xyzw; float2 coords = float2(0.0, 1.0) - abs(input.texCoord0 - ( value.xy - epsilon ) ); float2 depthScr = input.depthScr; //if (value.w != 0.0) //{ float2 newcoord = (float2(1.0, 1.0) - value.zw) + ((coords * sourceTextureSize) / sqrtNumSamples); float fragDepth = clamp(depthScr.x / depthScr.y, 0, 1); if (tex2D(tex1, newcoord).w != 0.0) { return fragDepth.x; } //else //{ // //discard; // clip(-1.0); //} //} //else //{ // //discard; // clip(-1.0); //} return fragDepth.x * tex2D(tex1, input.texCoord0).w * value.w; } ///////////////////////////////////////////////////////////////////////////////