2929#include " HnTask.hpp"
3030#include " HnTypes.hpp"
3131
32- #include " ../../../Common/interface/BasicMath.hpp"
32+ #include " ../../../../DiligentCore/Common/interface/BasicMath.hpp"
33+ #include " ../../../../DiligentCore/Primitives/interface/FlagEnum.h"
3334
3435#include " pxr/imaging/hd/renderPass.h"
3536
@@ -43,16 +44,32 @@ class HnRenderPass;
4344
4445struct HnRenderRprimsTaskParams
4546{
47+ static_assert (HN_RENDER_MODE_COUNT == 3 , " Did you add a new render mode? Please update the flags!" );
48+ enum RENDER_MODE_FLAGS : Uint32
49+ {
50+ RENDER_MODE_FLAG_NONE = 0u ,
51+
52+ RENDER_MODE_FLAG_SOLID = 1u << HN_RENDER_MODE_SOLID,
53+
54+ RENDER_MODE_FLAG_MESH_EDGES = 1u << HN_RENDER_MODE_MESH_EDGES,
55+
56+ RENDER_MODE_FLAG_POINTS = 1u << HN_RENDER_MODE_POINTS,
57+
58+ RENDER_MODE_FLAG_ALL = RENDER_MODE_FLAG_SOLID | RENDER_MODE_FLAG_MESH_EDGES | RENDER_MODE_FLAG_POINTS
59+ };
60+ RENDER_MODE_FLAGS RenderModes = RENDER_MODE_FLAG_ALL;
61+
4662 constexpr bool operator ==(const HnRenderRprimsTaskParams& rhs) const
4763 {
48- return true ;
64+ return RenderModes == rhs. RenderModes ;
4965 }
5066
5167 constexpr bool operator !=(const HnRenderRprimsTaskParams& rhs) const
5268 {
5369 return !(*this == rhs);
5470 }
5571};
72+ DEFINE_FLAG_ENUM_OPERATORS (HnRenderRprimsTaskParams::RENDER_MODE_FLAGS);
5673
5774// / Renders the Rprims by executing the render pass.
5875// / The task should be executed after the HnSetupRenderingTask that prepares
@@ -79,7 +96,10 @@ class HnRenderRprimsTask final : public HnTask
7996 return m_RenderTags;
8097 }
8198
99+ virtual bool IsActive (pxr::HdRenderIndex& RenderIndex) const override final ;
100+
82101private:
102+ HnRenderRprimsTaskParams m_Params;
83103 pxr::TfTokenVector m_RenderTags;
84104 std::shared_ptr<HnRenderPass> m_RenderPass;
85105};
0 commit comments