From 1aed08f885d22fc63fecc203e6b8baecd90a4c5b Mon Sep 17 00:00:00 2001
From: Joshua Barretto <joshua.s.barretto@gmail.com>
Date: Wed, 21 Apr 2021 22:18:44 +0100
Subject: [PATCH] Made the pit of tartarus less bad

---
 assets/voxygen/shaders/lod-terrain-frag.glsl | 2 +-
 assets/voxygen/shaders/lod-terrain-vert.glsl | 5 ++++-
 2 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/assets/voxygen/shaders/lod-terrain-frag.glsl b/assets/voxygen/shaders/lod-terrain-frag.glsl
index 1fe702656c..6d8d6b2695 100644
--- a/assets/voxygen/shaders/lod-terrain-frag.glsl
+++ b/assets/voxygen/shaders/lod-terrain-frag.glsl
@@ -107,7 +107,7 @@ void main() {
     // mat4 invfoo = foo * inverse(foo * all_mat);
     // vec3 old_coord = all_mat * vec4(f_pos.xyz, 1.0);
     // vec4 new_f_pos = invfoo * (old_coord);//vec4(f_pos, 1.0);
-    vec3 f_col_raw = mix(lod_col(f_pos.xy), vec3(0), clamp(pull_down / 10, 0, 1));
+    vec3 f_col_raw = mix(lod_col(f_pos.xy), vec3(0), clamp(pull_down / 30, 0, 1));
     // tgt_color = vec4(f_col, 1.0);
     // return;
     // vec3 f_col = srgb_to_linear(vec3(1.0));
diff --git a/assets/voxygen/shaders/lod-terrain-vert.glsl b/assets/voxygen/shaders/lod-terrain-vert.glsl
index c482ad367b..5f03cf934c 100644
--- a/assets/voxygen/shaders/lod-terrain-vert.glsl
+++ b/assets/voxygen/shaders/lod-terrain-vert.glsl
@@ -49,7 +49,8 @@ void main() {
 
     // f_shadow = textureBicubic(t_horizon, pos_to_tex(f_pos.xy));
 
-    pull_down = 1.0 / pow(distance(focus_pos.xy, f_pos.xy) / (view_distance.x * 0.95), 20.0);
+    float dist = distance(focus_pos.xy, f_pos.xy);
+    pull_down = 0.2 / pow(dist / (view_distance.x * 0.9), 20.0);
     f_pos.z -= pull_down;
 
     // f_pos.z -= 100.0 * pow(1.0 + 0.01 / view_distance.x, -pow(distance(focus_pos.xy, f_pos.xy), 2.0));
@@ -98,6 +99,8 @@ void main() {
         view_mat * */
         all_mat *
         vec4(f_pos/*newRay*/, 1);
+    // Pull up the depth to avoid drawing over voxels (biased according to VD)
+    gl_Position.z += 0.1 * clamp((view_distance.x * 1.0 - dist) * 0.01, 0, 1);
     // gl_Position.z = -gl_Position.z / gl_Position.w;
     // gl_Position.z = -gl_Position.z / gl_Position.w;
     // gl_Position.z = -gl_Position.z * gl_Position.w;