Cycles: add Ray Length output to Light Path node. This gives the distance travelled
[blender.git] / intern / cycles / render / nodes.cpp
index 7039f5b64122e57e95fd1a34827778b38b5c016a..fd26c552f21ce468aeff567a47f8a6d7912aa72a 100644 (file)
@@ -1623,6 +1623,7 @@ LightPathNode::LightPathNode()
        add_output("Is Singular Ray", SHADER_SOCKET_FLOAT);
        add_output("Is Reflection Ray", SHADER_SOCKET_FLOAT);
        add_output("Is Transmission Ray", SHADER_SOCKET_FLOAT);
+       add_output("Ray Length", SHADER_SOCKET_FLOAT);
 }
 
 void LightPathNode::compile(SVMCompiler& compiler)
@@ -1671,6 +1672,13 @@ void LightPathNode::compile(SVMCompiler& compiler)
                compiler.stack_assign(out);
                compiler.add_node(NODE_LIGHT_PATH, NODE_LP_transmission, out->stack_offset);
        }
+       
+       out = output("Ray Length");
+       if(!out->links.empty()) {
+               compiler.stack_assign(out);
+               compiler.add_node(NODE_LIGHT_PATH, NODE_LP_ray_length, out->stack_offset);
+       }
+
 }
 
 void LightPathNode::compile(OSLCompiler& compiler)