diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp index f54b61d2f45..9a0a917a72b 100644 --- a/intern/cycles/render/nodes.cpp +++ b/intern/cycles/render/nodes.cpp @@ -2109,7 +2109,9 @@ void DiffuseBsdfNode::compile(OSLCompiler& compiler) /* Disney BSDF Closure */ DisneyBsdfNode::DisneyBsdfNode() + : ShaderNode("bsdf") { + special_type = SHADER_SPECIAL_TYPE_CLOSURE; closure = CLOSURE_BSDF_DISNEY_DIFFUSE_ID; add_input("BaseColor", SHADER_SOCKET_COLOR, make_float3(0.646f, 0.415f, 0.017f)); @@ -2123,7 +2125,9 @@ DisneyBsdfNode::DisneyBsdfNode() add_input("SheenTint", SHADER_SOCKET_FLOAT, 0.5f); add_input("Clearcoat", SHADER_SOCKET_FLOAT, 0.0f); add_input("ClearcoatGloss", SHADER_SOCKET_FLOAT, 1.0f); + add_input("Normal", SHADER_SOCKET_NORMAL, ShaderInput::NORMAL); add_input("Tangent", SHADER_SOCKET_VECTOR, ShaderInput::TANGENT); + add_input("SurfaceMixWeight", SHADER_SOCKET_FLOAT, 0.0f, ShaderInput::USE_SVM); } void DisneyBsdfNode::compile(SVMCompiler& compiler) diff --git a/intern/cycles/render/nodes.h b/intern/cycles/render/nodes.h index 626c8809df2..4dbffa2ccb5 100644 --- a/intern/cycles/render/nodes.h +++ b/intern/cycles/render/nodes.h @@ -415,9 +415,19 @@ public: }; /* Disney BRDF */ -class DisneyBsdfNode : public BsdfNode { +class DisneyBsdfNode : public ShaderNode { public: SHADER_NODE_CLASS(DisneyBsdfNode) + + bool has_spatial_varying() { return true; } + + ClosureType closure; + + virtual bool equals(const ShaderNode * /*other*/) + { + /* TODO(sergey): With some care BSDF nodes can be de-duplicated. */ + return false; + } }; class TranslucentBsdfNode : public BsdfNode {