chromakey: add invert mask option
This commit is contained in:
@@ -24,6 +24,7 @@ namespace olive {
|
||||
|
||||
const QString ChromaKeyNode::kColorInput = QStringLiteral("color_key");
|
||||
const QString ChromaKeyNode::kMaskOnlyInput = QStringLiteral("mask_only_in");
|
||||
const QString ChromaKeyNode::kInvertInput = QStringLiteral("invert_in");
|
||||
const QString ChromaKeyNode::kUpperToleranceInput = QStringLiteral("upper_tolerence_in");
|
||||
const QString ChromaKeyNode::kLowerToleranceInput = QStringLiteral("lower_tolerence_in");
|
||||
const QString ChromaKeyNode::kGarbageMatteInput = QStringLiteral("garbage_in");
|
||||
@@ -59,6 +60,8 @@ ChromaKeyNode::ChromaKeyNode()
|
||||
SetInputProperty(kShadowsInput, QStringLiteral("min"), 0.0);
|
||||
SetInputProperty(kShadowsInput, QStringLiteral("base"), 0.1);
|
||||
|
||||
AddInput(kInvertInput, NodeValue::kBoolean, false);
|
||||
|
||||
AddInput(kMaskOnlyInput, NodeValue::kBoolean, false);
|
||||
}
|
||||
|
||||
@@ -93,6 +96,7 @@ void ChromaKeyNode::Retranslate()
|
||||
SetInputName(kHighlightsInput, tr("Highlights"));
|
||||
SetInputName(kUpperToleranceInput, tr("Upper Tolerance"));
|
||||
SetInputName(kLowerToleranceInput, tr("Lower Tolerance"));
|
||||
SetInputName(kInvertInput, tr("Invert Mask"));
|
||||
SetInputName(kMaskOnlyInput, tr("Show Mask Only"));
|
||||
}
|
||||
|
||||
|
||||
@@ -42,6 +42,7 @@ class ChromaKeyNode : public OCIOBaseNode {
|
||||
virtual void ConfigChanged() override;
|
||||
|
||||
static const QString kColorInput;
|
||||
static const QString kInvertInput;
|
||||
static const QString kMaskOnlyInput;
|
||||
static const QString kUpperToleranceInput;
|
||||
static const QString kLowerToleranceInput;
|
||||
|
||||
@@ -9,6 +9,7 @@ uniform sampler2D garbage_in;
|
||||
uniform sampler2D core_in;
|
||||
uniform bool garbage_in_enabled;
|
||||
uniform bool core_in_enabled;
|
||||
uniform bool invert_in;
|
||||
|
||||
uniform float highlights_in;
|
||||
uniform float shadows_in;
|
||||
@@ -94,6 +95,11 @@ void main() {
|
||||
mask = shadows_in * 0.01 * (highlights_in * 0.01 * mask - 1.0) + 1.0;
|
||||
mask = clamp(mask, 0.0, 1.0);
|
||||
|
||||
// Invert
|
||||
if (invert_in) {
|
||||
mask = 1.0 - mask;
|
||||
}
|
||||
|
||||
col.rgb *= mask;
|
||||
col.w = mask;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user