25 const Tempest::RenderPipeline*
pMain =
nullptr;
26 const Tempest::RenderPipeline*
pShadow =
nullptr;
27 const Tempest::RenderPipeline*
pVsm =
nullptr;
28 const Tempest::RenderPipeline*
pHiZ =
nullptr;
52 void commit(Tempest::Encoder<Tempest::CommandBuffer>& cmd);
54 void addClusters(uint16_t cmdId, uint32_t meshletCount);
58 void visibilityPass(Tempest::Encoder<Tempest::CommandBuffer>& cmd,
int pass);
59 void visibilityVsm(Tempest::Encoder<Tempest::CommandBuffer>& cmd);
61 void drawHiZ(Tempest::Encoder<Tempest::CommandBuffer>& cmd);
64 void drawVsm(Tempest::Encoder<Tempest::CommandBuffer>& cmd);
67 enum TaskLinkpackage : uint8_t {
80 enum UboLinkpackage : uint8_t {
97 L_VsmPages = L_Shadow0,
102 uint32_t vertexCount = 0;
103 uint32_t instanceCount = 0;
104 uint32_t firstVertex = 0;
105 uint32_t firstInstance = 0;
106 uint32_t writeOffset = 0;
111 Tempest::StorageBuffer visClusters, indirectCmd;
112 Tempest::StorageBuffer vsmClusters;
117 void setBindings(Tempest::Encoder<Tempest::CommandBuffer>& cmd,
const DrawCmd& cx,
SceneGlobals::VisCamera viewId);
123 size_t maxPayload = 0;
125 std::vector<DrawCmd> cmd;
126 std::vector<DrawCmd*> ord;
127 bool cmdDurtyBit =
false;
130 const bool vsmSupported;
131 Tempest::StorageBuffer vsmIndirectCmd;