[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47770] trunk/blender/source/blender/ compositor: * FIX for
Jeroen Bakker
j.bakker at atmind.nl
Tue Jun 12 06:23:42 CEST 2012
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. @@
More information about the Bf-blender-cvs
mailing list