From ebacb9540c9f35b16e645670ce2965041b91bf70 Mon Sep 17 00:00:00 2001 From: Jorijn van der Graaf Date: Sun, 27 Apr 2025 02:09:42 +0200 Subject: [PATCH] index buffer --- main.cpp | 26 ++------------------------ test.mesh | 16 ++++++++-------- 2 files changed, 10 insertions(+), 32 deletions(-) diff --git a/main.cpp b/main.cpp index 2fbdfbe..ce07ec2 100644 --- a/main.cpp +++ b/main.cpp @@ -10,28 +10,6 @@ typedef VulkanShader<"test2.spirv", "main", VK_SHADER_STAGE_FRAGMENT_BIT, 0, {}> typedef VulkanPipeline Pipeline; int main() { - // WindowWaylandWayland window("test", 128, 128); - // UiElement test( - // 0.5, //anchorX - // 0.5, //anchorY - // 2, //bufferWidth - // 1, //bufferHeight - // std::uint32_t(30), //absoluteSizeX - // std::uint32_t(30), //absoluteSizeY - // 0.5, //anchorOffsetX - // 0.5, //anchorOffsetY - // 0, //z - // false //ignoreScaling - // ); - // window.scale = 1; - // test.buffer = {{255, 0, 0 ,255}, {0, 255, 0 ,255}}; - // window.elements.AddComponent(&test); - // window.Start(); - // while(true) { - - // } - - //WriteDescriptor(0, VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER, 0, &uniformBuffer.descriptor); VulkanDevice::CreateDevice(); MeshShader::CreateShader(); FragmentShader::CreateShader(); @@ -50,8 +28,8 @@ int main() { mesh.verticies.value[2] = {1.0f, 1.0f, 0.0f, 1.0f}; mesh.indicies.value[0] = 0; - mesh.indicies.value[0] = 1; - mesh.indicies.value[0] = 2; + mesh.indicies.value[1] = 1; + mesh.indicies.value[2] = 2; test.WriteDescriptor(0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 1, &mesh.verticies.descriptor); test.WriteDescriptor(0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 2, &mesh.indicies.descriptor); diff --git a/test.mesh b/test.mesh index 3f7de2d..52d99ee 100644 --- a/test.mesh +++ b/test.mesh @@ -40,14 +40,14 @@ const vec4[3] colors = { void main() { uint iid = gl_LocalInvocationID.x; - SetMeshOutputsEXT(3, 1); mat4 mvp = ubo.projection * ubo.view * ubo.model; - gl_MeshVerticesEXT[0].gl_Position = mvp * vertex.pos[0]; - gl_MeshVerticesEXT[1].gl_Position = mvp * vertex.pos[1]; - gl_MeshVerticesEXT[2].gl_Position = mvp * vertex.pos[2]; - vertexOutput[0].color = colors[0]; - vertexOutput[1].color = colors[1]; - vertexOutput[2].color = colors[2]; - gl_PrimitiveTriangleIndicesEXT[gl_LocalInvocationIndex] = uvec3(0, 1, 2); + uint triangleID = gl_LocalInvocationIndex.x * 3; + gl_MeshVerticesEXT[triangleID].gl_Position = mvp * vertex.pos[index.index[triangleID]]; + gl_MeshVerticesEXT[triangleID+1].gl_Position = mvp * vertex.pos[index.index[triangleID+1]]; + gl_MeshVerticesEXT[triangleID+2].gl_Position = mvp * vertex.pos[index.index[triangleID+2]]; + vertexOutput[triangleID].color = colors[triangleID]; + vertexOutput[triangleID+1].color = colors[triangleID+1]; + vertexOutput[triangleID+2].color = colors[triangleID+2]; + gl_PrimitiveTriangleIndicesEXT[gl_LocalInvocationIndex.x] = uvec3(index.index[triangleID], index.index[triangleID+1], index.index[triangleID+2]); }