layout(vertices=3) out; in vec4 fca[]; out vec4 fct[]; uniform mat4 mvp; void main(){ int tesslv = 1; if((mvp * gl_in[gl_InvocationID].gl_Position).z < 10){ tesslv = 7; } 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] = fca[gl_InvocationID]; }