From 941e07685799b1c5733ce031222e2cfcebb404f1 Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Tue, 10 Jun 2025 23:11:41 +0200 Subject: [PATCH] fixed voxel winding order for real this time --- MeshShaderMixedVoxelGrid.glsl | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/MeshShaderMixedVoxelGrid.glsl b/MeshShaderMixedVoxelGrid.glsl index 6c6b240..1c3e7ae 100644 --- a/MeshShaderMixedVoxelGrid.glsl +++ b/MeshShaderMixedVoxelGrid.glsl @@ -52,15 +52,15 @@ layout(local_size_x = 16, local_size_y = 1, local_size_z = 1) in; layout(triangles, max_vertices = 128, max_primitives = 192) out; void main() { - //if (gl_LocalInvocationIndex == 0) { - //writeCounter = 0; - //} + if (gl_LocalInvocationIndex == 0) { + writeCounter = 0; + } - //barrier(); + barrier(); - //uint type = voxels.voxel[gl_GlobalInvocationID.x].type; + uint type = voxels.voxel[gl_GlobalInvocationID.x].type; - //if(type != 0) { + if(type != 0) { uint old = atomicAdd(writeCounter, 1); uint z = gl_GlobalInvocationID.x / (ubo.sizeX * ubo.sizeY); uint y = (gl_GlobalInvocationID.x % (ubo.sizeX * ubo.sizeY)) / ubo.sizeX; @@ -83,28 +83,28 @@ void main() uint oldPrimOffset = old*12; - gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 0] = uvec3(oldVertexOffset + 0, oldVertexOffset + 1, oldVertexOffset + 2); - gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 1] = uvec3(oldVertexOffset + 2, oldVertexOffset + 3, oldVertexOffset + 0); + gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 0] = uvec3(oldVertexOffset + 2, oldVertexOffset + 1, oldVertexOffset + 0); + gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 1] = uvec3(oldVertexOffset + 0, oldVertexOffset + 3, oldVertexOffset + 2); gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 2] = uvec3(oldVertexOffset + 4, oldVertexOffset + 5, oldVertexOffset + 6); gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 3] = uvec3(oldVertexOffset + 4, oldVertexOffset + 6, oldVertexOffset + 7); gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 4] = uvec3(oldVertexOffset + 0, oldVertexOffset + 1, oldVertexOffset + 5); - gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 5] = uvec3(oldVertexOffset + 0, oldVertexOffset + 4, oldVertexOffset + 5); + gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 5] = uvec3(oldVertexOffset + 5, oldVertexOffset + 4, oldVertexOffset + 0); gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 6] = uvec3(oldVertexOffset + 3, oldVertexOffset + 6, oldVertexOffset + 2); - gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 7] = uvec3(oldVertexOffset + 6, oldVertexOffset + 7, oldVertexOffset + 3); + gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 7] = uvec3(oldVertexOffset + 3, oldVertexOffset + 7, oldVertexOffset + 6); - gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 8] = uvec3(oldVertexOffset + 0, oldVertexOffset + 3, oldVertexOffset + 7); - gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 9] = uvec3(oldVertexOffset + 0, oldVertexOffset + 7, oldVertexOffset + 4); + gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 8] = uvec3(oldVertexOffset + 7, oldVertexOffset + 3, oldVertexOffset + 0); + gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 9] = uvec3(oldVertexOffset + 4, oldVertexOffset + 7, oldVertexOffset + 0); gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 10] = uvec3(oldVertexOffset + 1, oldVertexOffset + 2, oldVertexOffset + 6); gl_PrimitiveTriangleIndicesEXT[oldPrimOffset + 11] = uvec3(oldVertexOffset + 6, oldVertexOffset + 5, oldVertexOffset + 1); - //} + } - //barrier(); + barrier(); - //SetMeshOutputsEXT(writeCounter*8, writeCounter*12); + SetMeshOutputsEXT(writeCounter*8, writeCounter*12); SetMeshOutputsEXT(128, 192); }