diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-02-13 16:20:47 +0300 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2018-02-13 16:20:47 +0300 |
commit | 37f65e9dc4bcfa5225a114feabac753e342bb201 (patch) | |
tree | 0d5f08e60de8c40c940dcb806e20a97bafdff667 /intern/cycles/render/nodes.cpp | |
parent | d640ce40aa9e472613cac22ecbc7655db9c27201 (diff) |
Cycles: Implement index output for hair node
This is like the only way to add variety to hair which is created
using simple children. Used here for the hair.
Maybe not ideal, but the time will show.
Diffstat (limited to 'intern/cycles/render/nodes.cpp')
-rw-r--r-- | intern/cycles/render/nodes.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp index cb884ba9231..d2a03ceb76a 100644 --- a/intern/cycles/render/nodes.cpp +++ b/intern/cycles/render/nodes.cpp @@ -3572,6 +3572,7 @@ NODE_DEFINE(HairInfoNode) #if 0 /*output for minimum hair width transparency - deactivated */ SOCKET_OUT_FLOAT(fade, "Fade"); #endif + SOCKET_OUT_FLOAT(index, "Index"); return type; } @@ -3588,6 +3589,9 @@ void HairInfoNode::attributes(Shader *shader, AttributeRequestSet *attributes) if(!intercept_out->links.empty()) attributes->add(ATTR_STD_CURVE_INTERCEPT); + + if(!output("Index")->links.empty()) + attributes->add(ATTR_STD_CURVE_INDEX); } ShaderNode::attributes(shader, attributes); @@ -3623,6 +3627,11 @@ void HairInfoNode::compile(SVMCompiler& compiler) compiler.add_node(NODE_HAIR_INFO, NODE_INFO_CURVE_FADE, compiler.stack_assign(out)); }*/ + out = output("Index"); + if(!out->links.empty()) { + int attr = compiler.attribute(ATTR_STD_CURVE_INDEX); + compiler.add_node(NODE_ATTR, attr, compiler.stack_assign(out), NODE_ATTR_FLOAT); + } } void HairInfoNode::compile(OSLCompiler& compiler) |