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;