Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <j.bakker@atmind.nl>2012-05-16 13:49:16 +0400
committerJeroen Bakker <j.bakker@atmind.nl>2012-05-16 13:49:16 +0400
commitdacfa558250ee271f2a73d88781bfb9ce75a2bed (patch)
tree9392ab283fb39fe6915adc77541e9205500562b8
parentf829d9a0c83a5f17b25e140410fc0ff17df2a180 (diff)
TileBranch
* new image socket type support
-rw-r--r--source/blender/compositor/nodes/COM_ImageNode.cpp61
1 files changed, 32 insertions, 29 deletions
diff --git a/source/blender/compositor/nodes/COM_ImageNode.cpp b/source/blender/compositor/nodes/COM_ImageNode.cpp
index 65de890caa7..441d1f942f5 100644
--- a/source/blender/compositor/nodes/COM_ImageNode.cpp
+++ b/source/blender/compositor/nodes/COM_ImageNode.cpp
@@ -33,27 +33,25 @@ ImageNode::ImageNode(bNode *editorNode): Node(editorNode) {
NodeOperation* ImageNode::doMultilayerCheck(ExecutionSystem *system, RenderLayer* rl, Image* image, ImageUser* user, int framenumber, int outputsocketIndex, int pass, DataType datatype) {
OutputSocket *outputSocket = this->getOutputSocket(outputsocketIndex);
MultilayerBaseOperation * operation = NULL;
- if (outputSocket->isConnected()) {
- switch (datatype) {
- case COM_DT_VALUE:
- operation = new MultilayerValueOperation(pass);
- break;
- case COM_DT_VECTOR:
- operation = new MultilayerVectorOperation(pass);
- break;
- case COM_DT_COLOR:
- operation = new MultilayerColorOperation(pass);
- break;
- default:
- break;
- }
- operation->setImage(image);
- operation->setRenderLayer(rl);
- operation->setImageUser(user);
- operation->setFramenumber(framenumber);
- outputSocket->relinkConnections(operation->getOutputSocket());
- system->addOperation(operation);
+ switch (datatype) {
+ case COM_DT_VALUE:
+ operation = new MultilayerValueOperation(pass);
+ break;
+ case COM_DT_VECTOR:
+ operation = new MultilayerVectorOperation(pass);
+ break;
+ case COM_DT_COLOR:
+ operation = new MultilayerColorOperation(pass);
+ break;
+ default:
+ break;
}
+ operation->setImage(image);
+ operation->setRenderLayer(rl);
+ operation->setImageUser(user);
+ operation->setFramenumber(framenumber);
+ outputSocket->relinkConnections(operation->getOutputSocket());
+ system->addOperation(operation);
return operation;
}
@@ -152,18 +150,23 @@ void ImageNode::convertToOperations(ExecutionSystem *graph, CompositorContext *
if(image && image->type==IMA_TYPE_MULTILAYER) {
BKE_image_get_ibuf(image, imageuser);
if(image->rr) {
- RenderLayer *rl= (RenderLayer*)BLI_findlink(&image->rr->layers, imageuser->layer);
- if (rl) {
- OutputSocket * socket;
- int index;
- for (index = 0 ; index < numberOfOutputs ; index ++) {
- socket = this->getOutputSocket(index);
- if (socket->isConnected() || index == 0) {
- bNodeSocket *bnodeSocket = socket->getbNodeSocket();
- int passindex = GET_INT_FROM_POINTER(bnodeSocket->storage);
+ OutputSocket * socket;
+ int index;
+ for (index = 0 ; index < numberOfOutputs ; index ++) {
+ socket = this->getOutputSocket(index);
+ if (socket->isConnected() || index == 0) {
+ bNodeSocket *bnodeSocket = socket->getbNodeSocket();
+ NodeImageLayer *storage = (NodeImageLayer*)bnodeSocket->storage;
+ int passindex = storage->pass_index;
+ int layerindex = storage->layer_index;
+ RenderLayer *rl= (RenderLayer*)BLI_findlink(&image->rr->layers, layerindex);
+ if (rl) {
+
RenderPass *rpass = (RenderPass *)BLI_findlink(&rl->passes, passindex);
if (rpass) {
NodeOperation * operation = NULL;
+ imageuser->pass = passindex;
+ imageuser->layer = layerindex;
switch (rpass->channels) {
case 1:
operation = doMultilayerCheck(graph, rl, image, imageuser, framenumber, index, passindex, COM_DT_VALUE);