Blur.hlsl 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  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 float4 oPos : POSITION,
  13. out float2 oTexCoord : TEXCOORD0,
  14. out float2 oScreenPos : TEXCOORD1)
  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 : COLOR0)
  25. {
  26. #ifdef BLUR3
  27. oColor = GaussianBlur(3, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, sDiffMap, iTexCoord);
  28. #endif
  29. #ifdef BLUR5
  30. oColor = GaussianBlur(5, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, sDiffMap, iTexCoord);
  31. #endif
  32. #ifdef BLUR7
  33. oColor = GaussianBlur(7, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, sDiffMap, iTexCoord);
  34. #endif
  35. #ifdef BLUR9
  36. oColor = GaussianBlur(9, cBlurDir, cBlurHInvSize * cBlurRadius, cBlurSigma, sDiffMap, iTexCoord);
  37. #endif
  38. }