diff options
Diffstat (limited to 'intern/cycles/render/nodes.cpp')
-rw-r--r-- | intern/cycles/render/nodes.cpp | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp index a9c17c8bcd5..06acb9e749e 100644 --- a/intern/cycles/render/nodes.cpp +++ b/intern/cycles/render/nodes.cpp @@ -1375,7 +1375,7 @@ BsdfNode::BsdfNode(bool scattering_) } } -void BsdfNode::compile(SVMCompiler& compiler, ShaderInput *param1, ShaderInput *param2, ShaderInput *param3) +void BsdfNode::compile(SVMCompiler& compiler, ShaderInput *param1, ShaderInput *param2, ShaderInput *param3, ShaderInput *param4) { ShaderInput *color_in = input("Color"); ShaderInput *normal_in = input("Normal"); @@ -1394,6 +1394,8 @@ void BsdfNode::compile(SVMCompiler& compiler, ShaderInput *param1, ShaderInput * compiler.stack_assign(param2); if(param3) compiler.stack_assign(param3); + if(param4) + compiler.stack_assign(param4); if(normal_in->link) compiler.stack_assign(normal_in); @@ -1410,12 +1412,14 @@ void BsdfNode::compile(SVMCompiler& compiler, ShaderInput *param1, ShaderInput * __float_as_int((param2)? param2->value.x: 0.0f)); if(tangent_in) { - compiler.add_node(NODE_CLOSURE_BSDF, normal_in->stack_offset, tangent_in->stack_offset, - (param3)? param3->stack_offset: SVM_STACK_INVALID); + compiler.add_node(normal_in->stack_offset, tangent_in->stack_offset, + (param3)? param3->stack_offset: SVM_STACK_INVALID, + (param4)? param4->stack_offset: SVM_STACK_INVALID); } else { - compiler.add_node(NODE_CLOSURE_BSDF, normal_in->stack_offset, SVM_STACK_INVALID, - (param3)? param3->stack_offset: SVM_STACK_INVALID); + compiler.add_node(normal_in->stack_offset, SVM_STACK_INVALID, + (param3)? param3->stack_offset: SVM_STACK_INVALID, + (param4)? param4->stack_offset: SVM_STACK_INVALID); } } @@ -1707,12 +1711,13 @@ SubsurfaceScatteringNode::SubsurfaceScatteringNode() add_input("Scale", SHADER_SOCKET_FLOAT, 0.01f); add_input("Radius", SHADER_SOCKET_VECTOR, make_float3(0.1f, 0.1f, 0.1f)); + add_input("Sharpness", SHADER_SOCKET_FLOAT, 0.0f); add_input("Texture Blur", SHADER_SOCKET_FLOAT, 1.0f); } void SubsurfaceScatteringNode::compile(SVMCompiler& compiler) { - BsdfNode::compile(compiler, input("Scale"), input("Texture Blur"), input("Radius")); + BsdfNode::compile(compiler, input("Scale"), input("Texture Blur"), input("Radius"), input("Sharpness")); } void SubsurfaceScatteringNode::compile(OSLCompiler& compiler) |