Shadow.fx 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. //////////////////////////////////////////////////////////////////////////////
  2. // ©2005 Electronic Arts Inc
  3. //
  4. // FX Shader helper for shadow map
  5. //////////////////////////////////////////////////////////////////////////////
  6. #include "Common.fxh"
  7. // ----------------------------------------------------------------------------
  8. // Transformations
  9. // ----------------------------------------------------------------------------
  10. float4x4 WorldViewProjection : WorldViewProjection;
  11. SAMPLER_2D_BEGIN( Sampler_PostProcess,
  12. string UIName = "None";
  13. )
  14. MinFilter = Point;
  15. MagFilter = Point;
  16. MipFilter = Point;
  17. AddressU = Clamp;
  18. AddressV = Clamp;
  19. SAMPLER_2D_END
  20. // ----------------------------------------------------------------------------
  21. // SHADER: WriteColor
  22. // ----------------------------------------------------------------------------
  23. float4 ColorToWrite = float4(0, 0, 0, 0);
  24. float4 VSWriteColor(float3 Position : POSITION) : POSITION
  25. {
  26. return float4(Position, 1);
  27. }
  28. // ----------------------------------------------------------------------------
  29. float4 PSWriteColor(void) : COLOR
  30. {
  31. return ColorToWrite;
  32. }
  33. // ----------------------------------------------------------------------------
  34. // SHADER: VSShadowMapPostProcess
  35. // ----------------------------------------------------------------------------
  36. struct VSOutput_ShadowMapPostProcess
  37. {
  38. float4 Position : POSITION;
  39. float2 TexCoord0 : TEXCOORD0;
  40. };
  41. // ----------------------------------------------------------------------------
  42. VSOutput_ShadowMapPostProcess VSShadowMapPostProcess(float3 Position : POSITION,
  43. float2 TexCoord0 : TEXCOORD0)
  44. {
  45. VSOutput_ShadowMapPostProcess Out;
  46. Out.Position = float4(Position, 1);
  47. Out.TexCoord0 = TexCoord0;
  48. return Out;
  49. }
  50. // ----------------------------------------------------------------------------
  51. float4 PSShadowMapPostProcess(VSOutput_ShadowMapPostProcess In) : COLOR
  52. {
  53. //return tex2D( SAMPLER(Sampler_PostProcess), In.TexCoord0).x;
  54. float4 Zero_Zero_OneOverMapSize_OneOverMapSize = float4(0, 0, 1, 1) / 1024;
  55. float surroundingCross =
  56. max(
  57. max(tex2D( SAMPLER(Sampler_PostProcess), In.TexCoord0 + Zero_Zero_OneOverMapSize_OneOverMapSize.zx).x,
  58. tex2D( SAMPLER(Sampler_PostProcess), In.TexCoord0 - Zero_Zero_OneOverMapSize_OneOverMapSize.zx).x),
  59. max(tex2D( SAMPLER(Sampler_PostProcess), In.TexCoord0 + Zero_Zero_OneOverMapSize_OneOverMapSize.yz).x,
  60. tex2D( SAMPLER(Sampler_PostProcess), In.TexCoord0 - Zero_Zero_OneOverMapSize_OneOverMapSize.yz).x));
  61. return lerp(tex2D( SAMPLER(Sampler_PostProcess), In.TexCoord0).x, surroundingCross, 0.5);
  62. }
  63. // ----------------------------------------------------------------------------
  64. // TECHNIQUE: WriteColor
  65. // ----------------------------------------------------------------------------
  66. technique _WriteColor
  67. {
  68. pass P0
  69. {
  70. VertexShader = compile VS_2_0 VSWriteColor();
  71. PixelShader = compile PS_2_0 PSWriteColor();
  72. ZEnable = false;
  73. ZWriteEnable = false;
  74. CullMode = None;
  75. AlphaBlendEnable = false;
  76. AlphaTestEnable = false;
  77. }
  78. }
  79. // ----------------------------------------------------------------------------
  80. // TECHNIQUE: _ShadowMapPostProcess
  81. // ----------------------------------------------------------------------------
  82. technique _ShadowMapPostProcess
  83. {
  84. pass P0
  85. {
  86. VertexShader = compile VS_2_0 VSShadowMapPostProcess();
  87. PixelShader = compile PS_2_0 PSShadowMapPostProcess();
  88. ZEnable = false;
  89. ZWriteEnable = false;
  90. CullMode = None;
  91. AlphaBlendEnable = false;
  92. AlphaTestEnable = false;
  93. }
  94. }