34 lines
854 B
Plaintext
34 lines
854 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);
|
|
}
|