From cfc1d0c88aa174fe25c10cb81d281beec7d36b41 Mon Sep 17 00:00:00 2001 From: seungho baek Date: Mon, 12 Dec 2022 17:26:26 +0900 Subject: [PATCH] [Tizen] Fix opacity animation issue in 3D Change-Id: Id663f1254511bcb21df8d86b655f60bde969021f Signed-off-by: seungho baek --- dali/internal/event/rendering/renderer-impl.cpp | 1 + .../internal/update/rendering/scene-graph-renderer.cpp | 18 ++++++++++++++++++ dali/public-api/rendering/renderer.h | 9 +++++---- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/dali/internal/event/rendering/renderer-impl.cpp b/dali/internal/event/rendering/renderer-impl.cpp index bf68b0e..ee63ebc 100644 --- a/dali/internal/event/rendering/renderer-impl.cpp +++ b/dali/internal/event/rendering/renderer-impl.cpp @@ -80,6 +80,7 @@ DALI_ENUM_TO_STRING_TABLE_BEGIN(BLEND_MODE) DALI_ENUM_TO_STRING_WITH_SCOPE(BlendMode, AUTO) DALI_ENUM_TO_STRING_WITH_SCOPE(BlendMode, ON) DALI_ENUM_TO_STRING_WITH_SCOPE(BlendMode, ON_WITHOUT_CULL) + DALI_ENUM_TO_STRING_WITH_SCOPE(BlendMode, OFF_ONLY_OPAQUE) DALI_ENUM_TO_STRING_TABLE_END(BLEND_MODE) DALI_ENUM_TO_STRING_TABLE_BEGIN(BLEND_EQUATION) diff --git a/dali/internal/update/rendering/scene-graph-renderer.cpp b/dali/internal/update/rendering/scene-graph-renderer.cpp index 0036c92..33fe0c1 100644 --- a/dali/internal/update/rendering/scene-graph-renderer.cpp +++ b/dali/internal/update/rendering/scene-graph-renderer.cpp @@ -645,6 +645,24 @@ Renderer::OpacityType Renderer::GetOpacityType(BufferIndex updateBufferIndex, co break; } + case BlendMode::OFF_ONLY_OPAQUE: // the renderer should never use blending + { + // renderer should determine opacity using the actor color + float alpha = node.GetWorldColor(updateBufferIndex).a; + if(alpha <= FULLY_TRANSPARENT) + { + opacityType = Renderer::TRANSPARENT; + } + else if(alpha < FULLY_OPAQUE) + { + opacityType = Renderer::TRANSLUCENT; + } + else + { + opacityType = Renderer::OPAQUE; + } + break; + } case BlendMode::OFF: // the renderer should never use blending default: { diff --git a/dali/public-api/rendering/renderer.h b/dali/public-api/rendering/renderer.h index c19e514..541a673 100644 --- a/dali/public-api/rendering/renderer.h +++ b/dali/public-api/rendering/renderer.h @@ -62,10 +62,11 @@ namespace BlendMode */ enum Type { - OFF, ///< Blending is disabled. @SINCE_1_1.43 - AUTO, ///< Blending is enabled if there is alpha channel. This is the default mode. @SINCE_1_1.43 - ON, ///< Blending is enabled. @SINCE_1_1.43 - ON_WITHOUT_CULL ///< Blending is enabled, and don't cull the renderer @SINCE_2_0.43 + OFF, ///< Blending is disabled. @SINCE_1_1.43 + AUTO, ///< Blending is enabled if there is alpha channel. This is the default mode. @SINCE_1_1.43 + ON, ///< Blending is enabled. @SINCE_1_1.43 + ON_WITHOUT_CULL, ///< Blending is enabled, and don't cull the renderer @SINCE_2_0.43 + OFF_ONLY_OPAQUE }; } // namespace BlendMode -- 2.7.4