diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2017-05-02 20:25:25 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2017-05-03 13:08:56 +0300 |
commit | a7404958148f1030483c7d6238ebf48abc26cf24 (patch) | |
tree | cd06f232a263ac3bfc7233e12a6d09a5a0a60d7e /source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl | |
parent | 54bde8244578fc2002efa394b482ff3ff47f43fd (diff) |
Eevee: Add "uber" Shader Output Nodes.
Include Metallic and Specular workflow.
Clearcoat and are not implemented yet.
Diffstat (limited to 'source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl')
-rw-r--r-- | source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl b/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl index 9b8963ef798..0d96b7768dc 100644 --- a/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl +++ b/source/blender/draw/engines/eevee/shaders/lit_surface_frag.glsl @@ -231,7 +231,7 @@ float light_common(inout LightData ld, inout ShadingData sd) return vis; } -vec3 eevee_surface_lit(vec3 world_normal, vec3 albedo, vec3 f0, float roughness) +vec3 eevee_surface_lit(vec3 world_normal, vec3 albedo, vec3 f0, float roughness, float ao) { ShadingData sd; sd.N = normalize(world_normal); @@ -243,6 +243,7 @@ vec3 eevee_surface_lit(vec3 world_normal, vec3 albedo, vec3 f0, float roughness) sd.spec_dominant_dir = get_specular_dominant_dir(sd.N, sd.R, roughness); vec3 radiance = vec3(0.0); + vec3 indirect_radiance = vec3(0.0); /* Analitic Lights */ for (int i = 0; i < MAX_LIGHT && i < light_count; ++i) { @@ -264,9 +265,9 @@ vec3 eevee_surface_lit(vec3 world_normal, vec3 albedo, vec3 f0, float roughness) vec2 uv = ltc_coords(dot(sd.N, sd.V), sqrt(roughness)); vec2 brdf_lut = texture(brdfLut, uv).rg; vec3 Li = textureLod(probeFiltered, sd.spec_dominant_dir, roughness * lodMax).rgb; - radiance += Li * brdf_lut.y + f0 * Li * brdf_lut.x; + indirect_radiance += Li * brdf_lut.y + f0 * Li * brdf_lut.x; - radiance += spherical_harmonics(sd.N, shCoefs) * albedo; + indirect_radiance += spherical_harmonics(sd.N, shCoefs) * albedo; - return radiance; + return radiance + indirect_radiance * ao; }
\ No newline at end of file |