[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43175] branches/tile/source/blender/ compositor: Tile branch

Jeroen Bakker j.bakker at atmind.nl
Thu Jan 5 18:02:21 CET 2012


Revision: 43175
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43175
Author:   jbakker
Date:     2012-01-05 17:02:20 +0000 (Thu, 05 Jan 2012)
Log Message:
-----------
Tile branch
 * added the simple start (4star) glare operation
 * cleaned up the FogGlowImage operation.

In the trunk implementation there is an error in the formula when using the 'Quality' setting
low quality will create larger stars. In the new implementation all will be done in the high quality setting.

Modified Paths:
--------------
    branches/tile/source/blender/compositor/CMakeLists.txt
    branches/tile/source/blender/compositor/intern/COM_MemoryBuffer.cpp
    branches/tile/source/blender/compositor/intern/COM_MemoryBuffer.h
    branches/tile/source/blender/compositor/nodes/COM_GlareNode.cpp
    branches/tile/source/blender/compositor/operations/COM_FogGlowImageOperation.cpp
    branches/tile/source/blender/compositor/operations/COM_FogGlowImageOperation.h

Added Paths:
-----------
    branches/tile/source/blender/compositor/operations/COM_GlareBaseOperation.cpp
    branches/tile/source/blender/compositor/operations/COM_GlareBaseOperation.h
    branches/tile/source/blender/compositor/operations/COM_GlareSimpleStarOperation.cpp
    branches/tile/source/blender/compositor/operations/COM_GlareSimpleStarOperation.h

Modified: branches/tile/source/blender/compositor/CMakeLists.txt
===================================================================
--- branches/tile/source/blender/compositor/CMakeLists.txt	2012-01-05 17:00:05 UTC (rev 43174)
+++ branches/tile/source/blender/compositor/CMakeLists.txt	2012-01-05 17:02:20 UTC (rev 43175)
@@ -464,6 +464,10 @@
 	operations/COM_FogGlowImageOperation.h
 	operations/COM_GlareThresholdOperation.cpp
 	operations/COM_GlareThresholdOperation.h
+	operations/COM_GlareBaseOperation.cpp
+	operations/COM_GlareBaseOperation.h
+	operations/COM_GlareSimpleStarOperation.cpp
+	operations/COM_GlareSimpleStarOperation.h
 
 
 #Convert operations

Modified: branches/tile/source/blender/compositor/intern/COM_MemoryBuffer.cpp
===================================================================
--- branches/tile/source/blender/compositor/intern/COM_MemoryBuffer.cpp	2012-01-05 17:00:05 UTC (rev 43174)
+++ branches/tile/source/blender/compositor/intern/COM_MemoryBuffer.cpp	2012-01-05 17:02:20 UTC (rev 43175)
@@ -59,6 +59,11 @@
     this->datatype = COM_DT_COLOR;
 	this->chunkWidth = this->rect.xmax - this->rect.xmin;
 }
+MemoryBuffer* MemoryBuffer::duplicate() {
+	MemoryBuffer *result = new MemoryBuffer(this->memoryProxy, &this->rect);
+	memcpy(result->buffer, this->buffer, this->determineBufferSize()*4*sizeof(float));
+	return result;
+}
 
 MemoryBuffer::~MemoryBuffer() {
     if (this->buffer) {
@@ -114,6 +119,16 @@
         result[3] = 0.0f;
     }
 }
+void MemoryBuffer::writePixel(int x, int y, float color[4]) {
+	if (x>=this->rect.xmin && x < this->rect.xmax &&
+			y>=this->rect.ymin && y < this->rect.ymax) {
+		int offset = (this->chunkWidth*y+x)*4;
+		this->buffer[offset] = color[0];
+		this->buffer[offset+1] = color[1];
+		this->buffer[offset+2] = color[2];
+		this->buffer[offset+3] = color[3];
+	}
+}
 
 void MemoryBuffer::readCubic(float* result, float x, float y) {
     int x1 = floor(x);

Modified: branches/tile/source/blender/compositor/intern/COM_MemoryBuffer.h
===================================================================
--- branches/tile/source/blender/compositor/intern/COM_MemoryBuffer.h	2012-01-05 17:00:05 UTC (rev 43174)
+++ branches/tile/source/blender/compositor/intern/COM_MemoryBuffer.h	2012-01-05 17:02:20 UTC (rev 43175)
@@ -175,6 +175,7 @@
     }
 
     void read(float* result, int x, int y);
+	void writePixel(int x, int y, float color[4]);
     void readCubic(float* result, float x, float y);
 	void readEWA(float *result, float fx, float fy, float dx, float dy);
 
