#version 440 layout(vertices = 3) out; layout(location = 0) in vec2 in_uv[]; layout(location = 1) in vec3 in_normal[]; layout(location = 0) out vec2 out_uv[]; layout(location = 1) out vec3 out_normal[]; layout(std140, binding = 0) uniform buf { mat4 mvp; float displacementAmount; float tessInner; float tessOuter; int useTex; }; void main() { if (gl_InvocationID == 0) { gl_TessLevelOuter[0] = tessOuter; gl_TessLevelOuter[1] = tessOuter; gl_TessLevelOuter[2] = tessOuter; gl_TessLevelInner[0] = tessInner; } gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; out_uv[gl_InvocationID] = in_uv[gl_InvocationID]; out_normal[gl_InvocationID] = in_normal[gl_InvocationID]; }