* Blur node had some irregularities at the edge of the screen

only visible when doing large size blurs.
 also solved the catcom/mitch filter that didn't work at low/medium quality

 PS never use BokehBlur Gausian filter as it is 99%+ identicat as non bokeh <= top for sergey- :)
This commit is contained in:
Jeroen Bakker
2012-06-11 08:28:04 +00:00
parent 31c8f4fbd3
commit 8a5252c1cb
4 changed files with 8 additions and 8 deletions

View File

@@ -45,9 +45,6 @@ void BlurNode::convertToOperations(ExecutionSystem *graph, CompositorContext * c
CompositorQuality quality = context->getQuality();
if (data->filtertype == R_FILTER_MITCH || data->filtertype == R_FILTER_CATROM) {
quality = COM_QUALITY_HIGH;
}
if (data->filtertype == R_FILTER_FAST_GAUSS) {
FastGaussianBlurOperation *operationfgb = new FastGaussianBlurOperation();
operationfgb->setData(data);

View File

@@ -131,10 +131,11 @@ void GaussianBokehBlurOperation::executePixel(float *color, int x, int y, Memory
maxy = min(maxy, inputBuffer->getRect()->ymax);
maxx = min(maxx, inputBuffer->getRect()->xmax);
int index = 0;
int index;
int step = QualityStepHelper::getStep();
int offsetadd = QualityStepHelper::getOffsetAdd();
for (int ny = miny ; ny < maxy ; ny +=step) {
index = ((ny-y)+this->rady) * (this->radx*2+1) + (minx-x+this->radx);
int bufferindex = ((minx - bufferstartx)*4)+((ny-bufferstarty)*4*bufferwidth);
for (int nx = minx ; nx < maxx ; nx +=step) {
float multiplyer = gausstab[index];

View File

@@ -93,12 +93,13 @@ void GaussianXBlurOperation::executePixel(float *color, int x, int y, MemoryBuff
maxy = min(maxy, inputBuffer->getRect()->ymax);
maxx = min(maxx, inputBuffer->getRect()->xmax);
int index = 0;
int index;
int step = getStep();
int offsetadd = getOffsetAdd();
int bufferindex = ((minx - bufferstartx)*4)+((miny-bufferstarty)*4*bufferwidth);
for (int nx = minx ; nx < maxx ; nx +=step) {
float multiplyer = gausstab[index++];
index = (nx-x)+this->rad;
float multiplyer = gausstab[index];
tempColor[0] += multiplyer * buffer[bufferindex];
tempColor[1] += multiplyer * buffer[bufferindex+1];
tempColor[2] += multiplyer * buffer[bufferindex+2];

View File

@@ -91,10 +91,11 @@ void GaussianYBlurOperation::executePixel(float *color, int x, int y, MemoryBuff
maxx = min(maxx, inputBuffer->getRect()->xmax);
int step = getStep();
int index = 0;
int index;
for (int ny = miny ; ny < maxy ; ny +=step) {
index = (ny-y)+this->rad;
int bufferindex = ((minx - bufferstartx)*4)+((ny-bufferstarty)*4*bufferwidth);
float multiplyer = gausstab[index++];
float multiplyer = gausstab[index];
tempColor[0] += multiplyer * buffer[bufferindex];
tempColor[1] += multiplyer * buffer[bufferindex+1];
tempColor[2] += multiplyer * buffer[bufferindex+2];