@@ -220,6 +221,7 @@
 	  */
 	int getHeight() const;
 
+	MemoryBuffer* duplicate();
 private:
     unsigned int determineBufferSize();
 };

Modified: branches/tile/source/blender/compositor/nodes/COM_GlareNode.cpp
===================================================================
--- branches/tile/source/blender/compositor/nodes/COM_GlareNode.cpp	2012-01-05 17:00:05 UTC (rev 43174)
+++ branches/tile/source/blender/compositor/nodes/COM_GlareNode.cpp	2012-01-05 17:02:20 UTC (rev 43175)
@@ -25,6 +25,7 @@
 #include "COM_FogGlowImageOperation.h"
 #include "COM_BokehBlurOperation.h"
 #include "COM_GlareThresholdOperation.h"
+#include "COM_GlareSimpleStarOperation.h"
 #include "COM_SetValueOperation.h"
 #include "COM_MixBlendOperation.h"
 
@@ -36,37 +37,66 @@
 	NodeGlare* glare = (NodeGlare*)node->storage;
 	
 	switch (glare->type) {
+	
 	default:
 	case 1: // fog glow
-		GlareThresholdOperation *thresholdOperation = new GlareThresholdOperation();
-		FogGlowImageOperation * kerneloperation = new FogGlowImageOperation();
-		BokehBlurOperation * bluroperation = new BokehBlurOperation();
-		SetValueOperation * valueoperation = new SetValueOperation();
-		SetValueOperation * mixvalueoperation = new SetValueOperation();
-		MixBlendOperation * mixoperation = new MixBlendOperation();
-		mixoperation->setResolutionInputSocketIndex(1);
-		this->getInputSocket(0)->relinkConnections(thresholdOperation->getInputSocket(0), true, 0, system);
-		addLink(system, thresholdOperation->getOutputSocket(), bluroperation->getInputSocket(0));
-		addLink(system, kerneloperation->getOutputSocket(), bluroperation->getInputSocket(1));
-		addLink(system, valueoperation->getOutputSocket(), bluroperation->getInputSocket(2));
-		addLink(system, mixvalueoperation->getOutputSocket(), mixoperation->getInputSocket(0));
-		addLink(system, bluroperation->getOutputSocket(), mixoperation->getInputSocket(2));
-		addLink(system, thresholdOperation->getInputSocket(0)->getConnection()->getFromSocket(), mixoperation->getInputSocket(1));
+		{
+			GlareThresholdOperation *thresholdOperation = new GlareThresholdOperation();
+			FogGlowImageOperation * kerneloperation = new FogGlowImageOperation();
+			BokehBlurOperation * bluroperation = new BokehBlurOperation();
+			SetValueOperation * valueoperation = new SetValueOperation();
+			SetValueOperation * mixvalueoperation = new SetValueOperation();
+			MixBlendOperation * mixoperation = new MixBlendOperation();
+			mixoperation->setResolutionInputSocketIndex(1);
+			this->getInputSocket(0)->relinkConnections(thresholdOperation->getInputSocket(0), true, 0, system);
+			addLink(system, thresholdOperation->getOutputSocket(), bluroperation->getInputSocket(0));
+			addLink(system, kerneloperation->getOutputSocket(), bluroperation->getInputSocket(1));
+			addLink(system, valueoperation->getOutputSocket(), bluroperation->getInputSocket(2));
+			addLink(system, mixvalueoperation->getOutputSocket(), mixoperation->getInputSocket(0));
+			addLink(system, bluroperation->getOutputSocket(), mixoperation->getInputSocket(2));
+			addLink(system, thresholdOperation->getInputSocket(0)->getConnection()->getFromSocket(), mixoperation->getInputSocket(1));
+	
+			thresholdOperation->setThreshold(glare->threshold);
+			bluroperation->setSize(0.003f*glare->size);
+			bluroperation->setQuality(context->getQuality());
+			valueoperation->setValue(1.0f);
+			mixvalueoperation->setValue(0.5f+glare->mix*0.5f);
+			this->getOutputSocket()->relinkConnections(mixoperation->getOutputSocket());
+	
+			system->addOperation(bluroperation);
+			system->addOperation(kerneloperation);
+			system->addOperation(thresholdOperation);
+			system->addOperation(mixvalueoperation);
+			system->addOperation(valueoperation);
+			system->addOperation(mixoperation);
+		}
+		break;
+		
+	case 0: // simple star
+		{
+			GlareThresholdOperation *thresholdOperation = new GlareThresholdOperation();
+			GlareSimpleStarOperation * glareoperation = new GlareSimpleStarOperation();
+			SetValueOperation * mixvalueoperation = new SetValueOperation();
+			MixBlendOperation * mixoperation = new MixBlendOperation();
 
-		thresholdOperation->setThreshold(glare->threshold);
-		bluroperation->setSize(0.003f*glare->size);
-		bluroperation->setQuality(context->getQuality());
-		valueoperation->setValue(1.0f);
-		mixvalueoperation->setValue(0.5f+glare->mix*0.5f);
-		this->getOutputSocket()->relinkConnections(mixoperation->getOutputSocket());
+			this->getInputSocket(0)->relinkConnections(thresholdOperation->getInputSocket(0), true, 0, system);
+			addLink(system, thresholdOperation->getOutputSocket(), glareoperation->getInputSocket(0));
+			addLink(system, mixvalueoperation->getOutputSocket(), mixoperation->getInputSocket(0));
+			addLink(system, glareoperation->getOutputSocket(), mixoperation->getInputSocket(2));
+			addLink(system, thresholdOperation->getInputSocket(0)->getConnection()->getFromSocket(), mixoperation->getInputSocket(1));
+			this->getOutputSocket()->relinkConnections(mixoperation->getOutputSocket());
 
-		system->addOperation(bluroperation);
-		system->addOperation(kerneloperation);
-		system->addOperation(thresholdOperation);
-		system->addOperation(mixvalueoperation);
-		system->addOperation(valueoperation);
-		system->addOperation(mixoperation);
+			thresholdOperation->setThreshold(glare->threshold);
+			glareoperation->setGlareSettings(glare);
+			mixvalueoperation->setValue(0.5f+glare->mix*0.5f);
+			mixoperation->setResolutionInputSocketIndex(1);
 
+
+			system->addOperation(glareoperation);
+			system->addOperation(thresholdOperation);
+			system->addOperation(mixvalueoperation);
+			system->addOperation(mixoperation);
+		}
 		break;
 	}
 }

