import Common; import Bisector; struct GeometryCB { uint32_t totalNumElements; uint32_t baseDepth; uint32_t totalNumVertices; }; struct DeformationCB { float4 patchSize; float4 patchRoughness; float choppiness; int attenuation; float amplification; uint32_t patchFlags; }; struct UpdateCB { float4x4 viewProjectionMatrix; float triangleSize; uint32_t maxSubdivisionDepth; float fov; float farPlaneDistance; } struct DebugStruct { int maxRequiredMemory; int usedMemory; uint memoryChange; uint twinID; }; struct ComputeParams { ConstantBuffer geometry; ConstantBuffer update; RWStructuredBuffer currentVertexBuffer; StructuredBuffer indexedBisectorBuffer; RWStructuredBuffer indirectDrawBuffer; RWStructuredBuffer heapIDBuffer; RWStructuredBuffer bisectorDataBuffer; RWStructuredBuffer classificationBuffer; RWStructuredBuffer allocateBuffer; RWStructuredBuffer indirectDispatchBuffer; RWStructuredBuffer neighboursBuffer; RWStructuredBuffer neighboursOutputBuffer; RWStructuredBuffer memoryBuffer; RWStructuredBuffer cbtBuffer; RWStructuredBuffer bitFieldBuffer; RWStructuredBuffer propagateBuffer; RWStructuredBuffer simplifyBuffer; RWStructuredBuffer validationBuffer; RWStructuredBuffer bisectorIndicesBuffer; RWStructuredBuffer visibleBisectorIndices; RWStructuredBuffer modifiedBisectorIndices; RWStructuredBuffer lebPositionBuffer; StructuredBuffer lebMatrixCache; globallycoherent RWStructuredBuffer debugBuffer; }; ParameterBlock pParams;