From 5b7b13adcee1944fbea7a6452a1819cda812b683 Mon Sep 17 00:00:00 2001 From: IsseW Date: Thu, 9 Jun 2022 12:16:40 +0200 Subject: [PATCH] Add medium check to rain --- assets/voxygen/shaders/clouds-frag.glsl | 2 +- voxygen/src/scene/figure/mod.rs | 6 +++++- voxygen/src/scene/terrain.rs | 5 +++-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/assets/voxygen/shaders/clouds-frag.glsl b/assets/voxygen/shaders/clouds-frag.glsl index 6ec61eb9ee..b3412d558f 100644 --- a/assets/voxygen/shaders/clouds-frag.glsl +++ b/assets/voxygen/shaders/clouds-frag.glsl @@ -114,7 +114,7 @@ void main() { // of rain_dir this has issues with being in a place where it doesn't rain // and seeing rain. float rain = rain_density_at(cam_wpos.xy); - if (rain > 0.0) { + if (medium.x == MEDIUM_AIR && rain > 0.0) { float rain_dist = 50.0; for (int i = 0; i < 4; i ++) { float old_rain_dist = rain_dist; diff --git a/voxygen/src/scene/figure/mod.rs b/voxygen/src/scene/figure/mod.rs index f0b417949c..b7a0ec5f5e 100644 --- a/voxygen/src/scene/figure/mod.rs +++ b/voxygen/src/scene/figure/mod.rs @@ -5641,7 +5641,11 @@ impl FigureMgr { tick: u64, camera_data: CameraData, ) { - span!(_guard, "render_rain_occlusion", "FigureManager::render_rain_occlusion"); + span!( + _guard, + "render_rain_occlusion", + "FigureManager::render_rain_occlusion" + ); self.render_shadow_mapping(drawer, state, tick, camera_data, |state| { state.can_occlude_rain() }) diff --git a/voxygen/src/scene/terrain.rs b/voxygen/src/scene/terrain.rs index 4e915f5689..28a744cb4c 100644 --- a/voxygen/src/scene/terrain.rs +++ b/voxygen/src/scene/terrain.rs @@ -1316,7 +1316,6 @@ impl Terrain { return min.partial_cmple(&max).reduce_and(); }; - let (visible_light_volume, visible_psr_bounds) = if ray_direction.z < 0.0 && renderer.pipeline_modes().shadow.is_map() { @@ -1409,7 +1408,9 @@ impl Terrain { drop(guard); span!(guard, "Rain occlusion magic"); // Check if there is rain near the camera - let max_weather = scene_data.state.max_weather_near(focus_off.xy() + cam_pos.xy()); + let max_weather = scene_data + .state + .max_weather_near(focus_off.xy() + cam_pos.xy()); let (visible_occlusion_volume, visible_por_bounds) = if max_weather.rain > RAIN_THRESHOLD { let visible_bounding_box = math::Aabb:: { min: math::Vec3::from(visible_bounding_box.min - focus_off),