terravisor/shaders/tessellation_ctrl.glsl

44 lines
1.0 KiB
Plaintext
Raw Normal View History

2024-08-15 13:53:52 -04:00
#version 450 core
2024-08-15 13:53:52 -04:00
layout(vertices = 4) out;
2024-08-25 23:32:58 -04:00
layout(binding = 0) uniform sampler2D heightTexture;
uniform float tessellationFactor;
layout(std140, binding = 4) uniform GeoUniforms
{
mat4 PV;
mat4 M;
float minTessellation;
float maxTessellation;
float displacementScale;
int gridDensity;
};
2024-08-15 13:53:52 -04:00
in VS_OUT {
vec3 position;
vec2 texCoord;
} tc_in[];
2024-08-15 00:56:29 -04:00
2024-08-15 13:53:52 -04:00
out TC_OUT {
vec3 position;
vec2 texCoord;
} tc_out[];
2024-08-15 00:56:29 -04:00
2024-08-15 13:53:52 -04:00
void main() {
2024-08-25 23:32:58 -04:00
// 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;
2024-08-15 13:53:52 -04:00
// Set tessellation levels
if (gl_InvocationID == 0) {
2024-08-25 23:32:58 -04:00
gl_TessLevelOuter[0] = maxTessellation;
gl_TessLevelOuter[1] = maxTessellation;
gl_TessLevelOuter[2] = maxTessellation;
gl_TessLevelOuter[3] = maxTessellation;
2024-08-17 19:10:15 -04:00
2024-08-25 23:32:58 -04:00
gl_TessLevelInner[0] = maxTessellation;
gl_TessLevelInner[1] = maxTessellation;
}
2024-08-15 13:53:52 -04:00
}