Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2017-11-24 08:15:42 +0300
committerClément Foucault <foucault.clem@gmail.com>2017-11-24 08:37:37 +0300
commit2302ba2245f1e65dde7870cc9ab610ded5abc364 (patch)
treef504f772ab4a6e5dee5bbada56b5b421e8a2b842 /source/blender/draw/engines/eevee/shaders/default_frag.glsl
parent16a28021493d5a54efff5e6aade39f7b015366cd (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.glsl9
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;
}