mirror of
https://github.com/overte-org/overte.git
synced 2025-04-20 01:03:57 +02:00
Clean up for stereo
This commit is contained in:
parent
4c84ae02fa
commit
72d0693252
1 changed files with 40 additions and 37 deletions
|
@ -56,51 +56,54 @@ void main(void) {
|
|||
vec3 fragNormalES = buildNormal(side, fragUVPos, fragPositionES, deltaDepthUV);
|
||||
#endif
|
||||
|
||||
// Choose the screen-space sample radius
|
||||
float diskPixelRadius = evalDiskRadius(fragPositionES.z, sideDepthSize);
|
||||
if (isHorizonBased()) {
|
||||
diskPixelRadius = min(diskPixelRadius, SSAO_HBAO_MAX_RADIUS);
|
||||
}
|
||||
float occlusion = 1.0;
|
||||
|
||||
// Let's make noise
|
||||
float randomPatternRotationAngle = 0.0;
|
||||
|
||||
// Accumulate the obscurance for each samples
|
||||
float obscuranceSum = 0.0;
|
||||
int numSamples = int(getNumSamples());
|
||||
float invNumSamples = getInvNumSamples();
|
||||
|
||||
if (isHorizonBased()) {
|
||||
randomPatternRotationAngle = getAngleDithering(fragPixelPos);
|
||||
|
||||
for (int i = 0; i < numSamples; ++i) {
|
||||
vec3 deltaTap = getUnitTapLocation(i, 1.0, randomPatternRotationAngle, PI);
|
||||
obscuranceSum += evalVisibilityHBAO(side, fragUVPos, deltaDepthUV, deltaTap.xy, diskPixelRadius, fragPositionES, fragNormalES);
|
||||
if (fragPositionES.z > (1.0-getPosLinearDepthFar())) {
|
||||
// Choose the screen-space sample radius
|
||||
float diskPixelRadius = evalDiskRadius(fragPositionES.z, sideDepthSize);
|
||||
if (isHorizonBased()) {
|
||||
diskPixelRadius = min(diskPixelRadius, SSAO_HBAO_MAX_RADIUS);
|
||||
}
|
||||
obscuranceSum *= invNumSamples;
|
||||
|
||||
// Let's make noise
|
||||
float randomPatternRotationAngle = 0.0;
|
||||
|
||||
// Accumulate the obscurance for each samples
|
||||
float obscuranceSum = 0.0;
|
||||
int numSamples = int(getNumSamples());
|
||||
float invNumSamples = getInvNumSamples();
|
||||
|
||||
if (isHorizonBased()) {
|
||||
randomPatternRotationAngle = getAngleDithering(fragPixelPos);
|
||||
|
||||
for (int i = 0; i < numSamples; ++i) {
|
||||
vec3 deltaTap = getUnitTapLocation(i, 1.0, randomPatternRotationAngle, PI);
|
||||
obscuranceSum += evalVisibilityHBAO(side, fragUVPos, deltaDepthUV, deltaTap.xy, diskPixelRadius, fragPositionES, fragNormalES);
|
||||
}
|
||||
obscuranceSum *= invNumSamples;
|
||||
#if HBAO_USE_COS_ANGLE
|
||||
obscuranceSum = 1.0 - obscuranceSum * getObscuranceScaling();
|
||||
obscuranceSum = 1.0 - obscuranceSum * getObscuranceScaling();
|
||||
#else
|
||||
obscuranceSum = mix(1.0, obscuranceSum, getObscuranceScaling());
|
||||
obscuranceSum = mix(1.0, obscuranceSum, getObscuranceScaling());
|
||||
#endif
|
||||
} else {
|
||||
// Steps are in the depth texture resolution
|
||||
vec2 depthTexFragPixelPos = fragUVPos * sideDepthSize;
|
||||
} else {
|
||||
// Steps are in the depth texture resolution
|
||||
vec2 depthTexFragPixelPos = fragUVPos * sideDepthSize;
|
||||
|
||||
randomPatternRotationAngle = getAngleDitheringPixelPos(fragPixelPos) + getAngleDitheringSplit();
|
||||
randomPatternRotationAngle = getAngleDitheringPixelPos(fragPixelPos) + getAngleDitheringSplit();
|
||||
|
||||
for (int i = 0; i < numSamples; ++i) {
|
||||
vec3 tap = getTapLocationClampedSSAO(i, randomPatternRotationAngle, diskPixelRadius, depthTexFragPixelPos, sideDepthSize);
|
||||
vec2 tapUV = fragUVPos + tap.xy * deltaDepthUV;
|
||||
vec2 tapMipZ = fetchTap(side, tapUV, tap.z);
|
||||
vec3 tapPositionES = evalEyePositionFromZeye(side.x, tapMipZ.y, tapUV);
|
||||
obscuranceSum += float(tap.z > 0.0) * evalVisibilitySSAO(fragPositionES, fragNormalES, tapPositionES);
|
||||
for (int i = 0; i < numSamples; ++i) {
|
||||
vec3 tap = getTapLocationClampedSSAO(i, randomPatternRotationAngle, diskPixelRadius, depthTexFragPixelPos, sideDepthSize);
|
||||
vec2 tapUV = fragUVPos + tap.xy * deltaDepthUV;
|
||||
vec2 tapMipZ = fetchTap(side, tapUV, tap.z);
|
||||
vec3 tapPositionES = evalEyePositionFromZeye(side.x, tapMipZ.y, tapUV);
|
||||
obscuranceSum += float(tap.z > 0.0) * evalVisibilitySSAO(fragPositionES, fragNormalES, tapPositionES);
|
||||
}
|
||||
obscuranceSum *= invNumSamples;
|
||||
obscuranceSum = 1.0 - obscuranceSum * getObscuranceScaling();
|
||||
}
|
||||
obscuranceSum *= invNumSamples;
|
||||
obscuranceSum = 1.0 - obscuranceSum * getObscuranceScaling();
|
||||
}
|
||||
|
||||
float occlusion = clamp(obscuranceSum, 0.0, 1.0);
|
||||
|
||||
occlusion = clamp(obscuranceSum, 0.0, 1.0);
|
||||
}
|
||||
outFragColor = packOcclusionOutput(occlusion, fragPositionES.z, fragNormalES);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue