From: jmm Date: Fri, 18 Apr 2025 06:25:45 +0000 (+0900) Subject: Fix error of trying to edit blurred result when blur was skipped X-Git-Tag: dali_2.4.16~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7b5bae993906f1a940a49e154f1721c995499de4;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git Fix error of trying to edit blurred result when blur was skipped Change-Id: I2d739f6965f253a6e16bcdaca34b930ea242ef98 --- diff --git a/automated-tests/src/dali-toolkit/utc-Dali-RenderEffect.cpp b/automated-tests/src/dali-toolkit/utc-Dali-RenderEffect.cpp index 01e7293e36..56a98d5715 100644 --- a/automated-tests/src/dali-toolkit/utc-Dali-RenderEffect.cpp +++ b/automated-tests/src/dali-toolkit/utc-Dali-RenderEffect.cpp @@ -1054,8 +1054,14 @@ int UtcDaliRenderEffectBlurStrengthAnimation(void) effect.SetBlurOnce(true); effect.AddBlurStrengthAnimation(animation, AlphaFunction::BuiltinFunction::EASE_IN, TimePeriod(0, durationSeconds), 0.0f, 1.0f); // animation will not be added but cannot check + animation.Clear(); DALI_TEST_EQUALS(effect.GetBlurOnce(), true, TEST_LOCATION); + effect.SetBlurRadius(2u); + effect.AddBlurStrengthAnimation(animation, AlphaFunction::BuiltinFunction::EASE_IN, TimePeriod(0, durationSeconds), 0.0f, 1.0f); + // animation will not be added but cannot check + animation.Clear(); + END_TEST; } @@ -1118,7 +1124,13 @@ int UtcDaliRenderEffectBlurOpacityAnimation(void) effect.SetBlurOnce(true); effect.AddBlurOpacityAnimation(animation, AlphaFunction::BuiltinFunction::EASE_IN, TimePeriod(0, durationSeconds), 0.0f, 1.0f); // animation will not be added but cannot check + animation.Clear(); DALI_TEST_EQUALS(effect.GetBlurOnce(), true, TEST_LOCATION); + effect.SetBlurRadius(2u); + effect.AddBlurOpacityAnimation(animation, AlphaFunction::BuiltinFunction::EASE_IN, TimePeriod(0, durationSeconds), 0.0f, 1.0f); + // animation will not be added but cannot check + animation.Clear(); + END_TEST; } diff --git a/dali-toolkit/internal/controls/render-effects/background-blur-effect-impl.cpp b/dali-toolkit/internal/controls/render-effects/background-blur-effect-impl.cpp index 77f79f1947..ec243e6a7d 100644 --- a/dali-toolkit/internal/controls/render-effects/background-blur-effect-impl.cpp +++ b/dali-toolkit/internal/controls/render-effects/background-blur-effect-impl.cpp @@ -182,7 +182,7 @@ void BackgroundBlurEffectImpl::SetBlurOnce(bool blurOnce) { mBlurOnce = blurOnce; - if(IsActivated()) // if false, no render task exists yet(nothing to do) + if(!mSkipBlur && IsActivated()) // if false, no render task exists yet(nothing to do) { if(mBlurOnce) { @@ -210,7 +210,7 @@ void BackgroundBlurEffectImpl::SetBlurRadius(uint32_t blurRadius) { if(mBlurRadius != blurRadius) { - if(IsActivated()) + if(!mSkipBlur && IsActivated()) { OnDeactivate(); } @@ -228,7 +228,7 @@ void BackgroundBlurEffectImpl::SetBlurRadius(uint32_t blurRadius) OnInitialize(); - if(IsActivated()) + if(!mSkipBlur && IsActivated()) { OnActivate(); } @@ -242,6 +242,11 @@ uint32_t BackgroundBlurEffectImpl::GetBlurRadius() const void BackgroundBlurEffectImpl::AddBlurStrengthAnimation(Animation& animation, AlphaFunction alphaFunction, TimePeriod timePeriod, float fromValue, float toValue) { + if(DALI_UNLIKELY(mSkipBlur)) + { + DALI_LOG_ERROR("Blur radius is too small. Blur animation will be ignored."); + return; + } if(mBlurOnce) { DALI_LOG_ERROR("This blur effect is set to render only once, so the animation will be ignored. Call SetBlurOnce(false) to render it every frame."); @@ -263,6 +268,11 @@ void BackgroundBlurEffectImpl::AddBlurStrengthAnimation(Animation& animation, Al void BackgroundBlurEffectImpl::AddBlurOpacityAnimation(Animation& animation, AlphaFunction alphaFunction, TimePeriod timePeriod, float fromValue, float toValue) { + if(DALI_UNLIKELY(mSkipBlur)) + { + DALI_LOG_ERROR("Blur radius is too small. Blur animation will be ignored."); + return; + } if(mBlurOnce) { DALI_LOG_ERROR("This blur effect is set to render only once, so the animation will be ignored. Call SetBlurOnce(false) to render it every frame."); diff --git a/dali-toolkit/internal/graphics/shaders/blur-effect.frag b/dali-toolkit/internal/graphics/shaders/blur-effect.frag index 8ddfe964b6..d16d6e06b1 100644 --- a/dali-toolkit/internal/graphics/shaders/blur-effect.frag +++ b/dali-toolkit/internal/graphics/shaders/blur-effect.frag @@ -21,6 +21,6 @@ void main() { col += (TEXTURE(sTexture, vTexCoord + uSampleOffsets[i] * uAnimationRatio) + TEXTURE(sTexture, vTexCoord - uSampleOffsets[i] * uAnimationRatio)) * uSampleWeights[i]; } - col.w *= uOpacity; + col *= uOpacity; gl_FragColor = col; }