diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2019-06-05 13:17:37 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2019-06-05 13:20:49 +0300 |
commit | 98cea7edcefa58d5eb7e2350461b8efe33fe7d9e (patch) | |
tree | d7bfb1d88d07ddc954560e3df29f23c9e8b391de /source/blender/draw/engines/eevee/shaders/default_frag.glsl | |
parent | cd1ac4d908a89e4eb5c3da50bbe748aec2b36692 (diff) |
Fix T65298 Eevee: Principled BSDF doesn't use specular with metals
This does add some more register pressure as it passes a new vec3 down
the shading function. But for now we care more about accuracy than
efficiency.
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/default_frag.glsl')
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/default_frag.glsl | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/default_frag.glsl b/source/blender/draw/engines/eevee/shaders/default_frag.glsl index c568b4d94be..64a1c725a6b 100644 --- a/source/blender/draw/engines/eevee/shaders/default_frag.glsl +++ b/source/blender/draw/engines/eevee/shaders/default_frag.glsl @@ -29,8 +29,9 @@ Closure nodetree_exec(void) vec3 dielectric = vec3(0.034) * specular * 2.0; vec3 albedo = mix(basecol, vec3(0.0), metallic); vec3 f0 = mix(dielectric, basecol, metallic); + vec3 f90 = mix(vec3(1.0), f0, (1.0 - specular) * metallic); vec3 out_diff, out_spec, ssr_spec; - eevee_closure_default(N, albedo, f0, 1, roughness, 1.0, out_diff, out_spec, ssr_spec); + eevee_closure_default(N, albedo, f0, f90, 1, roughness, 1.0, out_diff, out_spec, ssr_spec); Closure result = Closure(out_spec + out_diff * albedo, 1.0, |