RenderDebugSettings.cpp 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  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 <AzCore/Serialization/SerializeContext.h>
  9. #include <Atom/RPI.Public/RPIUtils.h>
  10. #include <Atom/RPI.Public/Shader/ShaderResourceGroup.h>
  11. #include <Atom/RPI.Public/Scene.h>
  12. #include <Atom/RPI.Public/View.h>
  13. #include <Debug/RenderDebugSettings.h>
  14. #include <Debug/RenderDebugFeatureProcessor.h>
  15. namespace AZ::Render
  16. {
  17. RenderDebugSettings::RenderDebugSettings([[maybe_unused]] RenderDebugFeatureProcessor* featureProcessor)
  18. {
  19. }
  20. void RenderDebugSettings::Simulate()
  21. {
  22. UpdateOptionsMask();
  23. }
  24. void RenderDebugSettings::UpdateOptionsMask()
  25. {
  26. m_optionsMask = 0;
  27. // Enabled
  28. m_optionsMask |= (u32)GetEnabled() << (u32)RenderDebugOptions::DebugEnabled;
  29. // Material Overrides
  30. m_optionsMask |= (u32)GetOverrideBaseColor() << (u32)RenderDebugOptions::OverrideBaseColor;
  31. m_optionsMask |= (u32)GetOverrideRoughness() << (u32)RenderDebugOptions::OverrideRoughness;
  32. m_optionsMask |= (u32)GetOverrideMetallic() << (u32)RenderDebugOptions::OverrideMetallic;
  33. // Normal Maps
  34. m_optionsMask |= (u32)GetEnableNormalMaps() << (u32)RenderDebugOptions::EnableNormalMaps;
  35. m_optionsMask |= (u32)GetEnableDetailNormalMaps() << (u32)RenderDebugOptions::EnableDetailNormalMaps;
  36. // Debug Light
  37. bool useDebugLight = GetRenderDebugLightingSource() == RenderDebugLightingSource::DebugLight;
  38. m_optionsMask |= (u32)useDebugLight << (u32)RenderDebugOptions::UseDebugLight;
  39. // Direct & Indirect Lighting
  40. bool diffuseLightingEnabled = GetRenderDebugLightingType() == RenderDebugLightingType::Diffuse ||
  41. GetRenderDebugLightingType() == RenderDebugLightingType::DiffuseAndSpecular;
  42. bool specularLightingEnabled = GetRenderDebugLightingType() == RenderDebugLightingType::Specular ||
  43. GetRenderDebugLightingType() == RenderDebugLightingType::DiffuseAndSpecular;
  44. bool directLightingEnabled = GetRenderDebugLightingSource() == RenderDebugLightingSource::Direct ||
  45. GetRenderDebugLightingSource() == RenderDebugLightingSource::DirectAndIndirect;
  46. bool indirectLightingEnabled = GetRenderDebugLightingSource() == RenderDebugLightingSource::Indirect ||
  47. GetRenderDebugLightingSource() == RenderDebugLightingSource::DirectAndIndirect;
  48. if (useDebugLight)
  49. {
  50. directLightingEnabled = indirectLightingEnabled = false;
  51. }
  52. if (GetRenderDebugViewMode() != RenderDebugViewMode::None)
  53. {
  54. diffuseLightingEnabled = specularLightingEnabled = directLightingEnabled = indirectLightingEnabled = false;
  55. }
  56. m_optionsMask |= (u32)diffuseLightingEnabled << (u32)RenderDebugOptions::EnableDiffuseLighting;
  57. m_optionsMask |= (u32)specularLightingEnabled << (u32)RenderDebugOptions::EnableSpecularLighting;
  58. m_optionsMask |= (u32)directLightingEnabled << (u32)RenderDebugOptions::EnableDirectLighting;
  59. m_optionsMask |= (u32)indirectLightingEnabled << (u32)RenderDebugOptions::EnableIndirectLighting;
  60. // Custom Debug Options
  61. m_optionsMask |= (u32)GetCustomDebugOption01() << (u32)RenderDebugOptions::CustomDebugOption01;
  62. m_optionsMask |= (u32)GetCustomDebugOption02() << (u32)RenderDebugOptions::CustomDebugOption02;
  63. m_optionsMask |= (u32)GetCustomDebugOption03() << (u32)RenderDebugOptions::CustomDebugOption03;
  64. m_optionsMask |= (u32)GetCustomDebugOption04() << (u32)RenderDebugOptions::CustomDebugOption04;
  65. }
  66. }