From 44f7051a949b6ba32e8babd5870166ebcb1d20ac Mon Sep 17 00:00:00 2001 From: MihailRis Date: Mon, 12 May 2025 07:04:08 +0300 Subject: [PATCH] fix a_distance --- res/shaders/entity.glslv | 5 +++-- res/shaders/main.glslv | 5 +++-- src/graphics/render/WorldRenderer.cpp | 2 +- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/res/shaders/entity.glslv b/res/shaders/entity.glslv index 607c4721..ee5b9538 100644 --- a/res/shaders/entity.glslv +++ b/res/shaders/entity.glslv @@ -48,8 +48,9 @@ void main() { a_color.rgb = max(a_color.rgb, skyLightColor.rgb*v_light.a) * v_color; a_color.a = u_opacity; - a_distance = length(u_view * u_model * vec4(pos3d * FOG_POS_SCALE, 0.0)); - a_fog = calc_fog(a_distance / 256.0); + mat4 viewmodel = u_view * u_model; + a_distance = length(viewmodel * vec4(pos3d, 0.0)); + a_fog = calc_fog(length(viewmodel * vec4(pos3d * FOG_POS_SCALE, 0.0)) / 256.0); vec4 viewmodelpos = u_view * a_modelpos; a_position = viewmodelpos.xyz; diff --git a/res/shaders/main.glslv b/res/shaders/main.glslv index cd0fa79c..fa28b8e3 100644 --- a/res/shaders/main.glslv +++ b/res/shaders/main.glslv @@ -47,8 +47,9 @@ void main() { vec3 skyLightColor = pick_sky_color(u_skybox); a_skyLight = skyLightColor.rgb*v_light.a; - a_distance = length(u_view * u_model * vec4(pos3d * FOG_POS_SCALE, 0.0)); - a_fog = calc_fog(a_distance / 256.0); + mat4 viewmodel = u_view * u_model; + a_distance = length(viewmodel * vec4(pos3d, 0.0)); + a_fog = calc_fog(length(viewmodel * vec4(pos3d * FOG_POS_SCALE, 0.0)) / 256.0); vec4 viewmodelpos = u_view * a_modelpos; a_position = viewmodelpos.xyz; diff --git a/src/graphics/render/WorldRenderer.cpp b/src/graphics/render/WorldRenderer.cpp index 6b94309b..90895c46 100644 --- a/src/graphics/render/WorldRenderer.cpp +++ b/src/graphics/render/WorldRenderer.cpp @@ -358,7 +358,7 @@ void WorldRenderer::generateShadowsMap( const auto& settings = engine.getSettings(); int resolution = shadowMap.getResolution(); - float shadowMapScale = 0.1f / (1 << glm::max(0L, settings.graphics.shadowsQuality.get())) * scale; + float shadowMapScale = 0.2f / (1 << glm::max(0L, settings.graphics.shadowsQuality.get())) * scale; float shadowMapSize = resolution * shadowMapScale; glm::vec3 basePos = glm::floor(camera.position / 500.0f) * 500.0f;