layout(vertices=3) out; in vec4 fcolor[]; in vec4 center[]; out vec4 cntr[]; out vec4 fct[]; uniform mat4 mvp; void main(){ int tesslv = 0; if((mvp * center[gl_InvocationID]).z < 5){ tesslv = 3; } gl_TessLevelOuter[0] = tesslv; gl_TessLevelOuter[1] = tesslv; gl_TessLevelOuter[2] = tesslv; gl_TessLevelInner[0] = tesslv; gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; // Possible to use synchronization fct[gl_InvocationID] = fcolor[gl_InvocationID]; cntr[gl_InvocationID] = center[gl_InvocationID]; }