aboutsummaryrefslogtreecommitdiff
path: root/src/main/resources
diff options
context:
space:
mode:
authormakamys <makamys@outlook.com>2022-06-08 00:50:54 +0200
committermakamys <makamys@outlook.com>2022-06-08 00:50:54 +0200
commit8fddcbe0cbfd760c3d0f70864072edbb8cb09de0 (patch)
treea8f662bb59e85d45b3940ed43f9e2ff2073337a1 /src/main/resources
parent3f0baea0952b7cb3e3eebe5d3a0bd0387c91b547 (diff)
downloadNeodymium-8fddcbe0cbfd760c3d0f70864072edbb8cb09de0.tar.gz
Neodymium-8fddcbe0cbfd760c3d0f70864072edbb8cb09de0.tar.bz2
Neodymium-8fddcbe0cbfd760c3d0f70864072edbb8cb09de0.zip
Reenable fog but add option to disable it
Diffstat (limited to 'src/main/resources')
-rw-r--r--src/main/resources/shaders/chunk.frag18
-rw-r--r--src/main/resources/shaders/chunk_fog.frag40
2 files changed, 40 insertions, 18 deletions
diff --git a/src/main/resources/shaders/chunk.frag b/src/main/resources/shaders/chunk.frag
index 0f23b5f..cc03a70 100644
--- a/src/main/resources/shaders/chunk.frag
+++ b/src/main/resources/shaders/chunk.frag
@@ -21,23 +21,5 @@ void main()
vec4 rasterColor = ((texColor * colorMult) * lightyColor);
- // TODO reimplement fog in a way that's not a performance hog
- /*float s = FogStartEnd.x;
- float e = FogStartEnd.y;
-
- vec4 ndcPos;
- ndcPos.xy = ((2.0 * gl_FragCoord.xy) - (2.0 * Viewport.xy)) / (Viewport.zw) - 1;
- ndcPos.z = (2.0 * gl_FragCoord.z - gl_DepthRange.near - gl_DepthRange.far) /
- (gl_DepthRange.far - gl_DepthRange.near);
- ndcPos.w = 1.0;
-
- vec4 clipPos = ndcPos / gl_FragCoord.w;
- vec4 eyePos = ProjInv * clipPos;
-
- float z = length(eyePos);
- float f = (e - z) / (e - s);
- f = clamp(f, 0, 1);
- FragColor = mix(FogColor, rasterColor, f);*/
-
FragColor = rasterColor;
}
diff --git a/src/main/resources/shaders/chunk_fog.frag b/src/main/resources/shaders/chunk_fog.frag
new file mode 100644
index 0000000..ab188ab
--- /dev/null
+++ b/src/main/resources/shaders/chunk_fog.frag
@@ -0,0 +1,40 @@
+#version 330 core
+out vec4 FragColor;
+
+in vec2 TexCoord;
+in vec2 BTexCoord;
+in vec4 DaColor;
+in vec4 Viewport;
+in mat4 ProjInv;
+in vec4 FogColor;
+in vec2 FogStartEnd;
+
+uniform sampler2D atlas;
+uniform sampler2D lightTex;
+
+void main()
+{
+ vec4 texColor = texture(atlas, TexCoord);
+ vec4 colorMult = DaColor/256.0;
+
+ vec4 lightyColor = texture(lightTex, (BTexCoord + 8.0) / 256.0);
+
+ vec4 rasterColor = ((texColor * colorMult) * lightyColor);
+
+ float s = FogStartEnd.x;
+ float e = FogStartEnd.y;
+
+ vec4 ndcPos;
+ ndcPos.xy = ((2.0 * gl_FragCoord.xy) - (2.0 * Viewport.xy)) / (Viewport.zw) - 1;
+ ndcPos.z = (2.0 * gl_FragCoord.z - gl_DepthRange.near - gl_DepthRange.far) /
+ (gl_DepthRange.far - gl_DepthRange.near);
+ ndcPos.w = 1.0;
+
+ vec4 clipPos = ndcPos / gl_FragCoord.w;
+ vec4 eyePos = ProjInv * clipPos;
+
+ float z = length(eyePos);
+ float f = (e - z) / (e - s);
+ f = clamp(f, 0, 1);
+ FragColor = mix(FogColor, rasterColor, f);
+}