terravisor/shaders/tessellation_ctrl.glsl

33 lines
893 B
GLSL

#version 450 core
layout(vertices = 4) out;
layout(binding = 0) uniform sampler2D heightTexture;
uniform float tessellationFactor;
in VS_OUT {
vec3 position;
vec2 texCoord;
} tc_in[];
out TC_OUT {
vec3 position;
vec2 texCoord;
} tc_out[];
void main() {
// Pass through position and texture coordinates to the tessellation evaluation shader
tc_out[gl_InvocationID].position = tc_in[gl_InvocationID].position;
tc_out[gl_InvocationID].texCoord = tc_in[gl_InvocationID].texCoord;
// Set tessellation levels
if (gl_InvocationID == 0) {
gl_TessLevelOuter[0] = tessellationFactor;
gl_TessLevelOuter[1] = tessellationFactor;
gl_TessLevelOuter[2] = tessellationFactor;
gl_TessLevelOuter[3] = tessellationFactor;
gl_TessLevelInner[0] = tessellationFactor;
gl_TessLevelInner[1] = tessellationFactor;
}
}