summaryrefslogtreecommitdiffstats
path: root/data/shaders/chunk_quad.vert
diff options
context:
space:
mode:
authoruntodesu <kirill@untode.su>2025-12-11 15:14:26 +0500
committeruntodesu <kirill@untode.su>2025-12-11 15:14:26 +0500
commitf40d09cb8f712e87691af4912f3630d92d692779 (patch)
tree7ac3a4168ff722689372fd489c6f94d0a2546e8f /data/shaders/chunk_quad.vert
parent8bcbd2729388edc63c82d77d314b583af1447c49 (diff)
downloadvoxelius-f40d09cb8f712e87691af4912f3630d92d692779.tar.bz2
voxelius-f40d09cb8f712e87691af4912f3630d92d692779.zip
Shuffle stuff around
- Use the new and improved hierarchy I figured out when making Prospero chat - Re-add NSIS scripts, again from Prospero - Update most build and utility scripts with their most recent versions
Diffstat (limited to 'data/shaders/chunk_quad.vert')
-rw-r--r--data/shaders/chunk_quad.vert85
1 files changed, 0 insertions, 85 deletions
diff --git a/data/shaders/chunk_quad.vert b/data/shaders/chunk_quad.vert
deleted file mode 100644
index 50b343a..0000000
--- a/data/shaders/chunk_quad.vert
+++ /dev/null
@@ -1,85 +0,0 @@
-// SPDX-License-Identifier: CC-BY-SA-4.0
-#version 330 core
-#pragma variant[0] WORLD_CURVATURE
-#pragma variant[1] WORLD_FOG
-
-layout(location = 0) in vec3 vert_Position;
-layout(location = 1) in uvec2 vert_Quad;
-
-out vec3 vs_TexCoord;
-out float vs_Shade;
-
-#if WORLD_FOG
-out float vs_FogFactor;
-#endif
-
-uniform mat4x4 u_ViewProjMatrix;
-uniform vec3 u_WorldPosition;
-uniform uvec3 u_Timings;
-uniform float u_ViewDistance;
-
-void main(void)
-{
- vec3 quad_offset;
- quad_offset.x = float(0x00FFU & (vert_Quad.x >> 24U)) / 16.0;
- quad_offset.y = float(0x00FFU & (vert_Quad.x >> 16U)) / 16.0;
- quad_offset.z = float(0x00FFU & (vert_Quad.x >> 8U)) / 16.0;
-
- vec2 quad_scale;
- quad_scale.x = float((0x000FU & (vert_Quad.x >> 4U)) + 1U) / 16.0;
- quad_scale.y = float((0x000FU & (vert_Quad.x >> 0U)) + 1U) / 16.0;
-
- uint quad_facing = (0x000FU & (vert_Quad.y >> 28U));
- uint quad_toffset = (0x07FFU & (vert_Quad.y >> 17));
- uint quad_tframes = max(1U, (0x001FU & (vert_Quad.y >> 12)));
-
- gl_Position.xyz = vert_Position;
- gl_Position.x *= quad_scale.x;
- gl_Position.z *= quad_scale.y;
-
- vec3 positions[6]; // FIXME: 16
- positions[0x00U] = vec3(gl_Position.x, 1.0 - gl_Position.z, 1.0);
- positions[0x01U] = vec3(gl_Position.x, gl_Position.z, 0.0);
- positions[0x03U] = vec3(1.0, 1.0 - gl_Position.x, gl_Position.z);
- positions[0x02U] = vec3(0.0, gl_Position.x, gl_Position.z);
- positions[0x04U] = vec3(gl_Position.x, 1.0, gl_Position.z);
- positions[0x05U] = vec3(gl_Position.x, 0.0, 1.0 - gl_Position.z);
-
- vec2 texcoords[6]; // FIXME: 16
- texcoords[0x00U] = vec2(vert_Position.x, 1.0 - vert_Position.z);
- texcoords[0x01U] = vec2(1.0 - vert_Position.x, vert_Position.z);
- texcoords[0x03U] = vec2(-vert_Position.z, 1.0 - vert_Position.x);
- texcoords[0x02U] = vec2(1.0 + vert_Position.z, vert_Position.x);
- texcoords[0x04U] = vec2(1.0 - vert_Position.x, vert_Position.z);
- texcoords[0x05U] = vec2(1.0 - vert_Position.x, vert_Position.z);
-
- float shades[6]; // FIXME: 16
- shades[0x00U] = 0.8;
- shades[0x01U] = 0.8;
- shades[0x02U] = 0.6;
- shades[0x03U] = 0.6;
- shades[0x04U] = 1.0;
- shades[0x05U] = 0.4;
-
- vs_TexCoord.xy = texcoords[quad_facing];
- vs_TexCoord.z = floor(float(quad_toffset + u_Timings.z % quad_tframes) + 0.5);
- vs_Shade = shades[quad_facing];
-
- gl_Position.w = 1.0;
- gl_Position.xyz = positions[quad_facing] + quad_offset + u_WorldPosition;
- gl_Position = u_ViewProjMatrix * gl_Position;
-
-#if WORLD_CURVATURE
- gl_Position.y -= gl_Position.z * gl_Position.z / u_ViewDistance / 32.0;
- gl_Position.y -= gl_Position.x * gl_Position.x / u_ViewDistance / 32.0;
-#endif
-
-#if WORLD_FOG == 1
- // Use a simple linear fog factor
- vs_FogFactor = 1.0 - clamp((u_ViewDistance - length(gl_Position.xyz)) / (u_ViewDistance - 16.0), 0.0, 1.0);
-#elif WORLD_FOG == 2
- // Use a fancy exponential fog factor
- float fogd = 2.0 / u_ViewDistance * length(gl_Position.xyz);
- vs_FogFactor = 1.0 - clamp(exp2(fogd * fogd * -1.442695), 0.0, 1.0);
-#endif
-}