[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48584] trunk/blender: Two pass execution:
Jeroen Bakker
j.bakker at atmind.nl
Wed Jul 4 13:39:29 CEST 2012
Revision: 48584
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48584
Author: jbakker
Date: 2012-07-04 11:39:28 +0000 (Wed, 04 Jul 2012)
Log Message:
-----------
Two pass execution:
1. first pass only fast nodes are calculated and only to the active
viewer node
2. second pass all nodes to all outputs
Temp disabled highlights because of random crashes.
Modified Paths:
--------------
trunk/blender/release/scripts/startup/bl_ui/space_node.py
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_Converter.cpp
trunk/blender/source/blender/compositor/intern/COM_Converter.h
trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp
trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.h
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_compositor.cpp
trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.cpp
trunk/blender/source/blender/makesdna/DNA_node_types.h
trunk/blender/source/blender/makesrna/intern/rna_nodetree.c
Modified: trunk/blender/release/scripts/startup/bl_ui/space_node.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_node.py 2012-07-04 10:01:45 UTC (rev 48583)
+++ trunk/blender/release/scripts/startup/bl_ui/space_node.py 2012-07-04 11:39:28 UTC (rev 48584)
@@ -233,9 +233,10 @@
layout.prop(tree, "edit_quality", text="Edit")
layout.prop(tree, "chunk_size")
layout.prop(tree, "use_opencl")
+ layout.prop(tree, "two_pass")
layout.prop(snode, "show_highlight")
+
-
class NODE_MT_node_color_presets(Menu):
"""Predefined node color"""
bl_label = "Color Presets"
Modified: trunk/blender/source/blender/compositor/intern/COM_CompositorContext.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_CompositorContext.cpp 2012-07-04 10:01:45 UTC (rev 48583)
+++ trunk/blender/source/blender/compositor/intern/COM_CompositorContext.cpp 2012-07-04 11:39:28 UTC (rev 48584)
@@ -30,6 +30,7 @@
this->m_quality = COM_QUALITY_HIGH;
this->m_hasActiveOpenCLDevices = false;
this->m_activegNode = NULL;
+ this->m_fastCalculation = false;
}
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-07-04 10:01:45 UTC (rev 48583)
+++ trunk/blender/source/blender/compositor/intern/COM_CompositorContext.h 2012-07-04 11:39:28 UTC (rev 48584)
@@ -73,6 +73,11 @@
* @brief does this system have active opencl devices?
*/
bool m_hasActiveOpenCLDevices;
+
+ /**
+ * @brief Skip slow nodes
+ */
+ bool m_fastCalculation;
public:
/**
@@ -148,6 +153,9 @@
int getChunksize() { return this->getbNodeTree()->chunksize; }
const int isColorManaged() const;
+
+ void setFastCalculation(bool fastCalculation) {this->m_fastCalculation = fastCalculation;}
+ bool isFastCalculation() {return this->m_fastCalculation;}
};
Modified: trunk/blender/source/blender/compositor/intern/COM_Converter.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_Converter.cpp 2012-07-04 10:01:45 UTC (rev 48583)
+++ trunk/blender/source/blender/compositor/intern/COM_Converter.cpp 2012-07-04 11:39:28 UTC (rev 48584)
@@ -117,7 +117,7 @@
#include "COM_ViewerNode.h"
#include "COM_ZCombineNode.h"
-Node *Converter::convert(bNode *b_node)
+Node *Converter::convert(bNode *b_node, bool fast)
{
Node *node;
@@ -125,6 +125,22 @@
node = new MuteNode(b_node);
return node;
}
+ if (fast) {
+ if (b_node->type == CMP_NODE_BLUR ||
+ b_node->type == CMP_NODE_VECBLUR ||
+ b_node->type == CMP_NODE_BILATERALBLUR ||
+ b_node->type == CMP_NODE_DEFOCUS ||
+ b_node->type == CMP_NODE_BOKEHBLUR ||
+ b_node->type == CMP_NODE_GLARE ||
+ b_node->type == CMP_NODE_DBLUR ||
+ b_node->type == CMP_NODE_MOVIEDISTORTION ||
+ b_node->type == CMP_NODE_LENSDIST ||
+ b_node->type == CMP_NODE_DOUBLEEDGEMASK ||
+ b_node->type == CMP_NODE_DILATEERODE)
+ {
+ return new MuteNode(b_node);
+ }
+ }
switch (b_node->type) {
case CMP_NODE_COMPOSITE:
Modified: trunk/blender/source/blender/compositor/intern/COM_Converter.h
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_Converter.h 2012-07-04 10:01:45 UTC (rev 48583)
+++ trunk/blender/source/blender/compositor/intern/COM_Converter.h 2012-07-04 11:39:28 UTC (rev 48584)
@@ -42,7 +42,7 @@
* @see Node
* @see MuteNode
*/
- static Node *convert(bNode *b_node);
+ static Node *convert(bNode *b_node, bool fast);
/**
* @brief This method will add a datetype conversion rule when the to-socket does not support the from-socket actual data type.
Modified: trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp 2012-07-04 10:01:45 UTC (rev 48583)
+++ trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.cpp 2012-07-04 11:39:28 UTC (rev 48584)
@@ -44,9 +44,10 @@
#include "MEM_guardedalloc.h"
#endif
-ExecutionSystem::ExecutionSystem(RenderData *rd, bNodeTree *editingtree, bool rendering)
+ExecutionSystem::ExecutionSystem(RenderData *rd, bNodeTree *editingtree, bool rendering, bool fastcalculation)
{
this->m_context.setbNodeTree(editingtree);
+ this->m_context.setFastCalculation(fastcalculation);
bNode *gnode;
for (gnode = (bNode *)editingtree->nodes.first; gnode; gnode = (bNode *)gnode->next) {
if (gnode->type == NODE_GROUP && gnode->typeinfo->group_edit_get(gnode)) {
@@ -137,8 +138,10 @@
WorkScheduler::start(this->m_context);
executeGroups(COM_PRIORITY_HIGH);
- executeGroups(COM_PRIORITY_MEDIUM);
- executeGroups(COM_PRIORITY_LOW);
+ if (!this->getContext().isFastCalculation()) {
+ executeGroups(COM_PRIORITY_MEDIUM);
+ executeGroups(COM_PRIORITY_LOW);
+ }
WorkScheduler::finish();
WorkScheduler::stop();
Modified: trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.h
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.h 2012-07-04 10:01:45 UTC (rev 48583)
+++ trunk/blender/source/blender/compositor/intern/COM_ExecutionSystem.h 2012-07-04 11:39:28 UTC (rev 48584)
@@ -156,7 +156,7 @@
* @param editingtree [bNodeTree*]
* @param rendering [true false]
*/
- ExecutionSystem(RenderData *rd, bNodeTree *editingtree, bool rendering);
+ ExecutionSystem(RenderData *rd, bNodeTree *editingtree, bool rendering, bool fastcalculation);
/**
* Destructor
Modified: trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp 2012-07-04 10:01:45 UTC (rev 48583)
+++ trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.cpp 2012-07-04 11:39:28 UTC (rev 48584)
@@ -49,7 +49,7 @@
/* add all nodes of the tree to the node list */
bNode *node = (bNode *)tree->nodes.first;
while (node != NULL) {
- addNode(nodes, node, isActiveGroup);
+ addNode(nodes, node, isActiveGroup, system.getContext().isFastCalculation());
node = (bNode *)node->next;
}
@@ -77,11 +77,11 @@
nodes.push_back(node);
}
-Node *ExecutionSystemHelper::addNode(vector<Node *>& nodes, bNode *b_node, bool inActiveGroup)
+Node *ExecutionSystemHelper::addNode(vector<Node *>& nodes, bNode *b_node, bool inActiveGroup, bool fast)
{
Converter converter;
Node *node;
- node = converter.convert(b_node);
+ node = converter.convert(b_node, fast);
node->setIsInActiveGroup(inActiveGroup);
if (node != NULL) {
addNode(nodes, node);
Modified: trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.h
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.h 2012-07-04 10:01:45 UTC (rev 48583)
+++ trunk/blender/source/blender/compositor/intern/COM_ExecutionSystemHelper.h 2012-07-04 11:39:28 UTC (rev 48584)
@@ -58,7 +58,7 @@
* @param bNode node to add
* @return Node that represents the bNode or null when not able to convert.
*/
- static Node *addNode(vector<Node *>& nodes, bNode *b_node, bool isInActiveGroup);
+ static Node *addNode(vector<Node *>& nodes, bNode *b_node, bool isInActiveGroup, bool fast);
/**
* @brief Add a Node to a list
Modified: trunk/blender/source/blender/compositor/intern/COM_compositor.cpp
===================================================================
--- trunk/blender/source/blender/compositor/intern/COM_compositor.cpp 2012-07-04 10:01:45 UTC (rev 48583)
+++ trunk/blender/source/blender/compositor/intern/COM_compositor.cpp 2012-07-04 11:39:28 UTC (rev 48584)
@@ -57,8 +57,23 @@
/* set progress bar to 0% and status to init compositing*/
editingtree->progress(editingtree->prh, 0.0);
+ bool twopass = (editingtree->flag&NTREE_TWO_PASS) > 0 || rendering;
/* initialize execution system */
- ExecutionSystem *system = new ExecutionSystem(rd, editingtree, rendering);
+ if (twopass) {
+ ExecutionSystem *system = new ExecutionSystem(rd, editingtree, rendering, twopass);
+ system->execute();
+ delete system;
+
+ if (editingtree->test_break(editingtree->tbh)) {
+ // during editing multiple calls to this method can be triggered.
+ // make sure one the last one will be doing the work.
+ BLI_mutex_unlock(&compositorMutex);
+ return;
+ }
+ }
+
+
+ ExecutionSystem *system = new ExecutionSystem(rd, editingtree, rendering, false);
system->execute();
delete system;
Modified: trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.cpp
===================================================================
--- trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.cpp 2012-07-04 10:01:45 UTC (rev 48583)
+++ trunk/blender/source/blender/compositor/operations/COM_WriteBufferOperation.cpp 2012-07-04 11:39:28 UTC (rev 48584)
@@ -64,7 +64,7 @@
float *buffer = memoryBuffer->getBuffer();
if (this->m_input->isComplex()) {
bNode* bnode = this->m_input->getbNode();
- if (bnode&& bnode->new_node) bnode->new_node->highlight++;
+// if (bnode&& bnode->new_node) bnode->new_node->highlight++;
void *data = this->m_input->initializeTileData(rect, memoryBuffers);
int x1 = rect->xmin;
@@ -90,7 +90,7 @@
this->m_input->deinitializeTileData(rect, memoryBuffers, data);
data = NULL;
}
- if (bnode&& bnode->new_node) bnode->new_node->highlight++;
+// if (bnode&& bnode->new_node) bnode->new_node->highlight++;
}
else {
int x1 = rect->xmin;
@@ -144,7 +144,7 @@
clMemToCleanUp->push_back(clOutputBuffer);
list<cl_kernel> *clKernelsToCleanUp = new list<cl_kernel>();
bNode* bnode = this->m_input->getbNode();
- if (bnode&& bnode->new_node) bnode->new_node->highlight++;
+// if (bnode&& bnode->new_node) bnode->new_node->highlight++;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list