From 2d7aa1aaa34704ef86d4f204be21f8ca34ca2e72 Mon Sep 17 00:00:00 2001 From: Joshua Barretto Date: Mon, 9 May 2022 16:39:31 +0100 Subject: [PATCH] Added no terrain pop experimental shader --- assets/voxygen/shaders/fluid-vert.glsl | 6 ++++-- assets/voxygen/shaders/lod-object-vert.glsl | 6 +++++- assets/voxygen/shaders/lod-terrain-frag.glsl | 2 +- assets/voxygen/shaders/terrain-vert.glsl | 6 ++++-- voxygen/src/render/mod.rs | 2 ++ 5 files changed, 16 insertions(+), 6 deletions(-) diff --git a/assets/voxygen/shaders/fluid-vert.glsl b/assets/voxygen/shaders/fluid-vert.glsl index 27c8518d0e..b078b87407 100644 --- a/assets/voxygen/shaders/fluid-vert.glsl +++ b/assets/voxygen/shaders/fluid-vert.glsl @@ -56,8 +56,10 @@ void main() { // Terrain 'pop-in' effect #ifndef EXPERIMENTAL_BAREMINIMUM - f_pos.z -= 250.0 * (1.0 - min(1.0001 - 0.02 / pow(tick.x - load_time, 10.0), 1.0)); - // f_pos.z -= min(32.0, 25.0 * pow(distance(focus_pos.xy, f_pos.xy) / view_distance.x, 20.0)); + #ifndef EXPERIMENTAL_NOTERRAINPOP + f_pos.z -= 250.0 * (1.0 - min(1.0001 - 0.02 / pow(tick.x - load_time, 10.0), 1.0)); + // f_pos.z -= min(32.0, 25.0 * pow(distance(focus_pos.xy, f_pos.xy) / view_distance.x, 20.0)); + #endif #endif float pull_down = pow(distance(focus_pos.xy, f_pos.xy) / (view_distance.x * 0.95), 20.0) * 0.7; diff --git a/assets/voxygen/shaders/lod-object-vert.glsl b/assets/voxygen/shaders/lod-object-vert.glsl index 6aa7f6aae2..21ae1e6a8f 100644 --- a/assets/voxygen/shaders/lod-object-vert.glsl +++ b/assets/voxygen/shaders/lod-object-vert.glsl @@ -37,7 +37,11 @@ void main() { model_pos = v_pos; float pull_down = 1.0 / pow(distance(focus_pos.xy, tree_pos.xy) / (view_distance.x * 0.95), 150.0); - f_pos.z -= pull_down; + #ifndef EXPERIMENTAL_NOTERRAINPOP + f_pos.z -= pull_down; + #else + f_pos.z -= step(0.1, pull_down) * 10000.0; + #endif // Hacky, very bad, 50 is ~ tree height f_norm = mix(v_norm, vec3(0, 0, 1), clamp(model_pos.z / 50, 0, 1)); diff --git a/assets/voxygen/shaders/lod-terrain-frag.glsl b/assets/voxygen/shaders/lod-terrain-frag.glsl index 2bc5654f9f..29d52cac2f 100644 --- a/assets/voxygen/shaders/lod-terrain-frag.glsl +++ b/assets/voxygen/shaders/lod-terrain-frag.glsl @@ -356,7 +356,7 @@ void main() { #ifdef EXPERIMENTAL_NOLODVOXELS f_ao = 1.0; - voxel_norm = normalize(mix(side_norm, top_norm, cam_dir.z)); + voxel_norm = normalize(mix(side_norm, top_norm, max(cam_dir.z, 0.0))); #endif // vec3 f_ao_view = max(vec3(dot(f_orig_view_dir.yz, sides.yz), dot(f_orig_view_dir.xz, sides.xz), dot(f_orig_view_dir.xy, sides.xy)), 0.0); diff --git a/assets/voxygen/shaders/terrain-vert.glsl b/assets/voxygen/shaders/terrain-vert.glsl index 2751b04d81..d13a240587 100644 --- a/assets/voxygen/shaders/terrain-vert.glsl +++ b/assets/voxygen/shaders/terrain-vert.glsl @@ -81,8 +81,10 @@ void main() { // Terrain 'pop-in' effect #ifndef EXPERIMENTAL_BAREMINIMUM - v_pos.z -= 250.0 * (1.0 - min(1.0001 - 0.02 / pow(tick.x - load_time, 10.0), 1.0)); - // f_pos.z -= min(32.0, 25.0 * pow(distance(focus_pos.xy, f_pos.xy) / view_distance.x, 20.0)); + #ifndef EXPERIMENTAL_NOTERRAINPOP + v_pos.z -= 250.0 * (1.0 - min(1.0001 - 0.02 / pow(tick.x - load_time, 10.0), 1.0)); + // f_pos.z -= min(32.0, 25.0 * pow(distance(focus_pos.xy, f_pos.xy) / view_distance.x, 20.0)); + #endif #endif #ifdef EXPERIMENTAL_CURVEDWORLD diff --git a/voxygen/src/render/mod.rs b/voxygen/src/render/mod.rs index e689d40024..81adaa28b4 100644 --- a/voxygen/src/render/mod.rs +++ b/voxygen/src/render/mod.rs @@ -465,4 +465,6 @@ pub enum ExperimentalShader { LowGlowNearCamera, /// Disable the fake voxel effect on LoD features. NoLodVoxels, + // Disable the 'pop-in' effect when loading terrain. + NoTerrainPop, }