layout(vertices=3) out; in vec4 fcolor[]; in vec4 center[]; out vec4 cntr[]; out vec4 fct[]; void main(){ int tesslv = 2; if(distance(gl_in[gl_InvocationID].gl_Position, center[gl_InvocationID]) < 50){ tesslv = 6; } 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]; }