diff options
author | Jeroen Bakker <j.bakker@atmind.nl> | 2014-03-27 00:08:58 +0400 |
---|---|---|
committer | Jeroen Bakker <j.bakker@atmind.nl> | 2014-03-27 00:11:54 +0400 |
commit | d9557d01bd2f724bc8995c916f91d66ef85d2faa (patch) | |
tree | cdc56512ff41db537d6141eb900503d0868b2fc8 /source | |
parent | fd3de8b04224711b1502e4acde33d5f772dde544 (diff) |
T39307: The fast gaussian blur is not an accurate formula. When deciding
which tiles are selected for input there was always a constant for correcting
the accuracy.
It seems that the constant was not enough and has been adjusted. (2 => 3).
Diffstat (limited to 'source')
-rw-r--r-- | source/blender/compositor/COM_defines.h | 9 | ||||
-rw-r--r-- | source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp | 5 |
2 files changed, 12 insertions, 2 deletions
diff --git a/source/blender/compositor/COM_defines.h b/source/blender/compositor/COM_defines.h index 3b0e9f239bb..6c07aadc3aa 100644 --- a/source/blender/compositor/COM_defines.h +++ b/source/blender/compositor/COM_defines.h @@ -109,4 +109,13 @@ typedef enum OrderOfChunks { #define COM_BLUR_BOKEH_PIXELS 512 +/** + * The fast gaussien blur is not an accurate blur. + * This setting can be used to increase/decrease the + * amount of the input data. (dependent area of interest) + * + * Fix for: T39307 + */ +#define COM_FAST_GAUSSIAN_MULTIPLIER 3 + #endif /* __COM_DEFINES_H__ */ diff --git a/source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp b/source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp index a6be9254f6f..ff53ef22e29 100644 --- a/source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp +++ b/source/blender/compositor/operations/COM_FastGaussianBlurOperation.cpp @@ -47,10 +47,11 @@ bool FastGaussianBlurOperation::getDAI(rcti *rect, rcti *output) { // m_data->sizex * m_size should be enough? For some reason there // seem to be errors in the boundary between tiles. - int sx = this->m_data->sizex * this->m_size * 2; + float size = this->m_size * COM_FAST_GAUSSIAN_MULTIPLIER; + int sx = this->m_data->sizex * size; if (sx < 1) sx = 1; - int sy = this->m_data->sizey * this->m_size * 2; + int sy = this->m_data->sizey * size; if (sy < 1) sy = 1; |