Make FBO visual use premultiplied alpha 86/285486/1
authorEunki, Hong <eunkiki.hong@samsung.com>
Tue, 13 Dec 2022 11:33:16 +0000 (20:33 +0900)
committerEunki, Hong <eunkiki.hong@samsung.com>
Tue, 13 Dec 2022 11:33:16 +0000 (20:33 +0900)
Since FBO result use Premultiplied alpha texture,
make sure that FBO image use premultiplied alpha during render.

Change-Id: I376aac998b098cb871d67e6ada090a1870986565
Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp

index e8fb48e..5eb0e2c 100644 (file)
@@ -550,10 +550,19 @@ void SceneView::UpdateRenderTask()
         Property::Map imagePropertyMap;
         imagePropertyMap.Insert(Toolkit::Visual::Property::TYPE, Toolkit::Visual::IMAGE);
         imagePropertyMap.Insert(Toolkit::ImageVisual::Property::URL, imageUrl.GetUrl());
+        // To make sure this visual call LoadTexture API immediate.
+        imagePropertyMap.Insert(Toolkit::ImageVisual::Property::LOAD_POLICY, Toolkit::ImageVisual::LoadPolicy::IMMEDIATE);
+        imagePropertyMap.Insert(Toolkit::ImageVisual::Property::RELEASE_POLICY, Toolkit::ImageVisual::ReleasePolicy::DESTROYED);
         // To flip rendered scene without CameraActor::SetInvertYAxis() to avoid backface culling.
         imagePropertyMap.Insert(Toolkit::ImageVisual::Property::PIXEL_AREA, Vector4(0.0f, 1.0f, 1.0f, -1.0f));
         mVisual = Toolkit::VisualFactory::Get().CreateVisual(imagePropertyMap);
 
+        // Use premultiplied alpha when we use FBO
+        if(mVisual)
+        {
+          Toolkit::GetImplementation(mVisual).EnablePreMultipliedAlpha(true);
+        }
+
         Toolkit::DevelControl::RegisterVisual(*this, RENDERING_BUFFER, mVisual);
 
         mRenderTask.SetFrameBuffer(mFrameBuffer);