#version 450 core layout(vertices = 4) out; in VS_OUT { vec3 position; vec2 texCoord; } tc_in[]; out TC_OUT { vec3 position; vec2 texCoord; } tc_out[]; uniform float tessellationFactor; void main() { // Pass through position and texture coordinates to the tessellation evaluation shader tc_out[gl_InvocationID].position = tc_in[gl_InvocationID].position; tc_out[gl_InvocationID].texCoord = tc_in[gl_InvocationID].texCoord; // Set tessellation levels if (gl_InvocationID == 0) { gl_TessLevelOuter[0] = tessellationFactor; // Level of tessellation along one edge gl_TessLevelOuter[1] = tessellationFactor; // Level of tessellation along another edge gl_TessLevelOuter[2] = tessellationFactor; // Level of tessellation along the other edge gl_TessLevelOuter[3] = tessellationFactor; // Level of tessellation along the other edge gl_TessLevelInner[0] = tessellationFactor; // Level of tessellation for the inner part gl_TessLevelInner[1] = tessellationFactor; // Level of tessellation for the inner part } }