Files
Vulkan-CTS-bin/vulkan/dynamic_state/VertexFetchViewportArray.mesh
2026-05-06 23:44:13 +02:00

35 lines
961 B
Plaintext

#version 450
#extension GL_EXT_mesh_shader : enable
struct PositionColor {
vec4 position;
vec4 color;
};
layout(set=0, binding=0, std430) readonly buffer PositionColorBlock {
PositionColor posColor[];
} vtxData;
layout(push_constant, std430) uniform PushConstantBlock {
uint vertexOffset;
} pc;
layout(local_size_x=1) in;
layout(triangles) out;
layout(max_vertices=3, max_primitives=1) out;
layout(location = 0) out vec4 outColor[];
void main() {
SetMeshOutputsEXT(3u, 1u);
const uint firstVertex = uint(gl_WorkGroupID.x) + pc.vertexOffset;
for (uint i = 0u; i < 3u; ++i)
{
const uint srcIdx = firstVertex + i;
gl_MeshVerticesEXT[i].gl_Position = vtxData.posColor[srcIdx].position;
outColor[i] = vtxData.posColor[srcIdx].color;
}
gl_PrimitiveTriangleIndicesEXT[0] = uvec3(0, 1, 2);
gl_MeshPrimitivesEXT[0].gl_ViewportIndex = int(round(vtxData.posColor[firstVertex].position.z * 3.0));
}