#version 410 compatibility layout(vertices = 4) out; uniform int tess_level; in float dist[gl_MaxPatchVertices]; void main() { gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; gl_out[gl_InvocationID].gl_TexCoord[0] = gl_in[gl_InvocationID].gl_TexCoord[0]; gl_out[gl_InvocationID].gl_TexCoord[1] = gl_in[gl_InvocationID].gl_TexCoord[1]; const float min_tess_dist = 800.0; float t = clamp(1.0 - dist[0] / min_tess_dist, 0.0, 1.0); int tess = int(t * float(tess_level - 1.0)) + 1; gl_TessLevelInner[0] = tess; gl_TessLevelInner[1] = tess; gl_TessLevelOuter[0] = tess; gl_TessLevelOuter[1] = tess; gl_TessLevelOuter[2] = tess; gl_TessLevelOuter[3] = tess; }