Fix precision issue in SSAO

This commit is contained in:
Vincent Lejeune 2015-01-12 20:04:39 +01:00
parent 3bcdc04279
commit b8ab68b31a

View File

@ -38,7 +38,7 @@ void main(void)
float r = radius / FragPos.z;
float phi = 3. * (x ^ y) + x * y;
float bl = 0.0;
float m = log2(r) + 6 + log2(invSamples);
float m = max(log2(r) + 6 + log2(invSamples), 0.);
float theta = 2. * 3.14 * tau * .5 * invSamples + phi;
vec2 rotations = vec2(cos(theta), sin(theta)) * screen;
@ -62,5 +62,5 @@ void main(void)
bl += max(0, dot(vi, norm) - FragPos.z * beta) / (dot(vi, vi) + epsilon);
}
AO = max(pow(1.0 - 2. * sigma * bl * invSamples, k), 0.);
}
AO = max(pow(1.0 - min(2. * sigma * bl * invSamples, 0.99), k), 0.1);
}