Fix T84512: Crash if size input of Blur node is too large
Gaussian filter with a too large kernel doesn't make much sense. This commit caps the Gaussian function radius to MAX_GAUSSTAB_RADIUS. Reviewed By: sergey Maniphest Tasks: T84512 Differential Revision: https://developer.blender.org/D10122
This commit is contained in:
parent
61d1fd7e2f
commit
51c8d53a7d
Notes:
blender-bot
2023-02-14 07:17:43 +01:00
Referenced by issue #84512, Crash - Compositor. Depth pass in the "size" input socket of "Blur" node. Only Cycles.
|
@ -68,6 +68,7 @@ void GaussianAlphaXBlurOperation::updateGauss()
|
|||
if (this->m_distbuf_inv == nullptr) {
|
||||
updateSize();
|
||||
float rad = max_ff(m_size * m_data.sizex, 0.0f);
|
||||
rad = min_ff(rad, MAX_GAUSSTAB_RADIUS);
|
||||
m_filtersize = min_ii(ceil(rad), MAX_GAUSSTAB_RADIUS);
|
||||
|
||||
m_distbuf_inv = BlurBaseOperation::make_dist_fac_inverse(rad, m_filtersize, m_falloff);
|
||||
|
|
|
@ -60,6 +60,7 @@ void GaussianAlphaYBlurOperation::updateGauss()
|
|||
if (this->m_gausstab == nullptr) {
|
||||
updateSize();
|
||||
float rad = max_ff(m_size * m_data.sizey, 0.0f);
|
||||
rad = min_ff(rad, MAX_GAUSSTAB_RADIUS);
|
||||
m_filtersize = min_ii(ceil(rad), MAX_GAUSSTAB_RADIUS);
|
||||
|
||||
m_gausstab = BlurBaseOperation::make_gausstab(rad, m_filtersize);
|
||||
|
|
|
@ -66,6 +66,7 @@ void GaussianXBlurOperation::updateGauss()
|
|||
if (this->m_gausstab == nullptr) {
|
||||
updateSize();
|
||||
float rad = max_ff(m_size * m_data.sizex, 0.0f);
|
||||
rad = min_ff(rad, MAX_GAUSSTAB_RADIUS);
|
||||
m_filtersize = min_ii(ceil(rad), MAX_GAUSSTAB_RADIUS);
|
||||
|
||||
this->m_gausstab = BlurBaseOperation::make_gausstab(rad, m_filtersize);
|
||||
|
|
|
@ -65,6 +65,7 @@ void GaussianYBlurOperation::updateGauss()
|
|||
if (this->m_gausstab == nullptr) {
|
||||
updateSize();
|
||||
float rad = max_ff(m_size * m_data.sizey, 0.0f);
|
||||
rad = min_ff(rad, MAX_GAUSSTAB_RADIUS);
|
||||
m_filtersize = min_ii(ceil(rad), MAX_GAUSSTAB_RADIUS);
|
||||
|
||||
this->m_gausstab = BlurBaseOperation::make_gausstab(rad, m_filtersize);
|
||||
|
|
Loading…
Reference in New Issue