Compositor: negative color support for ASC-CDL offset
Since the color wheel can't handle negative colors usefully, use a basis value for the initial RGB.
This commit is contained in:
@@ -58,7 +58,12 @@ void ColorBalanceNode::convertToOperations(NodeConverter &converter, const Compo
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
ColorBalanceASCCDLOperation *operationCDL = new ColorBalanceASCCDLOperation();
|
ColorBalanceASCCDLOperation *operationCDL = new ColorBalanceASCCDLOperation();
|
||||||
operationCDL->setOffset(n->offset);
|
|
||||||
|
float offset[3];
|
||||||
|
copy_v3_fl(offset, n->offset_basis);
|
||||||
|
add_v3_v3(offset, n->offset);
|
||||||
|
|
||||||
|
operationCDL->setOffset(offset);
|
||||||
operationCDL->setPower(n->power);
|
operationCDL->setPower(n->power);
|
||||||
operationCDL->setSlope(n->slope);
|
operationCDL->setSlope(n->slope);
|
||||||
operation = operationCDL;
|
operation = operationCDL;
|
||||||
|
|||||||
@@ -1953,6 +1953,7 @@ static void node_composit_buts_colorbalance(uiLayout *layout, bContext *UNUSED(C
|
|||||||
uiTemplateColorPicker(col, ptr, "offset", 1, 1, 0, 1);
|
uiTemplateColorPicker(col, ptr, "offset", 1, 1, 0, 1);
|
||||||
row = uiLayoutRow(col, false);
|
row = uiLayoutRow(col, false);
|
||||||
uiItemR(row, ptr, "offset", 0, NULL, ICON_NONE);
|
uiItemR(row, ptr, "offset", 0, NULL, ICON_NONE);
|
||||||
|
uiItemR(col, ptr, "offset_basis", 0, NULL, ICON_NONE);
|
||||||
|
|
||||||
col = uiLayoutColumn(split, false);
|
col = uiLayoutColumn(split, false);
|
||||||
uiTemplateColorPicker(col, ptr, "power", 1, 1, 0, 1);
|
uiTemplateColorPicker(col, ptr, "power", 1, 1, 0, 1);
|
||||||
|
|||||||
@@ -689,6 +689,8 @@ typedef struct NodeColorBalance {
|
|||||||
float slope[3];
|
float slope[3];
|
||||||
float offset[3];
|
float offset[3];
|
||||||
float power[3];
|
float power[3];
|
||||||
|
float offset_basis;
|
||||||
|
char _pad[4];
|
||||||
|
|
||||||
/* LGG parameters */
|
/* LGG parameters */
|
||||||
float lift[3];
|
float lift[3];
|
||||||
|
|||||||
@@ -5892,6 +5892,12 @@ static void def_cmp_colorbalance(StructRNA *srna)
|
|||||||
RNA_def_property_ui_range(prop, 0, 2, 0.1, 3);
|
RNA_def_property_ui_range(prop, 0, 2, 0.1, 3);
|
||||||
RNA_def_property_ui_text(prop, "Slope", "Correction for Highlights");
|
RNA_def_property_ui_text(prop, "Slope", "Correction for Highlights");
|
||||||
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_NodeColorBalance_update_cdl");
|
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_NodeColorBalance_update_cdl");
|
||||||
|
|
||||||
|
prop = RNA_def_property(srna, "offset_basis", PROP_FLOAT, PROP_NONE);
|
||||||
|
RNA_def_property_range(prop, -FLT_MAX, FLT_MAX);
|
||||||
|
RNA_def_property_ui_range(prop, -1.0, 1.0, 1.0, 2);
|
||||||
|
RNA_def_property_ui_text(prop, "Basis", "Support negative color by using this as the RGB basis");
|
||||||
|
RNA_def_property_update(prop, NC_NODE | NA_EDITED, "rna_NodeColorBalance_update_cdl");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void def_cmp_huecorrect(StructRNA *srna)
|
static void def_cmp_huecorrect(StructRNA *srna)
|
||||||
|
|||||||
Reference in New Issue
Block a user