clamp for Mix node
[blender.git] / intern / cycles / render / nodes.cpp
index 07310cb4461d8b592fa6fac8d1c715f960bb71ce..b35fe151bac09e715cc0544ca414535e6de9a196 100644 (file)
@@ -1971,6 +1971,8 @@ MixNode::MixNode()
 {
        type = ustring("Mix");
 
+       use_clamp = false;
+
        add_input("Fac", SHADER_SOCKET_FLOAT, 0.5f);
        add_input("Color1", SHADER_SOCKET_COLOR);
        add_input("Color2", SHADER_SOCKET_COLOR);
@@ -2019,11 +2021,17 @@ void MixNode::compile(SVMCompiler& compiler)
 
        compiler.add_node(NODE_MIX, fac_in->stack_offset, color1_in->stack_offset, color2_in->stack_offset);
        compiler.add_node(NODE_MIX, type_enum[type], color_out->stack_offset);
+
+       if(use_clamp) {
+               compiler.add_node(NODE_MIX, 0, color_out->stack_offset);
+               compiler.add_node(NODE_MIX, NODE_MIX_CLAMP, color_out->stack_offset);
+       }
 }
 
 void MixNode::compile(OSLCompiler& compiler)
 {
        compiler.parameter("type", type);
+       compiler.parameter("Clamp", use_clamp);
        compiler.add(this, "node_mix");
 }