layout(triangles, equal_spacing, ccw) in; uniform mat4 m, v, p; uniform mat4 mvp; in vec4 fct[]; out vec4 f_color; out vec4 position; out vec3 varyingNormalDirection; vec4 n4_test(vec4 x){ return vec4(normalize(x.xyz), 1); } void main(){ vec4 p = gl_TessCoord.x * gl_in[0].gl_Position + gl_TessCoord.y * gl_in[1].gl_Position + gl_TessCoord.z * gl_in[2].gl_Position; float d_inside = max(max(gl_TessCoord.x, gl_TessCoord.y), gl_TessCoord.z); p = n4_test(p); varyingNormalDirection = (m * p).xyz; gl_Position = mvp * p; position = m * p; f_color = gl_TessCoord.x * fct[0] + gl_TessCoord.y * fct[1] + gl_TessCoord.z * fct[2]; }