Merge pull request #75368 from MightiestGoat/fix-limit-interpolation-R0

Fix the limit for interpolation of R0 with respect to metallic and the calculation of the cos theata in the Fresnel Shlick term in SSR
This commit is contained in:
Yuri Sizov 2023-04-07 12:40:33 +02:00 committed by GitHub
commit cbb2e17369
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 2 additions and 3 deletions

View File

@ -263,9 +263,8 @@ void main() {
// Schlick term. // Schlick term.
float metallic = texelFetch(source_metallic, ssC << 1, 0).w; float metallic = texelFetch(source_metallic, ssC << 1, 0).w;
float f0 = mix(0.04, 1.0, metallic); // Assume a "specular" amount of 0.5 float f0 = mix(0.04, 0.37, metallic); // The default value of R0 is 0.04 and the maximum value is considered to be Germanium with R0 value of 0.37
normal.y = -normal.y; float m = clamp(1.0 - dot(normal, -view_dir), 0.0, 1.0);
float m = clamp(1.0 - dot(normalize(normal), -view_dir), 0.0, 1.0);
float m2 = m * m; float m2 = m * m;
m = m2 * m2 * m; // pow(m,5) m = m2 * m2 * m; // pow(m,5)
final_color.a *= f0 + (1.0 - f0) * m; // Fresnel Schlick term. final_color.a *= f0 + (1.0 - f0) * m; // Fresnel Schlick term.