Revision: 47770
          
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47770
Author:   jbakker
Date:     2012-06-12 04:23:21 +0000 (Tue, 12 Jun 2012)
Log Message:
-----------
 * FIX for
   - [#31777] Border Crop gives black 
   - [#31768] Crash when connecting a Math node to a translate node in Tiles 
comp
   - [#31638] View node in new node compo system crashes when inside a group
 * make sure a very fast vignette can be made by using a EliipseMask + Fast 
Gaussian blur

Modified Paths:
--------------
    trunk/blender/source/blender/compositor/COM_defines.h
    trunk/blender/source/blender/compositor/intern/COM_CompositorContext.cpp
    trunk/blender/source/blender/compositor/intern/COM_CompositorContext.h
    trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.cpp
    trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp
    trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp
    trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.h
    trunk/blender/source/blender/compositor/intern/COM_Node.cpp
    trunk/blender/source/blender/compositor/intern/COM_Node.h
    trunk/blender/source/blender/compositor/intern/COM_NodeOperation.h
    trunk/blender/source/blender/compositor/intern/COM_OutputSocket.cpp
    trunk/blender/source/blender/compositor/nodes/COM_GroupNode.cpp
    trunk/blender/source/blender/compositor/nodes/COM_SplitViewerNode.cpp
    trunk/blender/source/blender/compositor/nodes/COM_ViewerNode.cpp
    
trunk/blender/source/blender/compositor/operations/COM_BokehBlurOperation.cpp
    
trunk/blender/source/blender/compositor/operations/COM_BokehImageOperation.cpp
    
trunk/blender/source/blender/compositor/operations/COM_CompositorOperation.cpp
    trunk/blender/source/blender/compositor/operations/COM_PreviewOperation.h
    
trunk/blender/source/blender/compositor/operations/COM_ReadBufferOperation.cpp
    trunk/blender/source/blender/compositor/operations/COM_ReadBufferOperation.h
    trunk/blender/source/blender/compositor/operations/COM_RotateOperation.cpp
    trunk/blender/source/blender/compositor/operations/COM_RotateOperation.h
    
trunk/blender/source/blender/compositor/operations/COM_SetVectorOperation.cpp
    
trunk/blender/source/blender/compositor/operations/COM_SocketProxyOperation.cpp
    
trunk/blender/source/blender/compositor/operations/COM_TranslateOperation.cpp
    trunk/blender/source/blender/compositor/operations/COM_TranslateOperation.h
    
trunk/blender/source/blender/compositor/operations/COM_VariableSizeBokehBlurOperation.cpp
    
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.cpp
    
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.h

Modified: trunk/blender/source/blender/compositor/COM_defines.h
===================================================================
--- trunk/blender/source/blender/compositor/COM_defines.h       2012-06-11 
23:16:41 UTC (rev 47769)
+++ trunk/blender/source/blender/compositor/COM_defines.h       2012-06-12 
04:23:21 UTC (rev 47770)
@@ -70,6 +70,7 @@
 // chunk size determination
 #define COM_PREVIEW_SIZE 140.0f
 //#define COM_OPENCL_ENABLED
+//#define COM_DEBUG
 
 // workscheduler threading models
 /**
@@ -106,7 +107,4 @@
 
 #define COM_NUMBER_OF_CHANNELS 4
 
-#define COM_DEFAULT_RESOLUTION_WIDTH 640
-#define COM_DEFAULT_RESOLUTION_HEIGHT 480
-
 #endif

Modified: 
trunk/blender/source/blender/compositor/intern/COM_CompositorContext.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_CompositorContext.cpp    
2012-06-11 23:16:41 UTC (rev 47769)
+++ trunk/blender/source/blender/compositor/intern/COM_CompositorContext.cpp    
2012-06-12 04:23:21 UTC (rev 47770)
@@ -29,6 +29,7 @@
        this->scene = NULL;
        this->quality = COM_QUALITY_HIGH;
        this->hasActiveOpenCLDevices = false;
+       this->activegNode = NULL;
 }
 
 const int CompositorContext::getFramenumber() const

Modified: trunk/blender/source/blender/compositor/intern/COM_CompositorContext.h
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_CompositorContext.h      
2012-06-11 23:16:41 UTC (rev 47769)
+++ trunk/blender/source/blender/compositor/intern/COM_CompositorContext.h      
2012-06-12 04:23:21 UTC (rev 47770)
@@ -63,6 +63,11 @@
          * @see ExecutionSystem
          */
        bNodeTree *bnodetree;
+       
+       /**
+        * @brief activegNode the group node that is currently being edited.
+        */
+       bNode *activegNode;
 
        /**
          * @brief does this system have active opencl devices?
@@ -101,6 +106,16 @@
        const bNodeTree * getbNodeTree() const {return this->bnodetree;}
 
        /**
+         * @brief set the active groupnode of the context
+         */
+       void setActivegNode(bNode *gnode) {this->activegNode = gnode;}
+
+       /**
+         * @brief get the active groupnode of the context
+         */
+       const bNode * getActivegNode() const {return this->activegNode;}
+
+       /**
          * @brief get the scene of the context
          */
        const Scene *getScene() const {return this->scene;}

Modified: trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.cpp       
2012-06-11 23:16:41 UTC (rev 47769)
+++ trunk/blender/source/blender/compositor/intern/COM_ExecutionGroup.cpp       
2012-06-12 04:23:21 UTC (rev 47770)
@@ -184,11 +184,8 @@
 void ExecutionGroup::determineResolution(unsigned int resolution[])
 {
        NodeOperation *operation = this->getOutputNodeOperation();
-       unsigned int preferredResolution[2];
-       preferredResolution[0] = 0;
-       preferredResolution[1] = 0;
-       operation->determineResolution(resolution, preferredResolution);
-       operation->setResolution(resolution);
+       resolution[0] = operation->getWidth();
+       resolution[1] = operation->getHeight();
        this->setResolution(resolution);
 }
 

Modified: trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp      
2012-06-11 23:16:41 UTC (rev 47769)
+++ trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp      
2012-06-12 04:23:21 UTC (rev 47770)
@@ -41,7 +41,14 @@
 
 ExecutionSystem::ExecutionSystem(bNodeTree *editingtree, bool rendering)
 {
-       this->context.setbNodeTree(editingtree);
+       context.setbNodeTree(editingtree);
+       bNode* gnode;
+       for (gnode = (bNode*)editingtree->nodes.first ; gnode ; gnode = 
(bNode*)gnode->next) {
+               if (gnode->type == NODE_GROUP && 
gnode->typeinfo->group_edit_get(gnode)) {
+                       context.setActivegNode(gnode);
+                       break;
+               }
+       }
 
        /* initialize the CompositorContext */
        if (rendering) {
@@ -55,25 +62,25 @@
 
        Node *mainOutputNode=NULL;
 
-       mainOutputNode = ExecutionSystemHelper::addbNodeTree(*this, 0, 
editingtree);
+       mainOutputNode = ExecutionSystemHelper::addbNodeTree(*this, 0, 
editingtree, NULL);
 
        if (mainOutputNode) {
                context.setScene((Scene*)mainOutputNode->getbNode()->id);
                this->convertToOperations();
                this->groupOperations(); /* group operations in ExecutionGroups 
*/
-               vector<ExecutionGroup*> executionGroups;
-               this->findOutputExecutionGroup(&executionGroups);
                unsigned int index;
                unsigned int resolution[2];
-               for (index = 0 ; index < executionGroups.size(); index ++) {
+               for (index = 0 ; index < this->groups.size(); index ++) {
                        resolution[0]=0;
                        resolution[1]=0;
-                       ExecutionGroup *executionGroup = executionGroups[index];
+                       ExecutionGroup *executionGroup = groups[index];
                        executionGroup->determineResolution(resolution);
                }
        }
 
-       if (G.f & G_DEBUG) ExecutionSystemHelper::debugDump(this);
+#ifdef COM_DEBUG
+       ExecutionSystemHelper::debugDump(this);
+#endif
 }
 
 ExecutionSystem::~ExecutionSystem()
@@ -180,11 +187,13 @@
                                        
writeoperation->setbNodeTree(this->getContext().getbNodeTree());
                                        this->addOperation(writeoperation);
                                        
ExecutionSystemHelper::addLink(this->getConnections(), fromsocket, 
writeoperation->getInputSocket(0));
+                                       
writeoperation->readResolutionFromInputSocket();
                                }
                                ReadBufferOperation *readoperation = new 
ReadBufferOperation();
                                
readoperation->setMemoryProxy(writeoperation->getMemoryProxy());
                                
connection->setFromSocket(readoperation->getOutputSocket());
                                
readoperation->getOutputSocket()->addConnection(connection);
+                               readoperation->readResolutionFromWriteBuffer();
                                this->addOperation(readoperation);
                        }
                }
@@ -207,9 +216,11 @@
                        
readoperation->setMemoryProxy(writeOperation->getMemoryProxy());
                        
connection->setFromSocket(readoperation->getOutputSocket());
                        
readoperation->getOutputSocket()->addConnection(connection);
+                       readoperation->readResolutionFromWriteBuffer();
                        this->addOperation(readoperation);
                }
                ExecutionSystemHelper::addLink(this->getConnections(), 
outputsocket, writeOperation->getInputSocket(0));
+               writeOperation->readResolutionFromInputSocket();
        }
 }
 
