BloomDownsamplePass.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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/ComputePass.h>
  10. #include <Atom/Feature/PostProcess/Bloom/BloomConstants.h>
  11. namespace AZ
  12. {
  13. namespace Render
  14. {
  15. class ShaderResourceGroup;
  16. class BloomDownsamplePass
  17. : public RPI::ComputePass
  18. {
  19. AZ_RPI_PASS(BloomDownsamplePass);
  20. public:
  21. AZ_RTTI(BloomDownsamplePass, "{D1CA5F45-70DB-4130-B5FA-147EFB010B1F}", RenderPass);
  22. AZ_CLASS_ALLOCATOR(BloomDownsamplePass, SystemAllocator);
  23. virtual ~BloomDownsamplePass() = default;
  24. //! Creates a BloomDownsamplePass
  25. static RPI::Ptr<BloomDownsamplePass> Create(const RPI::PassDescriptor& descriptor);
  26. protected:
  27. BloomDownsamplePass(const RPI::PassDescriptor& descriptor);
  28. // Pass Behaviour Overrides...
  29. void BuildInternal() override;
  30. void FrameBeginInternal(FramePrepareParams params) override;
  31. void BuildOutAttachmentBinding();
  32. AZ::Vector4 CalThresholdConstants();
  33. // output texture vertical dimension required by compute shader
  34. AZ::RHI::ShaderInputNameIndex m_sourceImageTexelSizeInputIndex = "m_sourceImageTexelSize";
  35. AZ::RHI::ShaderInputNameIndex m_thresholdConstantsInputIndex = "m_thresholdConstants";
  36. float m_threshold = AZ::Render::Bloom::DefaultThreshold;
  37. float m_knee = AZ::Render::Bloom::DefaultKnee;
  38. bool m_srgNeedsUpdate = true;
  39. };
  40. } // namespace RPI
  41. } // namespace AZ