diff options
author | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-12-11 18:39:37 +0400 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@pandora.be> | 2012-12-11 18:39:37 +0400 |
commit | 43c04eefe32773b708d85ea0db95564e71f4870e (patch) | |
tree | adcbc13cd57ce4f48f7fc26e123e3ca11c71cb2c /intern/cycles/render/nodes.cpp | |
parent | 7c81952179f0ff08cfdd8f571eb1c0f06e224070 (diff) |
Cycles: RGB and Vector Curves nodes now supported, with the limitation that the
range must be left to the default (0..1 and -1..1).
Diffstat (limited to 'intern/cycles/render/nodes.cpp')
-rw-r--r-- | intern/cycles/render/nodes.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/intern/cycles/render/nodes.cpp b/intern/cycles/render/nodes.cpp index 3f8055b3540..aef28449e44 100644 --- a/intern/cycles/render/nodes.cpp +++ b/intern/cycles/render/nodes.cpp @@ -3018,9 +3018,56 @@ void RGBCurvesNode::compile(SVMCompiler& compiler) void RGBCurvesNode::compile(OSLCompiler& compiler) { + float ramp[RAMP_TABLE_SIZE][3]; + + for (int i = 0; i < RAMP_TABLE_SIZE; ++i) { + ramp[i][0] = curves[i].x; + ramp[i][1] = curves[i].y; + ramp[i][2] = curves[i].z; + } + + compiler.parameter_color_array("ramp", ramp, RAMP_TABLE_SIZE); compiler.add(this, "node_rgb_curves"); } +/* VectorCurvesNode */ + +VectorCurvesNode::VectorCurvesNode() +: ShaderNode("rgb_curves") +{ + add_input("Fac", SHADER_SOCKET_FLOAT); + add_input("Vector", SHADER_SOCKET_VECTOR); + add_output("Vector", SHADER_SOCKET_VECTOR); +} + +void VectorCurvesNode::compile(SVMCompiler& compiler) +{ + ShaderInput *fac_in = input("Fac"); + ShaderInput *vector_in = input("Vector"); + ShaderOutput *vector_out = output("Vector"); + + compiler.stack_assign(fac_in); + compiler.stack_assign(vector_in); + compiler.stack_assign(vector_out); + + compiler.add_node(NODE_VECTOR_CURVES, fac_in->stack_offset, vector_in->stack_offset, vector_out->stack_offset); + compiler.add_array(curves, RAMP_TABLE_SIZE); +} + +void VectorCurvesNode::compile(OSLCompiler& compiler) +{ + float ramp[RAMP_TABLE_SIZE][3]; + + for (int i = 0; i < RAMP_TABLE_SIZE; ++i) { + ramp[i][0] = curves[i].x; + ramp[i][1] = curves[i].y; + ramp[i][2] = curves[i].z; + } + + compiler.parameter_color_array("ramp", ramp, RAMP_TABLE_SIZE); + compiler.add(this, "node_vector_curves"); +} + /* RGBRampNode */ RGBRampNode::RGBRampNode() |