Weiter gearbeitet
This commit is contained in:
29
blight-assets/src/main/resources/Shaders/Voxel.tsctrl
Normal file
29
blight-assets/src/main/resources/Shaders/Voxel.tsctrl
Normal file
@@ -0,0 +1,29 @@
|
||||
layout(vertices = 3) out;
|
||||
|
||||
in vec3 vWorldPos[];
|
||||
in vec3 vNormal[];
|
||||
|
||||
out vec3 tcWorldPos[];
|
||||
out vec3 tcNormal[];
|
||||
|
||||
uniform float m_TessellationLevel;
|
||||
uniform vec3 g_CameraPosition;
|
||||
|
||||
void main() {
|
||||
tcWorldPos[gl_InvocationID] = vWorldPos[gl_InvocationID];
|
||||
tcNormal[gl_InvocationID] = vNormal[gl_InvocationID];
|
||||
|
||||
if (gl_InvocationID == 0) {
|
||||
vec3 center = (vWorldPos[0] + vWorldPos[1] + vWorldPos[2]) / 3.0;
|
||||
float dist = distance(g_CameraPosition, center);
|
||||
|
||||
// Maximum subdivision close-up, falls to 1 at 64 m
|
||||
float level = mix(m_TessellationLevel, 1.0, clamp(dist / 64.0, 0.0, 1.0));
|
||||
level = max(1.0, level);
|
||||
|
||||
gl_TessLevelOuter[0] = level;
|
||||
gl_TessLevelOuter[1] = level;
|
||||
gl_TessLevelOuter[2] = level;
|
||||
gl_TessLevelInner[0] = level;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user