Dbg.h 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // Copyright (C) 2009-2021, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #pragma once
  6. #include <AnKi/Renderer/RendererObject.h>
  7. #include <AnKi/Gr.h>
  8. #include <AnKi/Util/Enum.h>
  9. #include <AnKi/Renderer/RenderQueue.h>
  10. namespace anki {
  11. /// @addtogroup renderer
  12. /// @{
  13. /// Debugging stage
  14. class Dbg : public RendererObject
  15. {
  16. public:
  17. Dbg(Renderer* r);
  18. ~Dbg();
  19. ANKI_USE_RESULT Error init(const ConfigSet& initializer);
  20. /// Populate the rendergraph.
  21. void populateRenderGraph(RenderingContext& ctx);
  22. RenderTargetHandle getRt() const
  23. {
  24. return m_runCtx.m_rt;
  25. }
  26. Bool getEnabled() const
  27. {
  28. return m_enabled;
  29. }
  30. void setEnabled(Bool e)
  31. {
  32. m_enabled = e;
  33. }
  34. Bool getDepthTestEnabled() const
  35. {
  36. return m_debugDrawFlags.get(RenderQueueDebugDrawFlag::DEPTH_TEST_ON);
  37. }
  38. void setDepthTestEnabled(Bool enable)
  39. {
  40. m_debugDrawFlags.set(RenderQueueDebugDrawFlag::DEPTH_TEST_ON, enable);
  41. }
  42. void switchDepthTestEnabled()
  43. {
  44. m_debugDrawFlags.flip(RenderQueueDebugDrawFlag::DEPTH_TEST_ON);
  45. }
  46. Bool getDitheredDepthTestEnabled() const
  47. {
  48. return m_debugDrawFlags.get(RenderQueueDebugDrawFlag::DITHERED_DEPTH_TEST_ON);
  49. }
  50. void setDitheredDepthTestEnabled(Bool enable)
  51. {
  52. m_debugDrawFlags.set(RenderQueueDebugDrawFlag::DITHERED_DEPTH_TEST_ON, enable);
  53. }
  54. void switchDitheredDepthTestEnabled()
  55. {
  56. m_debugDrawFlags.flip(RenderQueueDebugDrawFlag::DITHERED_DEPTH_TEST_ON);
  57. }
  58. private:
  59. Bool m_enabled = false;
  60. Bool m_initialized = false; ///< Lazily initialize.
  61. RenderTargetDescription m_rtDescr;
  62. FramebufferDescription m_fbDescr;
  63. BitSet<U(RenderQueueDebugDrawFlag::COUNT), U32> m_debugDrawFlags = {false};
  64. class
  65. {
  66. public:
  67. RenderTargetHandle m_rt;
  68. } m_runCtx;
  69. ANKI_USE_RESULT Error lazyInit();
  70. void run(RenderPassWorkContext& rgraphCtx, const RenderingContext& ctx);
  71. };
  72. /// @}
  73. } // end namespace anki