Using global meshlet culling list

This commit is contained in:
Dynamitos
2024-05-12 19:36:32 +02:00
parent 7fc7ba56d4
commit 2762f9e729
22 changed files with 399 additions and 324 deletions
+16 -1
View File
@@ -24,7 +24,6 @@ static const uint MAX_VERTICES = 256;
static const uint MAX_PRIMITIVES = 256;
static const uint TASK_GROUP_SIZE = 128;
static const uint MESH_GROUP_SIZE = 32;
static const uint MAX_MESHLETS_PER_MESH = 512;
struct InstanceData
{
@@ -32,6 +31,14 @@ struct InstanceData
float4x4 inverseTransformMatrix;
};
struct DrawCallOffsets
{
uint32_t instanceOffset;
uint32_t cullingCounterOffset;
};
layout(push_constant)
ConstantBuffer<DrawCallOffsets> pOffsets;
struct Scene
{
StructuredBuffer<InstanceData> instances;
@@ -39,7 +46,15 @@ struct Scene
StructuredBuffer<MeshletDescription> meshletInfos;
StructuredBuffer<uint8_t> primitiveIndices;
StructuredBuffer<uint32_t> vertexIndices;
StructuredBuffer<uint32_t> cullingOffsets;
RWStructuredBuffer<uint32_t> culledMeshlets;
};
layout(set=2)
ParameterBlock<Scene> pScene;
struct MeshPayload
{
uint instanceId;
uint cullingOffset;
};