index buffer

This commit is contained in:
Jorijn van der Graaf 2025-04-27 02:09:42 +02:00
commit ebacb9540c
2 changed files with 10 additions and 32 deletions

View file

@ -10,28 +10,6 @@ typedef VulkanShader<"test2.spirv", "main", VK_SHADER_STAGE_FRAGMENT_BIT, 0, {}>
typedef VulkanPipeline<MeshShader, FragmentShader> Pipeline; typedef VulkanPipeline<MeshShader, FragmentShader> Pipeline;
int main() { 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(); VulkanDevice::CreateDevice();
MeshShader::CreateShader(); MeshShader::CreateShader();
FragmentShader::CreateShader(); FragmentShader::CreateShader();
@ -50,8 +28,8 @@ int main() {
mesh.verticies.value[2] = {1.0f, 1.0f, 0.0f, 1.0f}; mesh.verticies.value[2] = {1.0f, 1.0f, 0.0f, 1.0f};
mesh.indicies.value[0] = 0; mesh.indicies.value[0] = 0;
mesh.indicies.value[0] = 1; mesh.indicies.value[1] = 1;
mesh.indicies.value[0] = 2; 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, 1, &mesh.verticies.descriptor);
test.WriteDescriptor(0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 2, &mesh.indicies.descriptor); test.WriteDescriptor(0, VK_DESCRIPTOR_TYPE_STORAGE_BUFFER, 2, &mesh.indicies.descriptor);

View file

@ -40,14 +40,14 @@ const vec4[3] colors = {
void main() void main()
{ {
uint iid = gl_LocalInvocationID.x; uint iid = gl_LocalInvocationID.x;
SetMeshOutputsEXT(3, 1); SetMeshOutputsEXT(3, 1);
mat4 mvp = ubo.projection * ubo.view * ubo.model; mat4 mvp = ubo.projection * ubo.view * ubo.model;
gl_MeshVerticesEXT[0].gl_Position = mvp * vertex.pos[0]; uint triangleID = gl_LocalInvocationIndex.x * 3;
gl_MeshVerticesEXT[1].gl_Position = mvp * vertex.pos[1]; gl_MeshVerticesEXT[triangleID].gl_Position = mvp * vertex.pos[index.index[triangleID]];
gl_MeshVerticesEXT[2].gl_Position = mvp * vertex.pos[2]; gl_MeshVerticesEXT[triangleID+1].gl_Position = mvp * vertex.pos[index.index[triangleID+1]];
vertexOutput[0].color = colors[0]; gl_MeshVerticesEXT[triangleID+2].gl_Position = mvp * vertex.pos[index.index[triangleID+2]];
vertexOutput[1].color = colors[1]; vertexOutput[triangleID].color = colors[triangleID];
vertexOutput[2].color = colors[2]; vertexOutput[triangleID+1].color = colors[triangleID+1];
gl_PrimitiveTriangleIndicesEXT[gl_LocalInvocationIndex] = uvec3(0, 1, 2); vertexOutput[triangleID+2].color = colors[triangleID+2];
gl_PrimitiveTriangleIndicesEXT[gl_LocalInvocationIndex.x] = uvec3(index.index[triangleID], index.index[triangleID+1], index.index[triangleID+2]);
} }