DepthOfFieldParentPass.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 <Atom/RPI.Public/RenderPipeline.h>
  9. #include <Atom/RPI.Public/Scene.h>
  10. #include <Atom/RPI.Public/View.h>
  11. #include <PostProcess/PostProcessFeatureProcessor.h>
  12. #include <PostProcess/DepthOfField/DepthOfFieldSettings.h>
  13. #include <PostProcessing/DepthOfFieldParentPass.h>
  14. namespace AZ
  15. {
  16. namespace Render
  17. {
  18. RPI::Ptr<DepthOfFieldParentPass> DepthOfFieldParentPass::Create(const RPI::PassDescriptor& descriptor)
  19. {
  20. RPI::Ptr<DepthOfFieldParentPass> pass = aznew DepthOfFieldParentPass(descriptor);
  21. return pass;
  22. }
  23. DepthOfFieldParentPass::DepthOfFieldParentPass(const RPI::PassDescriptor& descriptor)
  24. : RPI::ParentPass(descriptor)
  25. { }
  26. bool DepthOfFieldParentPass::IsEnabled() const
  27. {
  28. if (!ParentPass::IsEnabled())
  29. {
  30. return false;
  31. }
  32. RPI::Scene* scene = GetScene();
  33. if (!scene)
  34. {
  35. return false;
  36. }
  37. PostProcessFeatureProcessor* fp = scene->GetFeatureProcessor<PostProcessFeatureProcessor>();
  38. AZ::RPI::ViewPtr view = GetRenderPipeline()->GetFirstView(GetPipelineViewTag());
  39. if (!fp)
  40. {
  41. return false;
  42. }
  43. PostProcessSettings* postProcessSettings = fp->GetLevelSettingsFromView(view);
  44. if (!postProcessSettings)
  45. {
  46. return false;
  47. }
  48. DepthOfFieldSettings* dofSettings = postProcessSettings->GetDepthOfFieldSettings();
  49. return (dofSettings != nullptr) && dofSettings->GetEnabled();
  50. }
  51. } // namespace Render
  52. } // namespace AZ