Bliss-Shader/shaders/lib/Shadows.glsl

26 lines
778 B
Plaintext
Raw Normal View History

2023-10-07 22:18:20 -04:00
// Emin's and Gri's combined ideas to stop peter panning and light leaking, also has little shadowacne so thats nice
// https://www.complementary.dev/reimagined
// https://github.com/gri573
void GriAndEminShadowFix(
inout vec3 WorldPos,
vec3 FlatNormal,
float VanillaAO,
float SkyLightmap
2023-10-07 22:18:20 -04:00
){
// #ifdef DISTANT_HORIZONS_SHADOWMAP
// float minimumValue = 0.3;
// #else
float minimumValue = 0.05;
// #endif
2023-10-07 22:18:20 -04:00
float DistanceOffset = max(length(WorldPos) * 0.005, minimumValue);
vec3 Bias = FlatNormal * DistanceOffset;
2023-10-07 22:18:20 -04:00
// stop lightleaking by zooming up, centered on blocks
2023-10-07 22:18:20 -04:00
vec2 scale = vec2(0.5); scale.y *= 0.5;
vec3 zoomShadow = scale.y - scale.x * fract(WorldPos + cameraPosition + Bias*scale.y);
if(SkyLightmap < 0.1) Bias = zoomShadow;
2023-10-07 22:18:20 -04:00
WorldPos += Bias;
2023-10-07 22:18:20 -04:00
}