From fd9d05bdbfe9e239d59ad60a08cfd2fde44a561e Mon Sep 17 00:00:00 2001 From: Olivier Prat Date: Tue, 11 Sep 2018 15:30:18 +0200 Subject: [PATCH] First 'working' version of HBAO --- libraries/render-utils/src/ssao.slh | 9 ++------- libraries/render-utils/src/ssao_makeOcclusion.slf | 7 +------ 2 files changed, 3 insertions(+), 13 deletions(-) diff --git a/libraries/render-utils/src/ssao.slh b/libraries/render-utils/src/ssao.slh index 5c70174f8a..8e1cb27346 100644 --- a/libraries/render-utils/src/ssao.slh +++ b/libraries/render-utils/src/ssao.slh @@ -408,15 +408,10 @@ vec2 searchHorizons(ivec4 side, ivec2 centerPixelPos, vec2 imageSize, vec2 delta return horizons; } -float integrateArc(float h1, float h2) { - vec2 cosh = cos(vec2(h1, h2)); - return 2.0 - cosh.x - cosh.y; -} - float evalVisibilityHBAO(ivec4 side, ivec2 centerPixelPos, vec2 imageSize, vec2 deltaTap, float ssDiskRadius, vec3 fragPositionES, vec3 fragNormalES) { - vec2 horizonAngles = searchHorizons(side, centerPixelPos, imageSize, deltaTap, ssDiskRadius, fragPositionES, fragNormalES); - return min(1.0, integrateArc(horizonAngles.x, horizonAngles.y) * 0.5); + vec2 horizons = searchHorizons(side, centerPixelPos, imageSize, deltaTap, ssDiskRadius, fragPositionES, fragNormalES); + return (horizons.x + horizons.y) * 0.5; } <@endfunc@> diff --git a/libraries/render-utils/src/ssao_makeOcclusion.slf b/libraries/render-utils/src/ssao_makeOcclusion.slf index c5d680e0d8..89f2aadfab 100644 --- a/libraries/render-utils/src/ssao_makeOcclusion.slf +++ b/libraries/render-utils/src/ssao_makeOcclusion.slf @@ -54,7 +54,7 @@ void main(void) { // Accumulate the visibility for each samples float visibilitySum = 0.0; - int numSamples = 1; // TEMPO OP getNumSamples() + int numSamples = int(getNumSamples()); for (int i = 0; i < numSamples; ++i) { #if SSAO_USE_HORIZON_BASED vec3 deltaTap = getUnitTapLocation(i, 1.0, randomPatternRotationAngle, PI); @@ -67,11 +67,7 @@ void main(void) { #endif } -#if SSAO_USE_HORIZON_BASED - visibilitySum = 1.0 - visibilitySum * getInvNumSamples(); -#else visibilitySum = visibilitySum * getInvNumSamples(); -#endif float occlusion = clamp(1.0 - visibilitySum * getObscuranceScaling(), 0.0, 1.0); // KEEP IT for Debugging @@ -85,5 +81,4 @@ void main(void) { }*/ outFragColor = vec4(packOcclusionDepth(occlusion, CSZToDepthKey(fragPositionES.z)), 1.0); - }