diff options
Diffstat (limited to 'source/blender/nodes/composite/nodes/node_composite_curves.c')
-rw-r--r-- | source/blender/nodes/composite/nodes/node_composite_curves.c | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/source/blender/nodes/composite/nodes/node_composite_curves.c b/source/blender/nodes/composite/nodes/node_composite_curves.c index b5a78015d76..1948709ec84 100644 --- a/source/blender/nodes/composite/nodes/node_composite_curves.c +++ b/source/blender/nodes/composite/nodes/node_composite_curves.c @@ -41,6 +41,8 @@ static bNodeSocketTemplate cmp_node_time_out[]= { { -1, 0, "" } }; +#ifdef WITH_COMPOSITOR_LEGACY + static void node_composit_exec_curves_time(void *data, bNode *node, bNodeStack **UNUSED(in), bNodeStack **out) { RenderData *rd= data; @@ -50,12 +52,15 @@ static void node_composit_exec_curves_time(void *data, bNode *node, bNodeStack * if (node->custom1 < node->custom2) fac= (rd->cfra - node->custom1)/(float)(node->custom2-node->custom1); - fac= curvemapping_evaluateF(node->storage, 0, fac); + curvemapping_initialize(node->storage); + fac = curvemapping_evaluateF(node->storage, 0, fac); + out[0]->vec[0]= CLAMPIS(fac, 0.0f, 1.0f); } +#endif /* WITH_COMPOSITOR_LEGACY */ -static void node_composit_init_curves_time(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp)) +static void node_composit_init_curves_time(bNodeTree *UNUSED(ntree), bNode *node, bNodeTemplate *UNUSED(ntemp)) { node->custom1= 1; node->custom2= 250; @@ -71,7 +76,9 @@ void register_node_type_cmp_curve_time(bNodeTreeType *ttype) node_type_size(&ntype, 140, 100, 320); node_type_init(&ntype, node_composit_init_curves_time); node_type_storage(&ntype, "CurveMapping", node_free_curves, node_copy_curves); +#ifdef WITH_COMPOSITOR_LEGACY node_type_exec(&ntype, node_composit_exec_curves_time); +#endif nodeRegisterType(ttype, &ntype); } @@ -89,15 +96,20 @@ static bNodeSocketTemplate cmp_node_curve_vec_out[]= { { -1, 0, "" } }; +#ifdef WITH_COMPOSITOR_LEGACY + static void node_composit_exec_curve_vec(void *UNUSED(data), bNode *node, bNodeStack **in, bNodeStack **out) { /* stack order input: vec */ /* stack order output: vec */ - + + curvemapping_initialize(node->storage); curvemapping_evaluate_premulRGBF(node->storage, out[0]->vec, in[0]->vec); } -static void node_composit_init_curve_vec(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp)) +#endif /* WITH_COMPOSITOR_LEGACY */ + +static void node_composit_init_curve_vec(bNodeTree *UNUSED(ntree), bNode *node, bNodeTemplate *UNUSED(ntemp)) { node->storage= curvemapping_add(3, -1.0f, -1.0f, 1.0f, 1.0f); } @@ -111,7 +123,9 @@ void register_node_type_cmp_curve_vec(bNodeTreeType *ttype) node_type_size(&ntype, 200, 140, 320); node_type_init(&ntype, node_composit_init_curve_vec); node_type_storage(&ntype, "CurveMapping", node_free_curves, node_copy_curves); +#ifdef WITH_COMPOSITOR_LEGACY node_type_exec(&ntype, node_composit_exec_curve_vec); +#endif nodeRegisterType(ttype, &ntype); } @@ -131,15 +145,19 @@ static bNodeSocketTemplate cmp_node_curve_rgb_out[]= { { -1, 0, "" } }; +#ifdef WITH_COMPOSITOR_LEGACY + static void do_curves(bNode *node, float *out, float *in) { + curvemapping_initialize(node->storage); curvemapping_evaluate_premulRGBF(node->storage, out, in); out[3]= in[3]; } static void do_curves_fac(bNode *node, float *out, float *in, float *fac) { - + curvemapping_initialize(node->storage); + if (*fac >= 1.0f) curvemapping_evaluate_premulRGBF(node->storage, out, in); else if (*fac <= 0.0f) { @@ -163,6 +181,8 @@ static void node_composit_exec_curve_rgb(void *UNUSED(data), bNode *node, bNodeS if (out[0]->hasoutput==0) return; + curvemapping_initialize(node->storage); + /* input no image? then only color operation */ if (in[1]->data==NULL) { curvemapping_evaluateRGBF(node->storage, out[0]->vec, in[1]->vec); @@ -184,7 +204,9 @@ static void node_composit_exec_curve_rgb(void *UNUSED(data), bNode *node, bNodeS } -static void node_composit_init_curve_rgb(bNodeTree *UNUSED(ntree), bNode* node, bNodeTemplate *UNUSED(ntemp)) +#endif /* WITH_COMPOSITOR_LEGACY */ + +static void node_composit_init_curve_rgb(bNodeTree *UNUSED(ntree), bNode *node, bNodeTemplate *UNUSED(ntemp)) { node->storage= curvemapping_add(4, 0.0f, 0.0f, 1.0f, 1.0f); } @@ -198,7 +220,9 @@ void register_node_type_cmp_curve_rgb(bNodeTreeType *ttype) node_type_size(&ntype, 200, 140, 320); node_type_init(&ntype, node_composit_init_curve_rgb); node_type_storage(&ntype, "CurveMapping", node_free_curves, node_copy_curves); +#ifdef WITH_COMPOSITOR_LEGACY node_type_exec(&ntype, node_composit_exec_curve_rgb); +#endif nodeRegisterType(ttype, &ntype); } |