forked from LeenkxTeam/LNXSDK
revert 2998a5585e
revert Update leenkx/Shaders/ssao_pass/ssao_pass.frag.glsl
This commit is contained in:
@ -45,77 +45,12 @@ void main() {
|
|||||||
|
|
||||||
fragColor = 0;
|
fragColor = 0;
|
||||||
const int samples = 8;
|
const int samples = 8;
|
||||||
const float samplesInv = PI2 * (1.0 / 8.0);
|
const float samplesInv = PI2 * (1.0 / samples);
|
||||||
|
for (int i = 0; i < samples; ++i) {
|
||||||
// Manually unrolled sampling loop for better performance on older hardware
|
float theta = samplesInv * (i + 0.5) + phi;
|
||||||
// Sample 0
|
|
||||||
{
|
|
||||||
float theta = samplesInv * (0 + 0.5) + phi;
|
|
||||||
vec2 k = vec2(cos(theta), sin(theta)) / currentDistanceA;
|
|
||||||
depth = textureLod(gbufferD, texCoord + k, 0.0).r * 2.0 - 1.0;
|
|
||||||
vec3 pos = getPos2NoEye(eye, invVP, depth, texCoord + k) - currentPos;
|
|
||||||
fragColor += max(0, dot(pos, n) - currentDistanceB) / (dot(pos, pos) + 0.015);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sample 1
|
|
||||||
{
|
|
||||||
float theta = samplesInv * (1 + 0.5) + phi;
|
|
||||||
vec2 k = vec2(cos(theta), sin(theta)) / currentDistanceA;
|
|
||||||
depth = textureLod(gbufferD, texCoord + k, 0.0).r * 2.0 - 1.0;
|
|
||||||
vec3 pos = getPos2NoEye(eye, invVP, depth, texCoord + k) - currentPos;
|
|
||||||
fragColor += max(0, dot(pos, n) - currentDistanceB) / (dot(pos, pos) + 0.015);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sample 2
|
|
||||||
{
|
|
||||||
float theta = samplesInv * (2 + 0.5) + phi;
|
|
||||||
vec2 k = vec2(cos(theta), sin(theta)) / currentDistanceA;
|
|
||||||
depth = textureLod(gbufferD, texCoord + k, 0.0).r * 2.0 - 1.0;
|
|
||||||
vec3 pos = getPos2NoEye(eye, invVP, depth, texCoord + k) - currentPos;
|
|
||||||
fragColor += max(0, dot(pos, n) - currentDistanceB) / (dot(pos, pos) + 0.015);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sample 3
|
|
||||||
{
|
|
||||||
float theta = samplesInv * (3 + 0.5) + phi;
|
|
||||||
vec2 k = vec2(cos(theta), sin(theta)) / currentDistanceA;
|
|
||||||
depth = textureLod(gbufferD, texCoord + k, 0.0).r * 2.0 - 1.0;
|
|
||||||
vec3 pos = getPos2NoEye(eye, invVP, depth, texCoord + k) - currentPos;
|
|
||||||
fragColor += max(0, dot(pos, n) - currentDistanceB) / (dot(pos, pos) + 0.015);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sample 4
|
|
||||||
{
|
|
||||||
float theta = samplesInv * (4 + 0.5) + phi;
|
|
||||||
vec2 k = vec2(cos(theta), sin(theta)) / currentDistanceA;
|
|
||||||
depth = textureLod(gbufferD, texCoord + k, 0.0).r * 2.0 - 1.0;
|
|
||||||
vec3 pos = getPos2NoEye(eye, invVP, depth, texCoord + k) - currentPos;
|
|
||||||
fragColor += max(0, dot(pos, n) - currentDistanceB) / (dot(pos, pos) + 0.015);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sample 5
|
|
||||||
{
|
|
||||||
float theta = samplesInv * (5 + 0.5) + phi;
|
|
||||||
vec2 k = vec2(cos(theta), sin(theta)) / currentDistanceA;
|
|
||||||
depth = textureLod(gbufferD, texCoord + k, 0.0).r * 2.0 - 1.0;
|
|
||||||
vec3 pos = getPos2NoEye(eye, invVP, depth, texCoord + k) - currentPos;
|
|
||||||
fragColor += max(0, dot(pos, n) - currentDistanceB) / (dot(pos, pos) + 0.015);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sample 6
|
|
||||||
{
|
|
||||||
float theta = samplesInv * (6 + 0.5) + phi;
|
|
||||||
vec2 k = vec2(cos(theta), sin(theta)) / currentDistanceA;
|
|
||||||
depth = textureLod(gbufferD, texCoord + k, 0.0).r * 2.0 - 1.0;
|
|
||||||
vec3 pos = getPos2NoEye(eye, invVP, depth, texCoord + k) - currentPos;
|
|
||||||
fragColor += max(0, dot(pos, n) - currentDistanceB) / (dot(pos, pos) + 0.015);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Sample 7
|
|
||||||
{
|
|
||||||
float theta = samplesInv * (7 + 0.5) + phi;
|
|
||||||
vec2 k = vec2(cos(theta), sin(theta)) / currentDistanceA;
|
vec2 k = vec2(cos(theta), sin(theta)) / currentDistanceA;
|
||||||
depth = textureLod(gbufferD, texCoord + k, 0.0).r * 2.0 - 1.0;
|
depth = textureLod(gbufferD, texCoord + k, 0.0).r * 2.0 - 1.0;
|
||||||
|
// vec3 pos = getPosNoEye(eyeLook, vray, depth, cameraProj) - currentPos;
|
||||||
vec3 pos = getPos2NoEye(eye, invVP, depth, texCoord + k) - currentPos;
|
vec3 pos = getPos2NoEye(eye, invVP, depth, texCoord + k) - currentPos;
|
||||||
fragColor += max(0, dot(pos, n) - currentDistanceB) / (dot(pos, pos) + 0.015);
|
fragColor += max(0, dot(pos, n) - currentDistanceB) / (dot(pos, pos) + 0.015);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user