Modified: branches/tile/source/blender/compositor/operations/COM_FogGlowImageOperation.cpp
===================================================================
--- branches/tile/source/blender/compositor/operations/COM_FogGlowImageOperation.cpp	2012-01-05 17:00:05 UTC (rev 43174)
+++ branches/tile/source/blender/compositor/operations/COM_FogGlowImageOperation.cpp	2012-01-05 17:02:20 UTC (rev 43175)
@@ -28,9 +28,6 @@
 FogGlowImageOperation::FogGlowImageOperation(): NodeOperation() {
 	this->addOutputSocket(COM_DT_COLOR);
 }
-void FogGlowImageOperation::initExecution() {
-}
-
 void FogGlowImageOperation::executePixel(float* color, float x, float y, MemoryBuffer *inputBuffers[]) {
 	const float cs_r = 1.f, cs_g = 1.f, cs_b = 1.f;
 
@@ -47,9 +44,6 @@
 	color[3] = 1.0f;
 }
 
-void FogGlowImageOperation::deinitExecution() {
-}
-
 void FogGlowImageOperation::determineResolution(unsigned int resolution[], unsigned int preferredResolution[]) {
 	resolution[0] = 512;
 	resolution[1] = 512;

Modified: branches/tile/source/blender/compositor/operations/COM_FogGlowImageOperation.h
===================================================================
--- branches/tile/source/blender/compositor/operations/COM_FogGlowImageOperation.h	2012-01-05 17:00:05 UTC (rev 43174)
+++ branches/tile/source/blender/compositor/operations/COM_FogGlowImageOperation.h	2012-01-05 17:02:20 UTC (rev 43175)
@@ -26,11 +26,6 @@
 #include "DNA_lamp_types.h"
 
 class FogGlowImageOperation : public NodeOperation {
-private:
-	/**
-	  * @brief Cached reference to the inputProgram
-	  */
-	SocketReader * inputProgram;
 public:
 	FogGlowImageOperation();
 	
@@ -39,16 +34,6 @@
 	  */
 	void executePixel(float* color, float x, float y, MemoryBuffer *inputBuffers[]);
 	
-	/**
-	  * Initialize the execution
-	  */
-	void initExecution();
-	
-	/**
-	  * Deinitialize the execution
-	  */
-	void deinitExecution();
-	
 	void determineResolution(unsigned int resolution[], unsigned int preferredResolution[]);
 };
 #endif

Added: branches/tile/source/blender/compositor/operations/COM_GlareBaseOperation.cpp
===================================================================

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-blender-cvs mailing list