diff options
author | Pascal Schön <VanCantus> | 2021-02-22 19:50:13 +0300 |
---|---|---|
committer | Brecht Van Lommel <brecht@blender.org> | 2021-02-22 20:33:05 +0300 |
commit | 277b4f4b9377b7d43e730aa3219ee1a82f9885d7 (patch) | |
tree | 68555ed0b1ce05a279b9aa79582462f1d0a6079e | |
parent | 32073993a8fcd235a5c7a2022dcdd7aef8a49687 (diff) |
Fix Principled BSDF specular color for black base color
Specular color is set to black instead of white inside the Principled BSDF
when the base color is set to fully black. This is contradictory to the sample
code of the Disney BRDF in BRDF Explorer. This patch aligns both
implementations.
Differential Revision: https://developer.blender.org/D10448
-rw-r--r-- | intern/cycles/kernel/shaders/node_principled_bsdf.osl | 2 | ||||
-rw-r--r-- | intern/cycles/kernel/svm/svm_closure.h | 2 | ||||
-rw-r--r-- | source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl | 2 |
3 files changed, 3 insertions, 3 deletions
diff --git a/intern/cycles/kernel/shaders/node_principled_bsdf.osl b/intern/cycles/kernel/shaders/node_principled_bsdf.osl index 1711811ac65..23949f406c7 100644 --- a/intern/cycles/kernel/shaders/node_principled_bsdf.osl +++ b/intern/cycles/kernel/shaders/node_principled_bsdf.osl @@ -50,7 +50,7 @@ shader node_principled_bsdf(string distribution = "Multiscatter GGX", float m_cdlum = luminance(BaseColor); color m_ctint = m_cdlum > 0.0 ? BaseColor / m_cdlum : - color(0.0, 0.0, 0.0); // normalize lum. to isolate hue+sat + color(1.0, 1.0, 1.0); // normalize lum. to isolate hue+sat /* rotate tangent */ if (AnisotropicRotation != 0.0) diff --git a/intern/cycles/kernel/svm/svm_closure.h b/intern/cycles/kernel/svm/svm_closure.h index 1ae94f1d766..f6bf860631e 100644 --- a/intern/cycles/kernel/svm/svm_closure.h +++ b/intern/cycles/kernel/svm/svm_closure.h @@ -308,7 +308,7 @@ ccl_device void svm_node_closure_bsdf(KernelGlobals *kg, float3 m_ctint = m_cdlum > 0.0f ? base_color / m_cdlum : make_float3( - 0.0f, 0.0f, 0.0f); // normalize lum. to isolate hue+sat + 1.0f, 1.0f, 1.0f); // normalize lum. to isolate hue+sat float3 tmp_col = make_float3(1.0f, 1.0f, 1.0f) * (1.0f - specular_tint) + m_ctint * specular_tint; diff --git a/source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl b/source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl index 40fe83a3616..49c8973a8ce 100644 --- a/source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl +++ b/source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl @@ -2,7 +2,7 @@ vec3 tint_from_color(vec3 color) { float lum = dot(color, vec3(0.3, 0.6, 0.1)); /* luminance approx. */ - return (lum > 0.0) ? color / lum : vec3(0.0); /* normalize lum. to isolate hue+sat */ + return (lum > 0.0) ? color / lum : vec3(1.0); /* normalize lum. to isolate hue+sat */ } float principled_sheen(float NV) |