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. @@
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs