From 364c4695a9a900374ebdfbbc1e4e67f7fdd8b7fc Mon Sep 17 00:00:00 2001 From: binary <1253152061@qq.com> Date: Mon, 25 Nov 2019 10:13:19 +0800 Subject: [PATCH] Update ssao.frag samplePos.z bias can remove banding --- data/shaders/ssao/ssao.frag | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/data/shaders/ssao/ssao.frag b/data/shaders/ssao/ssao.frag index 00ed70b0..8e3bb5b7 100644 --- a/data/shaders/ssao/ssao.frag +++ b/data/shaders/ssao/ssao.frag @@ -40,6 +40,8 @@ void main() // Calculate occlusion value float occlusion = 0.0f; + // remove banding + float bais = 0.01f; for(int i = 0; i < SSAO_KERNEL_SIZE; i++) { vec3 samplePos = TBN * uboSSAOKernel.samples[i].xyz; @@ -57,9 +59,9 @@ void main() #ifdef RANGE_CHECK // Range check float rangeCheck = smoothstep(0.0f, 1.0f, SSAO_RADIUS / abs(fragPos.z - sampleDepth)); - occlusion += (sampleDepth >= samplePos.z ? 1.0f : 0.0f) * rangeCheck; + occlusion += (sampleDepth >= samplePos.z + bais ? 1.0f : 0.0f) * rangeCheck; #else - occlusion += (sampleDepth >= samplePos.z ? 1.0f : 0.0f); + occlusion += (sampleDepth >= samplePos.z + bais ? 1.0f : 0.0f); #endif } occlusion = 1.0 - (occlusion / float(SSAO_KERNEL_SIZE));