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:
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.
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue