#version 460 layout(quads) in; uniform mat4 mvp; out vec2 f_texcoord; //quad interpol vec4 interpolate(in vec4 v0, in vec4 v1, in vec4 v2, in vec4 v3) { vec4 a = mix(v0, v1, gl_TessCoord.x); vec4 b = mix(v3, v2, gl_TessCoord.x); return mix(a, b, gl_TessCoord.y); } vec4 n4_test(vec4 p){ vec3 offset = p.xyz; return vec4(0.5 * (normalize(offset) + p.xyz), 1); } void main(){ vec4 pre_normalize_position = interpolate( gl_in[0].gl_Position, gl_in[1].gl_Position, gl_in[2].gl_Position, gl_in[3].gl_Position); gl_Position = mvp * pre_normalize_position; f_texcoord = g_texcoord }