Commit: 67eb2c7897188c2e5134ea7df7bdc26e08fa5a7a Author: Thomas Dinges Date: Thu May 14 01:08:45 2015 +0200 Branches: master https://developer.blender.org/rB67eb2c7897188c2e5134ea7df7bdc26e08fa5a7a
Cycles: Remove Emission shaders from the graph if color or strength is 0. =================================================================== M intern/cycles/render/graph.cpp M intern/cycles/render/graph.h M intern/cycles/render/nodes.cpp =================================================================== diff --git a/intern/cycles/render/graph.cpp b/intern/cycles/render/graph.cpp index ab89ee3..9adf6b4 100644 --- a/intern/cycles/render/graph.cpp +++ b/intern/cycles/render/graph.cpp @@ -404,6 +404,21 @@ void ShaderGraph::remove_unneeded_nodes() } } } + else if(node->special_type == SHADER_SPECIAL_TYPE_EMISSION) { + EmissionNode *em = static_cast<EmissionNode*>(node); + + if(em->outputs[0]->links.size()) { + /* Black color or zero strength, remove node */ + if((!em->inputs[0]->link && em->inputs[0]->value == make_float3(0.0f, 0.0f, 0.0f)) || + (!em->inputs[1]->link && em->inputs[1]->value.x == 0.0f)) { + vector<ShaderInput*> inputs = em->outputs[0]->links; + + relink(em->inputs, inputs, NULL); + removed[em->id] = true; + any_node_removed = true; + } + } + } else if(node->special_type == SHADER_SPECIAL_TYPE_MIX_CLOSURE) { MixClosureNode *mix = static_cast<MixClosureNode*>(node); diff --git a/intern/cycles/render/graph.h b/intern/cycles/render/graph.h index e627100..1a17909 100644 --- a/intern/cycles/render/graph.h +++ b/intern/cycles/render/graph.h @@ -83,6 +83,7 @@ enum ShaderNodeSpecialType { SHADER_SPECIAL_TYPE_BACKGROUND, SHADER_SPECIAL_TYPE_IMAGE_SLOT, SHADER_SPECIAL_TYPE_CLOSURE, + SHADER_SPECIAL_TYPE_EMISSION, }; /* Enum diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp index 7eaecc2..430c059 100644 --- a/intern/cycles/render/nodes.cpp +++ b/intern/cycles/render/nodes.cpp @@ -1923,6 +1923,8 @@ bool SubsurfaceScatteringNode::has_bssrdf_bump() EmissionNode::EmissionNode() : ShaderNode("emission") { + special_type = SHADER_SPECIAL_TYPE_EMISSION; + add_input("Color", SHADER_SOCKET_COLOR, make_float3(0.8f, 0.8f, 0.8f)); add_input("Strength", SHADER_SOCKET_FLOAT, 10.0f); add_input("SurfaceMixWeight", SHADER_SOCKET_FLOAT, 0.0f, ShaderInput::USE_SVM); _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org http://lists.blender.org/mailman/listinfo/bf-blender-cvs