@@ -237,13 +248,22 @@
        // determine all resolutions of the operations (Width/Height)
        for (index = 0 ; index < this->operations.size(); index ++) {
                NodeOperation *operation = this->operations[index];
-               if (operation->isOutputOperation(context.isRendering())) {
+               if (operation->isOutputOperation(context.isRendering()) && 
!operation->isPreviewOperation()) {
                        unsigned int resolution[2] = {0,0};
                        unsigned int preferredResolution[2] = {0,0};
                        operation->determineResolution(resolution, 
preferredResolution);
                        operation->setResolution(resolution);
                }
        }
+       for (index = 0 ; index < this->operations.size(); index ++) {
+               NodeOperation *operation = this->operations[index];
+               if (operation->isOutputOperation(context.isRendering()) && 
operation->isPreviewOperation()) {
+                       unsigned int resolution[2] = {0,0};
+                       unsigned int preferredResolution[2] = {0,0};
+                       operation->determineResolution(resolution, 
preferredResolution);
+                       operation->setResolution(resolution);
+               }
+       }
 
        // add convert resolution operations when needed.
        for (index = 0 ; index < this->connections.size(); index ++) {

Modified: 
trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp
===================================================================
--- 
trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp    
    2012-06-11 23:16:41 UTC (rev 47769)
+++ 
trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp    
    2012-06-12 04:23:21 UTC (rev 47770)
@@ -35,16 +35,20 @@
 #include "COM_GroupNode.h"
 #include "COM_WriteBufferOperation.h"
 #include "COM_ReadBufferOperation.h"
+#include "COM_ViewerBaseOperation.h"
 
-Node *ExecutionSystemHelper::addbNodeTree(ExecutionSystem &system, int 
nodes_start, bNodeTree *tree)
+Node *ExecutionSystemHelper::addbNodeTree(ExecutionSystem &system, int 
nodes_start, bNodeTree * tree, bNode *groupnode)
 {
        vector<Node*>& nodes = system.getNodes();
        vector<SocketConnection*>& links = system.getConnections();
        Node *mainnode = NULL;
+       const bNode * activeGroupNode = system.getContext().getActivegNode();
+       bool isActiveGroup = activeGroupNode == groupnode;
+       
        /* add all nodes of the tree to the node list */
        bNode *node = (bNode*)tree->nodes.first;
        while (node != NULL) {
-               Node *execnode = addNode(nodes, node);
+               Node *execnode = addNode(nodes, node, isActiveGroup);
                if (node->type == CMP_NODE_COMPOSITE) {
                        mainnode = execnode;
                }
@@ -77,11 +81,12 @@
        nodes.push_back(node);
 }
 
-Node *ExecutionSystemHelper::addNode(vector<Node*>& nodes, bNode *bNode)
+Node *ExecutionSystemHelper::addNode(vector<Node*>& nodes, bNode *bNode, bool 
inActiveGroup)
 {
        Converter converter;
        Node * node;
        node = converter.convert(bNode);
+       node->setIsInActiveGroup(inActiveGroup);
        if (node != NULL) {
                addNode(nodes, node);
                return node;
@@ -232,7 +237,12 @@
                        printf("|");
                }
                if (operation->isViewerOperation()) {
-                       printf("Viewer");
+                       ViewerBaseOperation * viewer = 
(ViewerBaseOperation*)operation;
+                       if (viewer->isActiveViewerOutput()) {
+                               printf("Active viewer");
+                       } else {
+                               printf("Viewer");
+                       }
                }
                else if 
(operation->isOutputOperation(system->getContext().isRendering())) {
                        printf("Output");
@@ -249,6 +259,7 @@
                else {
                        printf("O_%p", operation);
                }
+               printf(" (%d,%d)", operation->getWidth(), 
operation->getHeight());
                tot2 = operation->getNumberOfOutputSockets();
                if (tot2 != 0) {
                        printf("|");

Modified: 
trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.h
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.h  
2012-06-11 23:16:41 UTC (rev 47769)
+++ trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.h  
2012-06-12 04:23:21 UTC (rev 47770)
@@ -48,7 +48,7 @@
          * @param tree bNodeTree to add
          * @return Node representing the "Compositor node" of the maintree. or 
NULL when a subtree is added
          */
-       static Node *addbNodeTree(ExecutionSystem &system, int nodes_start, 
bNodeTree * tree);
+       static Node *addbNodeTree(ExecutionSystem &system, int nodes_start, 
bNodeTree* tree, bNode *groupnode);
        
        /**

@@ Diff output truncated at 10240 characters. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to