diff --git a/res/shaders/MeshletBasePass.slang b/res/shaders/MeshletBasePass.slang index 206a36c..339558c 100644 --- a/res/shaders/MeshletBasePass.slang +++ b/res/shaders/MeshletBasePass.slang @@ -29,10 +29,10 @@ void taskMain( localToView = mul(pViewParams.viewMatrix, instance.transformMatrix); float3 origin = float3(0, 0, 0); float3 corners[4] = { - screenToView(float4(100.0f, 100.0f, -1.0f, 1.0f)).xyz, - screenToView(float4(pViewParams.screenDimensions.x - 100.0f, 100.0f, -1.0f, 1.0f)).xyz, - screenToView(float4(100.0f, pViewParams.screenDimensions.y - 100.0f, -1.0f, 1.0f)).xyz, - screenToView(float4(pViewParams.screenDimensions - float2(100.0f, 100.0f), -1.0f, 1.0f)).xyz + screenToView(float4(0.0f, 0.0f, -1.0f, 1.0f)).xyz, + screenToView(float4(pViewParams.screenDimensions.x, 0.0f, -1.0f, 1.0f)).xyz, + screenToView(float4(0.0f, pViewParams.screenDimensions.y, -1.0f, 1.0f)).xyz, + screenToView(float4(pViewParams.screenDimensions, -1.0f, 1.0f)).xyz }; viewFrustum.sides[0] = computePlane(origin, corners[2], corners[0]); viewFrustum.sides[1] = computePlane(origin, corners[1], corners[3]); @@ -90,8 +90,6 @@ void meshMain( indices[p] = uint3(local_idx0, local_idx1, local_idx2); } } - - GroupMemoryBarrierWithGroupSync(); for(uint i = threadID; i < MAX_VERTICES; i+=MESH_GROUP_SIZE) { uint v = min(i, m.vertexCount - 1); diff --git a/res/shaders/lib/Scene.slang b/res/shaders/lib/Scene.slang index 3567f00..82cd316 100644 --- a/res/shaders/lib/Scene.slang +++ b/res/shaders/lib/Scene.slang @@ -2,7 +2,7 @@ import Bounding; struct MeshletDescription { - AABB bounding; + BoundingSphere bounding; uint32_t vertexCount; uint32_t primitiveCount; uint32_t vertexOffset; @@ -13,7 +13,7 @@ struct MeshletDescription struct MeshData { - AABB bounding; + BoundingSphere bounding; uint32_t numMeshlets; uint32_t meshletOffset; uint32_t firstIndex; diff --git a/src/Engine/Graphics/VertexData.cpp b/src/Engine/Graphics/VertexData.cpp index 9bd433b..b76e39e 100644 --- a/src/Engine/Graphics/VertexData.cpp +++ b/src/Engine/Graphics/VertexData.cpp @@ -164,7 +164,7 @@ void VertexData::loadMesh(MeshId id, Array loadedIndices, Array primitiveIndices.resize(primitiveOffset + (m.numPrimitives * 3)); std::memcpy(primitiveIndices.data() + primitiveOffset, m.primitiveLayout, m.numPrimitives * 3 * sizeof(uint8)); meshlets.add(MeshletDescription{ - .bounding = m.boundingBox,//.toSphere(), + .bounding = m.boundingBox.toSphere(), .vertexCount = m.numVertices, .primitiveCount = m.numPrimitives, .vertexOffset = vertexOffset, @@ -173,7 +173,7 @@ void VertexData::loadMesh(MeshId id, Array loadedIndices, Array }); } meshData[id].add(MeshData{ - .bounding = meshAABB,//.toSphere(), + .bounding = meshAABB.toSphere(), .numMeshlets = numMeshlets, .meshletOffset = meshletOffset, .indicesOffset = (uint32)meshOffsets[id], diff --git a/src/Engine/Graphics/VertexData.h b/src/Engine/Graphics/VertexData.h index 95d7c91..28898a2 100644 --- a/src/Engine/Graphics/VertexData.h +++ b/src/Engine/Graphics/VertexData.h @@ -32,7 +32,7 @@ public: }; struct MeshData { - AABB bounding; + BoundingSphere bounding; uint32 numMeshlets = 0; uint32 meshletOffset = 0; uint32 firstIndex = 0; @@ -85,7 +85,7 @@ protected: VertexData(); struct MeshletDescription { - AABB bounding; + BoundingSphere bounding; uint32_t vertexCount; uint32_t primitiveCount; uint32_t vertexOffset;