Blur.hlsl 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. #include "Uniforms.hlsl"
  2. #include "Transform.hlsl"
  3. #include "Samplers.hlsl"
  4. #include "ScreenPos.hlsl"
  5. #include "PostProcess.hlsl"
  6. uniform float2 cBlurDir;
  7. uniform float cBlurRadius;
  8. uniform float cBlurSigma;
  9. uniform float2 cBlurHOffsets;
  10. uniform float2 cBlurHInvSize;
  11. void VS(float4 iPos : POSITION,
  12. out float2 oTexCoord : TEXCOORD0,
  13. out float2 oScreenPos : TEXCOORD1,
  14. out float4 oPos : OUTPOSITION)
  15. {
  16. float4x3 modelMatrix = iModelMatrix;
  17. float3 worldPos = GetWorldPos(modelMatrix);
  18. oPos = GetClipPos(worldPos);
  19. oTexCoord = GetQuadTexCoord(oPos) + cBlurHOffsets;
  20. oScreenPos = GetScreenPosPreDiv(oPos);
  21. }
  22. void PS(float2 iTexCoord : TEXCOORD0,
  23. float2 iScreenPos : TEXCOORD1,
  24. out float4 oColor : OUTCOLOR0)
  25. {
  26. #ifdef BLUR3
  27. #ifndef D3D11
  28. oColor = GaussianBlur(3, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, sDiffMap, iTexCoord);
  29. #else
  30. oColor = GaussianBlur(3, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, tDiffMap, sDiffMap, iTexCoord);
  31. #endif
  32. #endif
  33. #ifdef BLUR5
  34. #ifndef D3D11
  35. oColor = GaussianBlur(5, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, sDiffMap, iTexCoord);
  36. #else
  37. oColor = GaussianBlur(5, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, tDiffMap, sDiffMap, iTexCoord);
  38. #endif
  39. #endif
  40. #ifdef BLUR7
  41. #ifndef D3D11
  42. oColor = GaussianBlur(7, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, sDiffMap, iTexCoord);
  43. #else
  44. oColor = GaussianBlur(7, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, tDiffMap, sDiffMap, iTexCoord);
  45. #endif
  46. #endif
  47. #ifdef BLUR9
  48. #ifndef D3D11
  49. oColor = GaussianBlur(9, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, sDiffMap, iTexCoord);
  50. #else
  51. oColor = GaussianBlur(9, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, tDiffMap, sDiffMap, iTexCoord);
  52. #endif
  53. #endif
  54. }