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