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:
authorPascal Schön <VanCantus>2021-02-22 19:50:13 +0300
committerBrecht Van Lommel <brecht@blender.org>2021-02-22 20:33:05 +0300
commit277b4f4b9377b7d43e730aa3219ee1a82f9885d7 (patch)
tree68555ed0b1ce05a279b9aa79582462f1d0a6079e
parent32073993a8fcd235a5c7a2022dcdd7aef8a49687 (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.osl2
-rw-r--r--intern/cycles/kernel/svm/svm_closure.h2
-rw-r--r--source/blender/gpu/shaders/material/gpu_shader_material_principled.glsl2
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)