Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeroen Bakker <j.bakker@atmind.nl>2012-07-09 19:21:43 +0400
committerJeroen Bakker <j.bakker@atmind.nl>2012-07-09 19:21:43 +0400
commitbfe776cd1d1e9036bd389469d74984d6f5ce81fb (patch)
tree1f8b1b2975fb78b01d09672df8b258629faafe8a /source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp
parent0dafa97ea3f6d9662299579e5be1875cd28baaae (diff)
removed depth aware defocus
add blur to radius buffer
Diffstat (limited to 'source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp')
-rw-r--r--source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp b/source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp
index 8f0ebd9b8d2..6d9c980ea58 100644
--- a/source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp
+++ b/source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp
@@ -220,3 +220,66 @@ void FastGaussianBlurOperation::IIR_gauss(MemoryBuffer *src, float sigma, unsign
#undef YVV
}
+
+
+///
+FastGaussianBlurValueOperation::FastGaussianBlurValueOperation() : NodeOperation()
+{
+ this->addInputSocket(COM_DT_VALUE);
+ this->addOutputSocket(COM_DT_VALUE);
+ this->m_iirgaus = NULL;
+ this->m_inputprogram = NULL;
+ this->m_sigma = 1.0f;
+ setComplex(true);
+}
+
+void FastGaussianBlurValueOperation::executePixel(float *color, int x, int y, MemoryBuffer *inputBuffers[], void *data)
+{
+ MemoryBuffer *newData = (MemoryBuffer *)data;
+ newData->read(color, x, y);
+}
+
+bool FastGaussianBlurValueOperation::determineDependingAreaOfInterest(rcti *input, ReadBufferOperation *readOperation, rcti *output)
+{
+ rcti newInput;
+
+ if (this->m_iirgaus) {
+ return false;
+ }
+ else {
+ newInput.xmin = 0;
+ newInput.ymin = 0;
+ newInput.xmax = this->getWidth();
+ newInput.ymax = this->getHeight();
+ }
+ return NodeOperation::determineDependingAreaOfInterest(&newInput, readOperation, output);
+}
+
+void FastGaussianBlurValueOperation::initExecution()
+{
+ this->m_inputprogram = getInputSocketReader(0);
+ initMutex();
+}
+
+void FastGaussianBlurValueOperation::deinitExecution()
+{
+ if (this->m_iirgaus) {
+ delete this->m_iirgaus;
+ this->m_iirgaus = NULL;
+ }
+ deinitMutex();
+}
+
+void *FastGaussianBlurValueOperation::initializeTileData(rcti *rect, MemoryBuffer **memoryBuffers)
+{
+ lockMutex();
+ if (!this->m_iirgaus) {
+ MemoryBuffer *newBuf = (MemoryBuffer *)this->m_inputprogram->initializeTileData(rect, memoryBuffers);
+ MemoryBuffer *copy = newBuf->duplicate();
+ FastGaussianBlurOperation::IIR_gauss(copy, this->m_sigma, 0, 3);
+ this->m_iirgaus = copy;
+ }
+ unlockMutex();
+ return this->m_iirgaus;
+}
+