Durian request: Added 'Color Balance' node to compositor. uses Lift/Gamma/Gain

similar to sequence editor.

--> http://mke3.net/blender/devel/2.5/color_balance_node.jpg

Also added 0 key (zero key) shortcut when mouse is over a button, to reset it to its default value.
Same as the RMB menu ->Reset to Default, except for color wheels, it only resets the hue/sat/value
components that that widget affects.

Peter/Xavier: The existing color balance code can generate NaNs (fractional power of a negative),
which causes havoc along the image pipeline. I added a check in the node code to prevent this.

Still plenty of potential for lots of better colour correction tools in the compositor, just needs time...
This commit is contained in:
2010-01-20 04:19:55 +00:00
parent 8bcf66e1d1
commit 1d3186cbcf
14 changed files with 418 additions and 222 deletions

View File

@@ -913,6 +913,28 @@ static void node_composit_buts_view_levels(uiLayout *layout, bContext *C, Pointe
uiItemR(layout, NULL, 0, ptr, "channel", UI_ITEM_R_EXPAND);
}
static void node_composit_buts_colorbalance(uiLayout *layout, bContext *C, PointerRNA *ptr)
{
uiLayout *split, *col, *row;
split = uiLayoutSplit(layout, 0, 0);
col = uiLayoutColumn(split, 0);
uiTemplateColorWheel(col, ptr, "lift", 1);
row = uiLayoutRow(col, 0);
uiItemR(row, NULL, 0, ptr, "lift", 0);
col = uiLayoutColumn(split, 0);
uiTemplateColorWheel(col, ptr, "gamma", 1);
row = uiLayoutRow(col, 0);
uiItemR(row, NULL, 0, ptr, "gamma", 0);
col = uiLayoutColumn(split, 0);
uiTemplateColorWheel(col, ptr, "gain", 1);
row = uiLayoutRow(col, 0);
uiItemR(row, NULL, 0, ptr, "gain", 0);
}
/* only once called */
static void node_composit_set_butfunc(bNodeType *ntype)
{
@@ -1042,9 +1064,12 @@ static void node_composit_set_butfunc(bNodeType *ntype)
case CMP_NODE_PREMULKEY:
ntype->uifunc= node_composit_buts_premulkey;
break;
case CMP_NODE_VIEW_LEVELS:
case CMP_NODE_VIEW_LEVELS:
ntype->uifunc=node_composit_buts_view_levels;
break;
case CMP_NODE_COLORBALANCE:
ntype->uifunc=node_composit_buts_colorbalance;
break;
default:
ntype->uifunc= NULL;
}