First 'working' version of HBAO

This commit is contained in:
Olivier Prat 2018-09-11 15:30:18 +02:00
parent f12cd2e55a
commit fd9d05bdbf
2 changed files with 3 additions and 13 deletions

View file

@ -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@>

View file

@ -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);
}