#version 430 layout (vertices = 3) out; uniform int R; struct TriData { vec2 cornerTexCoords[3]; vec2 edgeTexCoords[3]; uint cPtr; }; layout(std430, binding = 0) buffer triData { TriData tris[]; }; out TCS_OUT { vec2 pos; } vertex[]; patch out uint triId; void main(void) { int triIdx = gl_PrimitiveID; int vIdx = gl_InvocationID; TriData tri = tris[triIdx]; vertex[gl_InvocationID].pos = tri.cornerTexCoords[gl_InvocationID]; triId = triIdx; gl_TessLevelOuter[0] = R; gl_TessLevelOuter[1] = R; gl_TessLevelOuter[2] = R; gl_TessLevelInner[0] = R; }