X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=ld42_outofspace;a=blobdiff_plain;f=sdr%2Ffield.tc.glsl;h=e742def39faa19c49bb9d5db0e1867946f03ac9a;hp=71d6560152205d093cbc22b20fcb545b42ca57ae;hb=79148ed519ea06cb506b512ffd2718c4b03f6f11;hpb=abb6d1780905e52dd6959211b9040de72c3306bd diff --git a/sdr/field.tc.glsl b/sdr/field.tc.glsl index 71d6560..e742def 100644 --- a/sdr/field.tc.glsl +++ b/sdr/field.tc.glsl @@ -4,17 +4,23 @@ 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]; - gl_TessLevelInner[0] = tess_level; - gl_TessLevelInner[1] = tess_level; + 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_level; - gl_TessLevelOuter[1] = tess_level; - gl_TessLevelOuter[2] = tess_level; - gl_TessLevelOuter[3] = tess_level; + gl_TessLevelOuter[0] = tess; + gl_TessLevelOuter[1] = tess; + gl_TessLevelOuter[2] = tess; + gl_TessLevelOuter[3] = tess; }