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:
authorHabib Gahbiche <habibgahbiche@gmail.com>2022-02-09 22:17:48 +0300
committerHabib Gahbiche <habibgahbiche@gmail.com>2022-02-21 01:00:44 +0300
commit1a0a22f95a22496dec2791441249265d553dc2d7 (patch)
treec519a09b3926817700b0da9ccc8d2c980ae7d22e /source/blender/compositor
parentde886884c07f1fcb5ad9473035cc2e471d3b13c8 (diff)
Fix T95413: Blur node size input crash
Bug was introduced in D12167. Reading input size from an input socket is not possible in tiled compositor before execution is initialized. A similar change was done for the base class, see BlurBaseOperation::init_data(). Reviewed by: Jeroen Bakker Differential Revision: https://developer.blender.org/D14067
Diffstat (limited to 'source/blender/compositor')
-rw-r--r--source/blender/compositor/operations/COM_GaussianBokehBlurOperation.cc22
1 files changed, 20 insertions, 2 deletions
diff --git a/source/blender/compositor/operations/COM_GaussianBokehBlurOperation.cc b/source/blender/compositor/operations/COM_GaussianBokehBlurOperation.cc
index db5f9c7c35d..49e761d6221 100644
--- a/source/blender/compositor/operations/COM_GaussianBokehBlurOperation.cc
+++ b/source/blender/compositor/operations/COM_GaussianBokehBlurOperation.cc
@@ -44,8 +44,10 @@ void GaussianBokehBlurOperation::init_data()
const float width = this->get_width();
const float height = this->get_height();
- if (!sizeavailable_) {
- update_size();
+ if(execution_model_ == eExecutionModel::FullFrame) {
+ if (!sizeavailable_) {
+ update_size();
+ }
}
radxf_ = size_ * (float)data_.sizex;
@@ -111,6 +113,22 @@ void GaussianBokehBlurOperation::update_gauss()
void GaussianBokehBlurOperation::execute_pixel(float output[4], int x, int y, void *data)
{
+ float result[4];
+ input_size_->read_sampled(result, 0, 0, PixelSampler::Nearest);
+ size_ = result[0];
+
+ const float width = this->get_width();
+ const float height = this->get_height();
+
+ radxf_ = size_ * (float)data_.sizex;
+ CLAMP(radxf_, 0.0f, width / 2.0f);
+
+ radyf_ = size_ * (float)data_.sizey;
+ CLAMP(radyf_, 0.0f, height / 2.0f);
+
+ radx_ = ceil(radxf_);
+ rady_ = ceil(radyf_);
+
float temp_color[4];
temp_color[0] = 0;
temp_color[1] = 0;