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
This commit is contained in:
Habib Gahbiche 2022-02-09 20:17:48 +01:00
parent de886884c0
commit 1a0a22f95a
Notes: blender-bot 2023-02-14 10:11:54 +01:00
Referenced by issue #96135, The last edited shape key  is being used over the basis key
Referenced by issue #95413, Blur node Size input crash under certain condition.
1 changed files with 20 additions and 2 deletions

View File

@ -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;