DiffuseProbeGridVisualizationComposite.azsl 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #include <scenesrg.srgi>
  9. #include <viewsrg.srgi>
  10. #include <Atom/Features/PostProcessing/FullscreenVertexUtil.azsli>
  11. #include <Atom/Features/PostProcessing/FullscreenVertexInfo.azsli>
  12. #include <Atom/Features/PostProcessing/FullscreenPixelInfo.azsli>
  13. #include <Atom/Features/PBR/LightingUtils.azsli>
  14. #include <Atom/RPI/Math.azsli>
  15. ShaderResourceGroup PassSrg : SRG_PerPass
  16. {
  17. Texture2D<float4> m_visualization;
  18. Texture2D<float> m_depth;
  19. Sampler LinearSampler
  20. {
  21. MinFilter = Linear;
  22. MagFilter = Linear;
  23. MipFilter = Linear;
  24. AddressU = Clamp;
  25. AddressV = Clamp;
  26. AddressW = Clamp;
  27. };
  28. }
  29. // Vertex Shader
  30. VSOutput MainVS(VSInput input)
  31. {
  32. VSOutput OUT;
  33. float4 posTex = GetVertexPositionAndTexCoords(input.m_vertexID);
  34. OUT.m_position = float4(posTex.x, posTex.y, 0.0, 1.0);
  35. return OUT;
  36. }
  37. // Pixel Shader
  38. PSOutput MainPS(VSOutput IN)
  39. {
  40. uint2 screenCoords = IN.m_position.xy;
  41. float depth = PassSrg::m_depth.Load(uint3(screenCoords, 0)).r;
  42. float4 visualization = PassSrg::m_visualization.Load(uint3(screenCoords, 0));
  43. if (!any(visualization))
  44. {
  45. discard;
  46. }
  47. if (depth > visualization.a)
  48. {
  49. discard;
  50. }
  51. PSOutput OUT;
  52. OUT.m_color = float4(visualization.rgb, 1.0f);
  53. return OUT;
  54. }