Fix RenderEffectImpl::OnRefresh() to update target texture 29/324629/1
authorjmm <j0064423.lee@samsung.com>
Thu, 22 May 2025 02:18:10 +0000 (11:18 +0900)
committerjmm <j0064423.lee@samsung.com>
Thu, 22 May 2025 02:18:10 +0000 (11:18 +0900)
Change-Id: I4e2927ce83bd408677cbc75f67f271d787e07598

dali-toolkit/internal/controls/render-effects/background-blur-effect-impl.cpp
dali-toolkit/internal/controls/render-effects/gaussian-blur-effect-impl.cpp
dali-toolkit/internal/controls/render-effects/mask-effect-impl.cpp
dali-toolkit/internal/controls/render-effects/offscreen-rendering-impl.cpp
dali-toolkit/internal/controls/render-effects/offscreen-rendering-impl.h

index 8278a2d04a5ac5ad6e59fcb804e94ee77b076bfa..63ca76043460d7cdb01dcb9bee9768d0d26c7423 100644 (file)
@@ -407,6 +407,7 @@ void BackgroundBlurEffectImpl::OnRefresh()
   mVerticalBlurActor.SetProperty(Actor::Property::SIZE, Vector2(downsampledWidth, downsampledHeight));
 
   CreateFrameBuffers(ImageDimensions(downsampledWidth, downsampledHeight));
+  SetRendererTexture(GetTargetRenderer(), mBlurredOutputFrameBuffer);
 
   // Reset shader constants
   mHorizontalBlurActor.RegisterProperty(UNIFORM_BLUR_OFFSET_DIRECTION_NAME.data(), Vector2(1.0f, 0.0f) / downsampledWidth);
index a448bd4d96a4f56e1599e671768bd8767391e90a..be3481dacdfc68dfa52bb3f45508199c656bbf17 100644 (file)
@@ -389,6 +389,7 @@ void GaussianBlurEffectImpl::OnRefresh()
   mVerticalBlurActor.SetProperty(Actor::Property::SIZE, Vector2(downsampledWidth, downsampledHeight));
 
   CreateFrameBuffers(ImageDimensions(downsampledWidth, downsampledHeight));
+  SetRendererTexture(GetTargetRenderer(), mBlurredOutputFrameBuffer);
 
   // Reset shader constants
   mHorizontalBlurActor.RegisterProperty(UNIFORM_BLUR_OFFSET_DIRECTION_NAME.data(), Vector2(1.0f, 0.0f) / downsampledWidth);
index 83231b501dba5900a6dd8eb1526016b162144df3..5387bd7d61e47d12307248d157a98ac48d8256c7 100644 (file)
@@ -199,6 +199,16 @@ void MaskEffectImpl::OnRefresh()
 
   mMaskTargetRenderTask.SetFrameBuffer(mMaskTargetFrameBuffer);
   mMaskSourceRenderTask.SetFrameBuffer(mMaskSourceFrameBuffer);
+
+  TextureSet textureSet = TextureSet::New();
+
+  Texture maskSourceTexture = mMaskSourceFrameBuffer.GetColorTexture();
+  Texture maskTargetTexture = mMaskTargetFrameBuffer.GetColorTexture();
+
+  textureSet.SetTexture(maskSourceIndex, maskSourceTexture);
+  textureSet.SetTexture(maskTargetIndex, maskTargetTexture);
+
+  GetTargetRenderer().SetTextures(textureSet);
 }
 
 void MaskEffectImpl::CreateFrameBuffers(const ImageDimensions size)
index 7d73b48d356efe730ab60c85cb4f55bd85946402..f9574743f289671a764c85eace67e3edd8183534 100644 (file)
@@ -120,6 +120,7 @@ void OffScreenRenderingImpl::OnRefresh()
   mCamera.SetPerspectiveProjection(GetTargetSize());
 
   CreateFrameBuffer();
+  SetRendererTexture(GetTargetRenderer(), mFrameBuffer);
   mRenderTask.SetFrameBuffer(mFrameBuffer);
 }
 
index c000a21254579856710d5a3491e83400ac8ff1ba..c1e8d439a4fe55e7c82271e7c673e873146d3111 100644 (file)
@@ -53,6 +53,7 @@ public:
    * @param[in] type Defines whether effect is enabled or not, and its refresh rate
    */
   OffScreenRenderingImpl(DevelControl::OffScreenRenderingType type);
+
   /**
    * @brief Set OffScreenRenderingType explicitly
    * @param[in] type Defines whether effect is enabled or not, and its refresh rate
@@ -61,26 +62,31 @@ public:
 
   // @copydoc Dali::Toolkit::Internal::RenderEffectImpl::GetOffScreenRenderableType
   OffScreenRenderable::Type GetOffScreenRenderableType() override;
+
   // @copydoc Dali::Toolkit::Internal::RenderEffectImpl::GetOffScreenRenderTasks
   void GetOffScreenRenderTasks(std::vector<Dali::RenderTask>& tasks, bool isForward) override;
 
 protected:
   // @copydoc Dali::Toolkit::Internal::RenderEffectImpl::OnInitialize
   void OnInitialize() override;
+
   // @copydoc Dali::Toolkit::Internal::RenderEffectImpl::OnActivate
   void OnActivate() override;
+
   // @copydoc Dali::Toolkit::Internal::RenderEffectImpl::OnDeactivate
   void OnDeactivate() override;
+
   // @copydoc Dali::Toolkit::Internal::RenderEffectImpl::OnRefresh
   void OnRefresh() override;
 
 private:
   /**
-   * @brief Initializes off screen buffer to draw subtree
+   * @brief Initializes offscreen buffer to draw subtree
    */
   void CreateFrameBuffer();
+
   /**
-   * @brief
+   * @brief Destroys offscreen buffer
    */
   void DestroyFrameBuffer();
 
@@ -88,8 +94,9 @@ private:
    * @brief Initializes render task for offscreen rendering
    */
   void CreateRenderTask();
+
   /**
-   * @brief
+   * @brief Destroys render task for offscreen rendering
    */
   void DestroyRenderTask();