From b6da2a6a86fb948f11f9147c5ed722a064673e6d Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Fri, 21 Apr 2017 12:50:04 +0200 Subject: Cycles: Make it a generic base class for all types of closure nodes The idea is to have osme geenric BSDF node which is subclassed by "regular" BSDF nodes and uber shaders. This way we can access special type and closure type for making decisions somewhere else. --- intern/cycles/render/nodes.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'intern/cycles/render/nodes.cpp') diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp index 3f56690d0c1..f9679d52235 100644 --- a/intern/cycles/render/nodes.cpp +++ b/intern/cycles/render/nodes.cpp @@ -1791,12 +1791,19 @@ void ConvertNode::compile(OSLCompiler& compiler) assert(0); } +/* Base type for all closure-type nodes */ + +BsdfBaseNode::BsdfBaseNode(const NodeType *node_type) + : ShaderNode(node_type) +{ + special_type = SHADER_SPECIAL_TYPE_CLOSURE; +} + /* BSDF Closure */ BsdfNode::BsdfNode(const NodeType *node_type) -: ShaderNode(node_type) +: BsdfBaseNode(node_type) { - special_type = SHADER_SPECIAL_TYPE_CLOSURE; } void BsdfNode::compile(SVMCompiler& compiler, ShaderInput *param1, ShaderInput *param2, ShaderInput *param3, ShaderInput *param4) @@ -2323,9 +2330,8 @@ NODE_DEFINE(PrincipledBsdfNode) } PrincipledBsdfNode::PrincipledBsdfNode() - : ShaderNode(node_type) + : BsdfBaseNode(node_type) { - special_type = SHADER_SPECIAL_TYPE_CLOSURE; closure = CLOSURE_BSDF_PRINCIPLED_ID; distribution = CLOSURE_BSDF_MICROFACET_MULTI_GGX_GLASS_ID; distribution_orig = NBUILTIN_CLOSURES; -- cgit v1.2.3