DepthOfFieldMaskPass.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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. #pragma once
  9. #include <Atom/RPI.Public/Pass/FullscreenTrianglePass.h>
  10. namespace AZ
  11. {
  12. namespace Render
  13. {
  14. //! Pass used to prevent the foreground color to smear into the background blur.
  15. class DepthOfFieldMaskPass final
  16. : public RPI::FullscreenTrianglePass
  17. {
  18. AZ_RPI_PASS(DepthOfFieldMaskPass);
  19. public:
  20. AZ_RTTI(AZ::Render::DepthOfFieldMaskPass, "{37025565-2187-4841-8F17-FE90600BA884}", AZ::RPI::FullscreenTrianglePass);
  21. AZ_CLASS_ALLOCATOR(DepthOfFieldMaskPass, SystemAllocator);
  22. virtual ~DepthOfFieldMaskPass() = default;
  23. //! Creates a DepthOfFieldMaskPass
  24. static RPI::Ptr<DepthOfFieldMaskPass> Create(const RPI::PassDescriptor& descriptor);
  25. // Set pass parameter interfaces...
  26. void SetBlendFactor(const AZStd::array<float, 2>& blendFactor);
  27. void SetRadiusMinMax(float min, float max);
  28. protected:
  29. // Pass behavior overrides...
  30. void InitializeInternal() override;
  31. void FrameBeginInternal(FramePrepareParams params) override;
  32. private:
  33. DepthOfFieldMaskPass(const RPI::PassDescriptor& descriptor);
  34. // SRG binding indices...
  35. RHI::ShaderInputNameIndex m_blendFactorIndex = "m_blendFactor";
  36. RHI::ShaderInputNameIndex m_inputResolutionInverseIndex = "m_inputResolutionInverse";
  37. RHI::ShaderInputNameIndex m_radiusMinIndex = "m_radiusMin";
  38. RHI::ShaderInputNameIndex m_radiusMaxIndex = "m_radiusMax";
  39. AZStd::array<float, 2> m_blendFactor = {{0.0f, 0.0f}};
  40. AZStd::array<float, 2> m_inputResolutionInverse = {{0.0f, 0.0f}};
  41. float m_radiusMin = 0.0f;
  42. float m_radiusMax = 0.0f;
  43. // Scope producer functions...
  44. void CompileResources(const RHI::FrameGraphCompileContext& context) override;
  45. };
  46. } // namespace Render
  47. } // namespace AZ