diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-11-24 08:15:42 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-11-24 08:37:37 +0300 |
commit | 2302ba2245f1e65dde7870cc9ab610ded5abc364 (patch) | |
tree | f504f772ab4a6e5dee5bbada56b5b421e8a2b842 /source/blender/draw/engines/eevee/shaders/default_frag.glsl | |
parent | 16a28021493d5a54efff5e6aade39f7b015366cd (diff) |
Eevee: Refactor of lit_surface_frag.glsl
This cleanup removes the need of gigantic code duplication for each closure.
This also make some preformance improvement since it removes some branches and duplicated loops.
It also fix some mismatch (between cycles and eevee) with the principled shader.
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/default_frag.glsl')
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/default_frag.glsl | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/default_frag.glsl b/source/blender/draw/engines/eevee/shaders/default_frag.glsl index 4ba4192abbd..91746a6f082 100644 --- a/source/blender/draw/engines/eevee/shaders/default_frag.glsl +++ b/source/blender/draw/engines/eevee/shaders/default_frag.glsl @@ -7,12 +7,13 @@ uniform float roughness; Closure nodetree_exec(void) { vec3 dielectric = vec3(0.034) * specular * 2.0; - vec3 diffuse = mix(basecol, vec3(0.0), metallic); + vec3 albedo = mix(basecol, vec3(0.0), metallic); vec3 f0 = mix(dielectric, basecol, metallic); - vec3 ssr_spec; - vec3 radiance = eevee_surface_lit((gl_FrontFacing) ? worldNormal : -worldNormal, diffuse, f0, roughness, 1.0, 0, ssr_spec); + vec3 N = (gl_FrontFacing) ? worldNormal : -worldNormal; + vec3 out_diff, out_spec, ssr_spec; + eevee_closure_default(N, albedo, f0, 0, roughness, 1.0, out_diff, out_spec, ssr_spec); - Closure result = Closure(radiance, 1.0, vec4(ssr_spec, roughness), normal_encode(normalize(viewNormal), viewCameraVec), 0); + Closure result = Closure(out_spec + out_diff, 1.0, vec4(ssr_spec, roughness), normal_encode(normalize(viewNormal), viewCameraVec), 0); return result; } |