From 6b13203a9ca59c0b066327781e7fc3f4bd7dd9cf Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sat, 9 Jun 2012 17:15:38 +0000 Subject: Changes to keying nodes: - Replace FastGaussian blur with GaussianBokeh blur which should give better results. - Changes a bit formula of saturation which in some cases gives better result. Also included (commented out) original formula which was also checked by Brecht and which gave better result in some other cases. - Made clipping white/black temporal dependent, so hopefully it wouldn't destroy gradients on edges. --- .../operations/COM_KeyingClipOperation.h | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 source/blender/compositor/operations/COM_KeyingClipOperation.h (limited to 'source/blender/compositor/operations/COM_KeyingClipOperation.h') diff --git a/source/blender/compositor/operations/COM_KeyingClipOperation.h b/source/blender/compositor/operations/COM_KeyingClipOperation.h new file mode 100644 index 00000000000..1141e0b47ab --- /dev/null +++ b/source/blender/compositor/operations/COM_KeyingClipOperation.h @@ -0,0 +1,50 @@ +/* + * Copyright 2012, Blender Foundation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * Contributor: + * Jeroen Bakker + * Monique Dewanchand + * Sergey Sharybin + */ + +#ifndef _COM_KeyingClipOperation_h +#define _COM_KeyingClipOperation_h + +#include "COM_NodeOperation.h" + +/** + * Class with implementation of black/white clipping for keying node + */ +class KeyingClipOperation : public NodeOperation { +protected: + SocketReader *pixelReader; + float clipBlack; + float clipWhite; + +public: + KeyingClipOperation(); + + void initExecution(); + void deinitExecution(); + + void setClipBlack(float value) {this->clipBlack = value;} + void setClipWhite(float value) {this->clipWhite = value;} + + void executePixel(float *color, float x, float y, PixelSampler sampler, MemoryBuffer *inputBuffers[]); +}; + +#endif -- cgit v1.2.3 From b57403eebcf741fe72017ddebe268e1ed2e9d856 Mon Sep 17 00:00:00 2001 From: Sergey Sharybin Date: Sun, 10 Jun 2012 18:15:28 +0000 Subject: Make keying clamping operation complex so it might directly access input buffer Seems to give quite noticeable speedup, but there's sometimes strange artifacts showing as darker lines placed in along some kind of tiles. Not sure what causes them yet. --- source/blender/compositor/operations/COM_KeyingClipOperation.h | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'source/blender/compositor/operations/COM_KeyingClipOperation.h') diff --git a/source/blender/compositor/operations/COM_KeyingClipOperation.h b/source/blender/compositor/operations/COM_KeyingClipOperation.h index 1141e0b47ab..4eab7d6b0e3 100644 --- a/source/blender/compositor/operations/COM_KeyingClipOperation.h +++ b/source/blender/compositor/operations/COM_KeyingClipOperation.h @@ -31,20 +31,18 @@ */ class KeyingClipOperation : public NodeOperation { protected: - SocketReader *pixelReader; float clipBlack; float clipWhite; public: KeyingClipOperation(); - void initExecution(); - void deinitExecution(); - void setClipBlack(float value) {this->clipBlack = value;} void setClipWhite(float value) {this->clipWhite = value;} - void executePixel(float *color, float x, float y, PixelSampler sampler, MemoryBuffer *inputBuffers[]); + void *initializeTileData(rcti *rect, MemoryBuffer **memoryBuffers); + + void executePixel(float *color, int x, int y, MemoryBuffer *inputBuffers[], void *data); }; #endif -- cgit v1.2.3