Revision: 47948
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47948
Author: nazgul
Date: 2012-06-15 11:53:51 +0000 (Fri, 15 Jun 2012)
Log Message:
-----------
Core matte input for keying node
This matte could be used to force alpha be at high values in areas where
algorithm detects it as edge or background color.
Modified Paths:
--------------
trunk/blender/source/blender/compositor/nodes/COM_KeyingNode.cpp
trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.cpp
trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.h
trunk/blender/source/blender/nodes/composite/nodes/node_composite_keying.c
Modified: trunk/blender/source/blender/compositor/nodes/COM_KeyingNode.cpp
===================================================================
--- trunk/blender/source/blender/compositor/nodes/COM_KeyingNode.cpp
2012-06-15 11:44:23 UTC (rev 47947)
+++ trunk/blender/source/blender/compositor/nodes/COM_KeyingNode.cpp
2012-06-15 11:53:51 UTC (rev 47948)
@@ -157,6 +157,7 @@
InputSocket *inputImage = this->getInputSocket(0);
InputSocket *inputScreen = this->getInputSocket(1);
InputSocket *inputGarbageMatte = this->getInputSocket(2);
+ InputSocket *inputCoreMatte = this->getInputSocket(3);
OutputSocket *outputImage = this->getOutputSocket(0);
OutputSocket *outputMatte = this->getOutputSocket(1);
OutputSocket *outputEdges = this->getOutputSocket(2);
@@ -172,6 +173,7 @@
inputScreen->relinkConnections(keyingOperation->getInputSocket(1), 1,
graph);
inputGarbageMatte->relinkConnections(keyingOperation->getInputSocket(2), 2,
graph);
+ inputCoreMatte->relinkConnections(keyingOperation->getInputSocket(3),
3, graph);
if (keying_data->blur_pre) {
/* chroma preblur operation for input of keying operation */
Modified:
trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.cpp
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.cpp
2012-06-15 11:44:23 UTC (rev 47947)
+++ trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.cpp
2012-06-15 11:53:51 UTC (rev 47948)
@@ -57,6 +57,7 @@
this->addInputSocket(COM_DT_COLOR);
this->addInputSocket(COM_DT_COLOR);
this->addInputSocket(COM_DT_VALUE);
+ this->addInputSocket(COM_DT_VALUE);
this->addOutputSocket(COM_DT_VALUE);
this->screenBalance = 0.5f;
@@ -64,6 +65,7 @@
this->pixelReader = NULL;
this->screenReader = NULL;
this->garbageReader = NULL;
+ this->coreReader = NULL;
}
void KeyingOperation::initExecution()
@@ -71,6 +73,7 @@
this->pixelReader = this->getInputSocketReader(0);
this->screenReader = this->getInputSocketReader(1);
this->garbageReader = this->getInputSocketReader(2);
+ this->coreReader = this->getInputSocketReader(3);
}
void KeyingOperation::deinitExecution()
@@ -78,6 +81,7 @@
this->pixelReader = NULL;
this->screenReader = NULL;
this->garbageReader = NULL;
+ this->coreReader = NULL;
}
void KeyingOperation::executePixel(float *color, float x, float y,
PixelSampler sampler, MemoryBuffer *inputBuffers[])
@@ -85,10 +89,12 @@
float pixelColor[4];
float screenColor[4];
float garbageValue[4];
+ float coreValue[4];
this->pixelReader->read(pixelColor, x, y, sampler, inputBuffers);
this->screenReader->read(screenColor, x, y, sampler, inputBuffers);
this->garbageReader->read(garbageValue, x, y, sampler, inputBuffers);
+ this->coreReader->read(coreValue, x, y, sampler, inputBuffers);
int primary_channel = get_pixel_primary_channel(screenColor);
@@ -108,6 +114,8 @@
}
color[0] *= (1.0f - garbageValue[0]);
+
+ color[0] = MAX2(color[0], coreValue[0]);
}
bool KeyingOperation::determineDependingAreaOfInterest(rcti *input,
ReadBufferOperation *readOperation, rcti *output)
Modified:
trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.h
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.h
2012-06-15 11:44:23 UTC (rev 47947)
+++ trunk/blender/source/blender/compositor/operations/COM_KeyingOperation.h
2012-06-15 11:53:51 UTC (rev 47948)
@@ -39,6 +39,7 @@
SocketReader *pixelReader;
SocketReader *screenReader;
SocketReader *garbageReader;
+ SocketReader *coreReader;
float screenBalance;
Modified:
trunk/blender/source/blender/nodes/composite/nodes/node_composite_keying.c
===================================================================
--- trunk/blender/source/blender/nodes/composite/nodes/node_composite_keying.c
2012-06-15 11:44:23 UTC (rev 47947)
+++ trunk/blender/source/blender/nodes/composite/nodes/node_composite_keying.c
2012-06-15 11:53:51 UTC (rev 47948)
@@ -49,6 +49,7 @@
{ SOCK_RGBA, 1, "Image", 0.8f, 0.8f, 0.8f, 1.0f, 0.0f,
1.0f},
{ SOCK_RGBA, 1, "Key Color", 1.0f, 1.0f, 1.0f, 1.0f},
{ SOCK_FLOAT, 1, "Garbage Matte", 0.0f, 1.0f, 1.0f, 1.0f},
+ { SOCK_FLOAT, 1, "Core Matte", 0.0f, 1.0f, 1.0f, 1.0f},
{ -1, 0, "" }
};
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs