mirror of
https://github.com/overte-org/overte.git
synced 2025-08-08 17:17:58 +02:00
First 'working' version of HBAO
This commit is contained in:
parent
f12cd2e55a
commit
fd9d05bdbf
2 changed files with 3 additions and 13 deletions
|
@ -408,15 +408,10 @@ vec2 searchHorizons(ivec4 side, ivec2 centerPixelPos, vec2 imageSize, vec2 delta
|
||||||
return horizons;
|
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,
|
float evalVisibilityHBAO(ivec4 side, ivec2 centerPixelPos, vec2 imageSize, vec2 deltaTap, float ssDiskRadius,
|
||||||
vec3 fragPositionES, vec3 fragNormalES) {
|
vec3 fragPositionES, vec3 fragNormalES) {
|
||||||
vec2 horizonAngles = searchHorizons(side, centerPixelPos, imageSize, deltaTap, ssDiskRadius, fragPositionES, fragNormalES);
|
vec2 horizons = searchHorizons(side, centerPixelPos, imageSize, deltaTap, ssDiskRadius, fragPositionES, fragNormalES);
|
||||||
return min(1.0, integrateArc(horizonAngles.x, horizonAngles.y) * 0.5);
|
return (horizons.x + horizons.y) * 0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
<@endfunc@>
|
<@endfunc@>
|
||||||
|
|
|
@ -54,7 +54,7 @@ void main(void) {
|
||||||
|
|
||||||
// Accumulate the visibility for each samples
|
// Accumulate the visibility for each samples
|
||||||
float visibilitySum = 0.0;
|
float visibilitySum = 0.0;
|
||||||
int numSamples = 1; // TEMPO OP getNumSamples()
|
int numSamples = int(getNumSamples());
|
||||||
for (int i = 0; i < numSamples; ++i) {
|
for (int i = 0; i < numSamples; ++i) {
|
||||||
#if SSAO_USE_HORIZON_BASED
|
#if SSAO_USE_HORIZON_BASED
|
||||||
vec3 deltaTap = getUnitTapLocation(i, 1.0, randomPatternRotationAngle, PI);
|
vec3 deltaTap = getUnitTapLocation(i, 1.0, randomPatternRotationAngle, PI);
|
||||||
|
@ -67,11 +67,7 @@ void main(void) {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#if SSAO_USE_HORIZON_BASED
|
|
||||||
visibilitySum = 1.0 - visibilitySum * getInvNumSamples();
|
|
||||||
#else
|
|
||||||
visibilitySum = visibilitySum * getInvNumSamples();
|
visibilitySum = visibilitySum * getInvNumSamples();
|
||||||
#endif
|
|
||||||
float occlusion = clamp(1.0 - visibilitySum * getObscuranceScaling(), 0.0, 1.0);
|
float occlusion = clamp(1.0 - visibilitySum * getObscuranceScaling(), 0.0, 1.0);
|
||||||
|
|
||||||
// KEEP IT for Debugging
|
// KEEP IT for Debugging
|
||||||
|
@ -85,5 +81,4 @@ void main(void) {
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
outFragColor = vec4(packOcclusionDepth(occlusion, CSZToDepthKey(fragPositionES.z)), 1.0);
|
outFragColor = vec4(packOcclusionDepth(occlusion, CSZToDepthKey(fragPositionES.z)), 1.0);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue