From 60e807cfce4eb903bf68a95edfd701c7aa765afd Mon Sep 17 00:00:00 2001 From: Xonk Date: Thu, 20 Jun 2024 14:59:02 -0400 Subject: [PATCH] tweak shadow bias to handle low resolutions better --- shaders/lang/en_us.lang | 3 ++- shaders/lib/Shadows.glsl | 14 +++++++------- shaders/lib/settings.glsl | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/shaders/lang/en_us.lang b/shaders/lang/en_us.lang index c53192b..19dc327 100644 --- a/shaders/lang/en_us.lang +++ b/shaders/lang/en_us.lang @@ -1,4 +1,5 @@ -option.SHADER_VERSION_LABEL = Bliss In-Dev Commit Number +option.SHADER_VERSION_LABEL = Bliss In-Dev Version + prefix.SHADER_VERSION_LABEL = COMMIT # # if you're here to translate, this is a joke, these don't do what they say profile.QUALITY=Quality diff --git a/shaders/lib/Shadows.glsl b/shaders/lib/Shadows.glsl index ec6f0ec..6748ce0 100644 --- a/shaders/lib/Shadows.glsl +++ b/shaders/lib/Shadows.glsl @@ -7,15 +7,15 @@ void GriAndEminShadowFix( float VanillaAO, float SkyLightmap ){ - // #ifdef DISTANT_HORIZONS_SHADOWMAP - // float minimumValue = 0.3; - // #else - float minimumValue = 0.05; - // #endif - float DistanceOffset = max(length(WorldPos) * 0.005, minimumValue); + float MinimumValue = 0.05; - vec3 Bias = FlatNormal * DistanceOffset; + // give a tiny boost to the distance mulitplier when shadowmap resolution is below 2048.0 + float ResMultiplier = 1.0 + (shadowDistance/8.0)*(1.0 - min(shadowMapResolution,2048.0)/2048.0)*0.3; + + float DistanceMultiplier = max(1.0 - max(1.0 - length(WorldPos) / shadowDistance, 0.0), MinimumValue) * ResMultiplier; + + vec3 Bias = FlatNormal * DistanceMultiplier; // stop lightleaking by zooming up, centered on blocks vec2 scale = vec2(0.5); scale.y *= 0.5; diff --git a/shaders/lib/settings.glsl b/shaders/lib/settings.glsl index a121fae..de2823a 100644 --- a/shaders/lib/settings.glsl +++ b/shaders/lib/settings.glsl @@ -1,4 +1,4 @@ -#define SHADER_VERSION_LABEL 439 // [439] +#define SHADER_VERSION_LABEL 458 // [439] #define saturate(x) clamp(x,0.0,1.0)