From: Eunki, Hong Date: Wed, 7 May 2025 01:05:37 +0000 (+0900) Subject: (Visual) Do not seperate shader by default transform usage X-Git-Tag: accepted/tizen/unified/20250509.015144~2^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3834c7874b821f11215a79d403740143532946d4;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git (Visual) Do not seperate shader by default transform usage We ignore the shared UBO at core side only if we call `RegisterVisualTransformUniform()`. So we don't seperate shader by the UBO registered statements anymore. Change-Id: Ie5abb93c84d61793bdb0d7863c912549fc594154 Signed-off-by: Eunki, Hong --- diff --git a/dali-toolkit/internal/visuals/animated-gradient/animated-gradient-visual.cpp b/dali-toolkit/internal/visuals/animated-gradient/animated-gradient-visual.cpp index 2b6a69b692..683a9ba5f9 100644 --- a/dali-toolkit/internal/visuals/animated-gradient/animated-gradient-visual.cpp +++ b/dali-toolkit/internal/visuals/animated-gradient/animated-gradient-visual.cpp @@ -464,9 +464,6 @@ void AnimatedGradientVisual::OnSetTransform() if(mImpl->mRenderer && mImpl->mTransformMapChanged) { mImpl->SetTransformUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); - - // TODO : We many need to less call it. - UpdateShader(); } } @@ -609,7 +606,7 @@ Shader AnimatedGradientVisual::GetOrCreateShader() VisualFactoryCache::ShaderType shaderType = GetShaderType(mGradientType, mUnitType, mSpreadType); - shader = mFactoryCache.GetShader(shaderType, mImpl->mTransformMapUsingDefault); + shader = mFactoryCache.GetShader(shaderType); if(!shader) { std::string tagUnit; @@ -666,7 +663,7 @@ Shader AnimatedGradientVisual::GetOrCreateShader() vert = "#define " + tagUnit + "\n" + SHADER_ANIMATED_GRADIENT_VISUAL_SHADER_VERT.data(); frag = "#define " + tagGrad + "\n" + "#define " + tagSpread + "\n" + SHADER_ANIMATED_GRADIENT_VISUAL_SHADER_FRAG.data(); - shader = mFactoryCache.GenerateAndSaveShader(shaderType, vert, frag, mImpl->mTransformMapUsingDefault); + shader = mFactoryCache.GenerateAndSaveShader(shaderType, vert, frag); } return shader; } diff --git a/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp b/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp index c27c5a348a..e1148cabb1 100644 --- a/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp +++ b/dali-toolkit/internal/visuals/animated-image/animated-image-visual.cpp @@ -1034,9 +1034,6 @@ void AnimatedImageVisual::OnSetTransform() if(mImpl->mRenderer && mImpl->mTransformMapChanged) { mImpl->SetTransformUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); - - // TODO : We many need to less call it. - UpdateShader(); } } @@ -1080,8 +1077,7 @@ Shader AnimatedImageVisual::GenerateShader() const .ApplyDefaultTextureWrapMode(defaultWrapMode) .EnableRoundedCorner(IsRoundedCornerRequired(), IsSquircleCornerRequired()) .EnableBorderline(IsBorderlineRequired()) - .EnableAlphaMaskingOnRendering(requiredAlphaMaskingOnRendering) - .UseDefaultTransform(mImpl->mTransformMapUsingDefault)); + .EnableAlphaMaskingOnRendering(requiredAlphaMaskingOnRendering)); } return shader; } diff --git a/dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp b/dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp index 8ce304b62b..d4ced58aec 100644 --- a/dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp +++ b/dali-toolkit/internal/visuals/animated-vector-image/animated-vector-image-visual.cpp @@ -563,9 +563,6 @@ void AnimatedVectorImageVisual::OnSetTransform() if(mImpl->mRenderer && mImpl->mTransformMapChanged) { mImpl->SetTransformUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); - - // TODO : We many need to less call it. - UpdateShader(); } if(IsOnScene()) @@ -949,8 +946,7 @@ Shader AnimatedVectorImageVisual::GenerateShader() const ImageVisualShaderFeature::FeatureBuilder() .EnableRoundedCorner(IsRoundedCornerRequired(), IsSquircleCornerRequired()) .EnableBorderline(IsBorderlineRequired()) - .SetTextureForFragmentShaderCheck(mUseNativeImage ? mImpl->mRenderer.GetTextures().GetTexture(0) : Dali::Texture()) - .UseDefaultTransform(mImpl->mTransformMapUsingDefault)); + .SetTextureForFragmentShaderCheck(mUseNativeImage ? mImpl->mRenderer.GetTextures().GetTexture(0) : Dali::Texture())); } return shader; } diff --git a/dali-toolkit/internal/visuals/arc/arc-visual.cpp b/dali-toolkit/internal/visuals/arc/arc-visual.cpp index 02b05d3e15..cbd1ccca73 100644 --- a/dali-toolkit/internal/visuals/arc/arc-visual.cpp +++ b/dali-toolkit/internal/visuals/arc/arc-visual.cpp @@ -201,18 +201,18 @@ void ArcVisual::OnInitialize() Shader shader; if(mCapType == DevelArcVisual::Cap::BUTT) { - shader = mFactoryCache.GetShader(VisualFactoryCache::ARC_BUTT_CAP_SHADER, mImpl->mTransformMapUsingDefault); + shader = mFactoryCache.GetShader(VisualFactoryCache::ARC_BUTT_CAP_SHADER); if(!shader) { - shader = mFactoryCache.GenerateAndSaveShader(VisualFactoryCache::ARC_BUTT_CAP_SHADER, Dali::Shader::GetVertexShaderPrefix() + SHADER_ARC_VISUAL_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_ARC_VISUAL_BUTT_CAP_SHADER_FRAG.data(), mImpl->mTransformMapUsingDefault); + shader = mFactoryCache.GenerateAndSaveShader(VisualFactoryCache::ARC_BUTT_CAP_SHADER, Dali::Shader::GetVertexShaderPrefix() + SHADER_ARC_VISUAL_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_ARC_VISUAL_BUTT_CAP_SHADER_FRAG.data()); } } else { - shader = mFactoryCache.GetShader(VisualFactoryCache::ARC_ROUND_CAP_SHADER, mImpl->mTransformMapUsingDefault); + shader = mFactoryCache.GetShader(VisualFactoryCache::ARC_ROUND_CAP_SHADER); if(!shader) { - shader = mFactoryCache.GenerateAndSaveShader(VisualFactoryCache::ARC_ROUND_CAP_SHADER, Dali::Shader::GetVertexShaderPrefix() + SHADER_ARC_VISUAL_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_ARC_VISUAL_ROUND_CAP_SHADER_FRAG.data(), mImpl->mTransformMapUsingDefault); + shader = mFactoryCache.GenerateAndSaveShader(VisualFactoryCache::ARC_ROUND_CAP_SHADER, Dali::Shader::GetVertexShaderPrefix() + SHADER_ARC_VISUAL_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_ARC_VISUAL_ROUND_CAP_SHADER_FRAG.data()); } } diff --git a/dali-toolkit/internal/visuals/border/border-visual.cpp b/dali-toolkit/internal/visuals/border/border-visual.cpp index 87b9245d41..7cf35601f8 100644 --- a/dali-toolkit/internal/visuals/border/border-visual.cpp +++ b/dali-toolkit/internal/visuals/border/border-visual.cpp @@ -167,9 +167,6 @@ void BorderVisual::OnSetTransform() if(mImpl->mRenderer && mImpl->mTransformMapChanged) { mImpl->SetTransformUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); - - // TODO : We many need to less call it. - UpdateShader(); } } @@ -195,18 +192,18 @@ Shader BorderVisual::GetBorderShader() Shader shader; if(mAntiAliasing) { - shader = mFactoryCache.GetShader(VisualFactoryCache::BORDER_SHADER_ANTI_ALIASING, mImpl->mTransformMapUsingDefault); + shader = mFactoryCache.GetShader(VisualFactoryCache::BORDER_SHADER_ANTI_ALIASING); if(!shader) { - shader = mFactoryCache.GenerateAndSaveShader(VisualFactoryCache::BORDER_SHADER_ANTI_ALIASING, Dali::Shader::GetVertexShaderPrefix() + SHADER_BORDER_VISUAL_ANTI_ALIASING_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_BORDER_VISUAL_ANTI_ALIASING_SHADER_FRAG.data(), mImpl->mTransformMapUsingDefault); + shader = mFactoryCache.GenerateAndSaveShader(VisualFactoryCache::BORDER_SHADER_ANTI_ALIASING, Dali::Shader::GetVertexShaderPrefix() + SHADER_BORDER_VISUAL_ANTI_ALIASING_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_BORDER_VISUAL_ANTI_ALIASING_SHADER_FRAG.data()); } } else { - shader = mFactoryCache.GetShader(VisualFactoryCache::BORDER_SHADER, mImpl->mTransformMapUsingDefault); + shader = mFactoryCache.GetShader(VisualFactoryCache::BORDER_SHADER); if(!shader) { - shader = mFactoryCache.GenerateAndSaveShader(VisualFactoryCache::BORDER_SHADER, Dali::Shader::GetVertexShaderPrefix() + SHADER_BORDER_VISUAL_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_BORDER_VISUAL_SHADER_FRAG.data(), mImpl->mTransformMapUsingDefault); + shader = mFactoryCache.GenerateAndSaveShader(VisualFactoryCache::BORDER_SHADER, Dali::Shader::GetVertexShaderPrefix() + SHADER_BORDER_VISUAL_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_BORDER_VISUAL_SHADER_FRAG.data()); } } diff --git a/dali-toolkit/internal/visuals/color/color-visual-shader-factory.cpp b/dali-toolkit/internal/visuals/color/color-visual-shader-factory.cpp index 394aa21fcb..1c2e6ce65c 100644 --- a/dali-toolkit/internal/visuals/color/color-visual-shader-factory.cpp +++ b/dali-toolkit/internal/visuals/color/color-visual-shader-factory.cpp @@ -94,8 +94,7 @@ FeatureBuilder::FeatureBuilder() : mColorRoundCorner(RoundedCorner::DISABLED), mColorBorderline(Borderline::DISABLED), mColorBlur(Blur::DISABLED), - mColorCutout(Cutout::DISABLED), - mUseDefaultTransform(true) + mColorCutout(Cutout::DISABLED) { } @@ -123,12 +122,6 @@ FeatureBuilder& FeatureBuilder::EnableCutout(bool enableCutout) return *this; } -FeatureBuilder& FeatureBuilder::UseDefaultTransform(bool useDefaultTransform) -{ - mUseDefaultTransform = useDefaultTransform; - return *this; -} - VisualFactoryCache::ShaderType FeatureBuilder::GetShaderType() const { VisualFactoryCache::ShaderType shaderType = VisualFactoryCache::COLOR_SHADER; @@ -214,11 +207,6 @@ void FeatureBuilder::GetFragmentShaderPrefixList(std::string& fragmentShaderPref } } -bool FeatureBuilder::IsDefaultTransformUsed() const -{ - return mUseDefaultTransform; -} - } // namespace ColorVisualShaderFeature ColorVisualShaderFactory::ColorVisualShaderFactory() @@ -233,7 +221,7 @@ Shader ColorVisualShaderFactory::GetShader(VisualFactoryCache& factoryCache, con { Shader shader; VisualFactoryCache::ShaderType shaderType = featureBuilder.GetShaderType(); - shader = factoryCache.GetShader(shaderType, featureBuilder.IsDefaultTransformUsed()); + shader = factoryCache.GetShader(shaderType); if(!shader) { @@ -245,7 +233,7 @@ Shader ColorVisualShaderFactory::GetShader(VisualFactoryCache& factoryCache, con std::string vertexShader = std::string(Dali::Shader::GetVertexShaderPrefix() + vertexShaderPrefixList + SHADER_COLOR_VISUAL_SHADER_VERT.data()); std::string fragmentShader = std::string(Dali::Shader::GetFragmentShaderPrefix() + fragmentShaderPrefixList + SHADER_COLOR_VISUAL_SHADER_FRAG.data()); - shader = factoryCache.GenerateAndSaveShader(shaderType, vertexShader, fragmentShader, featureBuilder.IsDefaultTransformUsed()); + shader = factoryCache.GenerateAndSaveShader(shaderType, vertexShader, fragmentShader); } return shader; } diff --git a/dali-toolkit/internal/visuals/color/color-visual-shader-factory.h b/dali-toolkit/internal/visuals/color/color-visual-shader-factory.h index 7f14287a17..81b56f46f8 100644 --- a/dali-toolkit/internal/visuals/color/color-visual-shader-factory.h +++ b/dali-toolkit/internal/visuals/color/color-visual-shader-factory.h @@ -90,20 +90,16 @@ public: FeatureBuilder& EnableBorderLine(bool enableBorderLine); FeatureBuilder& EnableBlur(bool enableBlur); FeatureBuilder& EnableCutout(bool enableCutout); - FeatureBuilder& UseDefaultTransform(bool useDefaultTransform); VisualFactoryCache::ShaderType GetShaderType() const; void GetVertexShaderPrefixList(std::string& vertexShaderPrefixList) const; void GetFragmentShaderPrefixList(std::string& fragmentShaderPrefixList) const; - bool IsDefaultTransformUsed() const; - private: RoundedCorner::Type mColorRoundCorner : 3; ///< Whether use rounded corner, or not. default as RoundedCorner::DISABLED Borderline::Type mColorBorderline : 2; ///< Whether use border line, or not. default as Borderline::DISABLED Blur::Type mColorBlur : 2; ///< Whether use blur, or not. default as Blur::DISABLED Cutout::Type mColorCutout : 2; ///< Whether use cutout, or not. default as Cutout::DISABLED - bool mUseDefaultTransform : 1; }; } // namespace ColorVisualShaderFeature diff --git a/dali-toolkit/internal/visuals/color/color-visual.cpp b/dali-toolkit/internal/visuals/color/color-visual.cpp index ac8419e437..75997326b6 100644 --- a/dali-toolkit/internal/visuals/color/color-visual.cpp +++ b/dali-toolkit/internal/visuals/color/color-visual.cpp @@ -210,9 +210,6 @@ void ColorVisual::OnSetTransform() if(mImpl->mRenderer && mImpl->mTransformMapChanged) { mImpl->SetTransformUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); - - // TODO : We many need to less call it. - UpdateShader(); } } @@ -261,8 +258,7 @@ Shader ColorVisual::GenerateShader() const .EnableBlur(IsBlurRequired()) .EnableBorderLine(IsBorderlineRequired()) .EnableRoundCorner(IsRoundedCornerRequired(), IsSquircleCornerRequired()) - .EnableCutout(IsCutoutRequired()) - .UseDefaultTransform(mImpl->mTransformMapUsingDefault)); + .EnableCutout(IsCutoutRequired())); return shader; } diff --git a/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp b/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp index 4a646e7e3b..1be5d9f195 100644 --- a/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp +++ b/dali-toolkit/internal/visuals/gradient/gradient-visual.cpp @@ -186,9 +186,6 @@ void GradientVisual::OnSetTransform() if(mImpl->mRenderer && mImpl->mTransformMapChanged) { mImpl->SetTransformUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); - - // TODO : We many need to less call it. - UpdateShader(); } } @@ -426,7 +423,7 @@ Shader GradientVisual::GenerateShader() const DALI_ASSERT_DEBUG(shaderTypeFlag < SHADER_TYPE_TABLE_COUNT && "Invalid gradient shader type generated!"); VisualFactoryCache::ShaderType shaderType = SHADER_TYPE_TABLE[shaderTypeFlag]; - Shader shader = mFactoryCache.GetShader(shaderType, mImpl->mTransformMapUsingDefault); + Shader shader = mFactoryCache.GetShader(shaderType); if(!shader) { std::string vertexShaderPrefixList; @@ -457,8 +454,7 @@ Shader GradientVisual::GenerateShader() const shader = mFactoryCache.GenerateAndSaveShader(shaderType, Dali::Shader::GetVertexShaderPrefix() + vertexShaderPrefixList + SHADER_GRADIENT_VISUAL_SHADER_VERT.data(), - Dali::Shader::GetFragmentShaderPrefix() + fragmentShaderPrefixList + SHADER_GRADIENT_VISUAL_SHADER_FRAG.data(), - mImpl->mTransformMapUsingDefault); + Dali::Shader::GetFragmentShaderPrefix() + fragmentShaderPrefixList + SHADER_GRADIENT_VISUAL_SHADER_FRAG.data()); } return shader; diff --git a/dali-toolkit/internal/visuals/image/image-visual-shader-factory.cpp b/dali-toolkit/internal/visuals/image/image-visual-shader-factory.cpp index 499481de67..fc28ac8373 100644 --- a/dali-toolkit/internal/visuals/image/image-visual-shader-factory.cpp +++ b/dali-toolkit/internal/visuals/image/image-visual-shader-factory.cpp @@ -96,7 +96,7 @@ Shader ImageVisualShaderFactory::GetShader(VisualFactoryCache& factoryCache, con shaderType = static_cast(static_cast(shaderType) + NATIVE_SHADER_TYPE_OFFSET); } - shader = factoryCache.GetShader(shaderType, featureBuilder.IsDefaultTransformUsed()); + shader = factoryCache.GetShader(shaderType); if(shader) { return shader; @@ -135,7 +135,7 @@ Shader ImageVisualShaderFactory::GetShader(VisualFactoryCache& factoryCache, con if(mFragmentShaderNeedChange == ImageVisualShaderFeature::ChangeFragmentShader::DONT_CHANGE) { shaderType = static_cast(static_cast(shaderType) - NATIVE_SHADER_TYPE_OFFSET); - shader = factoryCache.GetShader(shaderType, featureBuilder.IsDefaultTransformUsed()); + shader = factoryCache.GetShader(shaderType); } } } @@ -145,7 +145,7 @@ Shader ImageVisualShaderFactory::GetShader(VisualFactoryCache& factoryCache, con return shader; } - shader = factoryCache.GenerateAndSaveShader(shaderType, vertexShader, fragmentShader, featureBuilder.IsDefaultTransformUsed()); + shader = factoryCache.GenerateAndSaveShader(shaderType, vertexShader, fragmentShader); shader.ReserveCustomProperties(CUSTOM_PROPERTY_COUNT + ((featureBuilder.IsEnabledAlphaMaskingOnRendering() ? 1 : 0))); diff --git a/dali-toolkit/internal/visuals/image/image-visual-shader-feature-builder.cpp b/dali-toolkit/internal/visuals/image/image-visual-shader-feature-builder.cpp index 8f16104900..2ea9c58a23 100644 --- a/dali-toolkit/internal/visuals/image/image-visual-shader-feature-builder.cpp +++ b/dali-toolkit/internal/visuals/image/image-visual-shader-feature-builder.cpp @@ -77,7 +77,6 @@ FeatureBuilder::FeatureBuilder() mBorderline(Borderline::DISABLED), mAlphaMaskingOnRendering(AlphaMaskingOnRendering::DISABLED), mColorConversion(ColorConversion::DONT_NEED), - mUseDefaultTransform(true), mTexture() { } @@ -124,12 +123,6 @@ FeatureBuilder& FeatureBuilder::EnableYuvToRgb(bool enableYuvToRgb, bool enableU return *this; } -FeatureBuilder& FeatureBuilder::UseDefaultTransform(bool useDefaultTransform) -{ - mUseDefaultTransform = useDefaultTransform; - return *this; -} - VisualFactoryCache::ShaderType FeatureBuilder::GetShaderType() const { VisualFactoryCache::ShaderType shaderType = VisualFactoryCache::IMAGE_SHADER; @@ -261,11 +254,6 @@ bool FeatureBuilder::IsEnabledAlphaMaskingOnRendering() const return mAlphaMaskingOnRendering == AlphaMaskingOnRendering::ENABLED; } -bool FeatureBuilder::IsDefaultTransformUsed() const -{ - return mUseDefaultTransform; -} - } // namespace ImageVisualShaderFeature } // namespace Internal diff --git a/dali-toolkit/internal/visuals/image/image-visual-shader-feature-builder.h b/dali-toolkit/internal/visuals/image/image-visual-shader-feature-builder.h index 60bf42d267..0fe9654c66 100644 --- a/dali-toolkit/internal/visuals/image/image-visual-shader-feature-builder.h +++ b/dali-toolkit/internal/visuals/image/image-visual-shader-feature-builder.h @@ -144,8 +144,6 @@ public: FeatureBuilder& EnableYuvToRgb(bool enableYuvToRgb, bool enableUnifiedYuvAndRgb = false); - FeatureBuilder& UseDefaultTransform(bool useDefaultTransform); - VisualFactoryCache::ShaderType GetShaderType() const; ChangeFragmentShader::Type NeedToChangeFragmentShader() const; @@ -156,7 +154,6 @@ public: Dali::Texture GetTexture() const; bool IsEnabledAlphaMaskingOnRendering() const; - bool IsDefaultTransformUsed() const; private: TextureAtlas::Type mTextureAtlas : 2; ///< Whether use texture with atlas, or not. default as TextureAtlas::DISABLED @@ -165,8 +162,8 @@ private: Borderline::Type mBorderline : 2; ///< Whether use borderline, or not. default as Borderline::DISABLED AlphaMaskingOnRendering::Type mAlphaMaskingOnRendering : 2; ///< Whether use runtime alpha masking, or not. default as AlphaMaskingOnRendering::DISABLED ColorConversion::Type mColorConversion : 2; ///< Whether the color format conversion is needed or not - bool mUseDefaultTransform : 1; - Dali::Texture mTexture; ///< Texture to check whether we need to change fragment shader or not + + Dali::Texture mTexture; ///< Texture to check whether we need to change fragment shader or not }; } // namespace ImageVisualShaderFeature diff --git a/dali-toolkit/internal/visuals/image/image-visual.cpp b/dali-toolkit/internal/visuals/image/image-visual.cpp index 9b768a9c21..23b93b4d8e 100644 --- a/dali-toolkit/internal/visuals/image/image-visual.cpp +++ b/dali-toolkit/internal/visuals/image/image-visual.cpp @@ -1102,9 +1102,6 @@ void ImageVisual::OnSetTransform() if(mImpl->mRenderer && mImpl->mTransformMapChanged) { mImpl->SetTransformUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); - - // TODO : We many need to less call it. - UpdateShader(); } if(mUseSynchronousSizing) @@ -1415,8 +1412,7 @@ Shader ImageVisual::GenerateShader() const .EnableBorderline(IsBorderlineRequired()) .SetTextureForFragmentShaderCheck(useNativeImage ? mNativeTexture : Dali::Texture()) .EnableAlphaMaskingOnRendering(requiredAlphaMaskingOnRendering) - .EnableYuvToRgb(mNeedYuvToRgb, mNeedUnifiedYuvAndRgb) - .UseDefaultTransform(mImpl->mTransformMapUsingDefault)); + .EnableYuvToRgb(mNeedYuvToRgb, mNeedUnifiedYuvAndRgb)); } else { diff --git a/dali-toolkit/internal/visuals/mesh/mesh-visual.cpp b/dali-toolkit/internal/visuals/mesh/mesh-visual.cpp index dd2201c22f..bf100635aa 100644 --- a/dali-toolkit/internal/visuals/mesh/mesh-visual.cpp +++ b/dali-toolkit/internal/visuals/mesh/mesh-visual.cpp @@ -239,25 +239,6 @@ void MeshVisual::OnSetTransform() if(mImpl->mRenderer && mImpl->mTransformMapChanged) { mImpl->SetTransformUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); - - // TODO : We many need to less call it. - UpdateShader(); - } -} - -void MeshVisual::UpdateShader() -{ - if(mImpl->mRenderer) - { - if(!mImpl->mTransformMapUsingDefault) - { - // Unregister default uniform blocks if transform changed. - if(DALI_LIKELY(Dali::Adaptor::IsAvailable()) && mShader) - { - mFactoryCache.GetDefaultUniformBlock().DisconnectFromShader(mShader); - } - mImpl->mRenderer.RegisterVisualTransformUniform(); - } } } @@ -323,10 +304,7 @@ void MeshVisual::OnInitialize() } mImpl->mRenderer = VisualRenderer::New(mGeometry, mShader); - if(DALI_LIKELY(Dali::Adaptor::IsAvailable()) && mImpl->mTransformMapUsingDefault) - { - mFactoryCache.GetDefaultUniformBlock().ConnectToShader(mShader); - } + mImpl->mRenderer.RegisterVisualTransformUniform(); mImpl->mRenderer.SetTextures(mTextureSet); mImpl->mRenderer.SetProperty(Renderer::Property::DEPTH_WRITE_MODE, DepthWriteMode::ON); mImpl->mRenderer.SetProperty(Renderer::Property::DEPTH_TEST_MODE, DepthTestMode::ON); diff --git a/dali-toolkit/internal/visuals/mesh/mesh-visual.h b/dali-toolkit/internal/visuals/mesh/mesh-visual.h index 8158ca9e07..098978a3d6 100644 --- a/dali-toolkit/internal/visuals/mesh/mesh-visual.h +++ b/dali-toolkit/internal/visuals/mesh/mesh-visual.h @@ -108,11 +108,6 @@ protected: */ void OnSetTransform() override; - /** - * @copydoc Visual::Base::UpdateShader - */ - void UpdateShader() override; - private: /** * @brief Provide an empty geometry for the visual to use. diff --git a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp index 68a65d87be..44fdcb2510 100644 --- a/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp +++ b/dali-toolkit/internal/visuals/npatch/npatch-visual.cpp @@ -275,9 +275,6 @@ void NPatchVisual::OnSetTransform() if(mImpl->mRenderer && mImpl->mTransformMapChanged) { mImpl->SetTransformUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); - - // TODO : We many need to less call it. - UpdateShader(); } } @@ -467,10 +464,10 @@ Shader NPatchVisual::CreateShader() if(DALI_LIKELY((xStretchCount == 1 && yStretchCount == 1) || (xStretchCount == 0 && yStretchCount == 0))) { - shader = mFactoryCache.GetShader(shaderType, mImpl->mTransformMapUsingDefault); + shader = mFactoryCache.GetShader(shaderType); if(DALI_UNLIKELY(!shader)) { - shader = mFactoryCache.GenerateAndSaveShader(shaderType, SHADER_NPATCH_VISUAL_3X3_SHADER_VERT, fragmentShader, mImpl->mTransformMapUsingDefault); + shader = mFactoryCache.GenerateAndSaveShader(shaderType, SHADER_NPATCH_VISUAL_3X3_SHADER_VERT, fragmentShader); } } else if(xStretchCount > 0 || yStretchCount > 0) diff --git a/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp b/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp index 51da673d6e..57e6552bcd 100644 --- a/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp +++ b/dali-toolkit/internal/visuals/primitive/primitive-visual.cpp @@ -365,25 +365,6 @@ void PrimitiveVisual::OnSetTransform() if(mImpl->mRenderer && mImpl->mTransformMapChanged) { mImpl->SetTransformUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); - - // TODO : We many need to less call it. - UpdateShader(); - } -} - -void PrimitiveVisual::UpdateShader() -{ - if(mImpl->mRenderer) - { - if(!mImpl->mTransformMapUsingDefault) - { - // Unregister default uniform blocks if transform changed. - if(DALI_LIKELY(Dali::Adaptor::IsAvailable()) && mShader) - { - mFactoryCache.GetDefaultUniformBlock().DisconnectFromShader(mShader); - } - mImpl->mRenderer.RegisterVisualTransformUniform(); - } } } @@ -400,10 +381,7 @@ void PrimitiveVisual::OnInitialize() } mImpl->mRenderer = VisualRenderer::New(mGeometry, mShader); - if(mImpl->mTransformMapUsingDefault) - { - mFactoryCache.GetDefaultUniformBlock().ConnectToShader(mShader); - } + mImpl->mRenderer.RegisterVisualTransformUniform(); mImpl->mRenderer.SetProperty(Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::BACK); mImpl->SetTransformUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); } diff --git a/dali-toolkit/internal/visuals/primitive/primitive-visual.h b/dali-toolkit/internal/visuals/primitive/primitive-visual.h index e50d313252..e56d8d7d27 100644 --- a/dali-toolkit/internal/visuals/primitive/primitive-visual.h +++ b/dali-toolkit/internal/visuals/primitive/primitive-visual.h @@ -155,11 +155,6 @@ protected: */ void OnSetTransform() override; - /** - * @copydoc Visual::Base::UpdateShader - */ - void UpdateShader() override; - private: //Simple struct to store the position and normal of a single vertex. struct Vertex diff --git a/dali-toolkit/internal/visuals/svg/svg-visual.cpp b/dali-toolkit/internal/visuals/svg/svg-visual.cpp index 59136b83a4..e74b8e4ab7 100644 --- a/dali-toolkit/internal/visuals/svg/svg-visual.cpp +++ b/dali-toolkit/internal/visuals/svg/svg-visual.cpp @@ -497,9 +497,6 @@ void SvgVisual::OnSetTransform() if(mImpl->mRenderer && mImpl->mTransformMapChanged) { mImpl->SetTransformUniforms(mImpl->mRenderer, Direction::LEFT_TO_RIGHT); - - // TODO : We many need to less call it. - UpdateShader(); } if(IsOnScene() && !mLoadFailed) @@ -547,8 +544,7 @@ Shader SvgVisual::GenerateShader() const ImageVisualShaderFeature::FeatureBuilder() .EnableTextureAtlas(mImpl->mFlags & Visual::Base::Impl::IS_ATLASING_APPLIED) .EnableRoundedCorner(IsRoundedCornerRequired(), IsSquircleCornerRequired()) - .EnableBorderline(IsBorderlineRequired()) - .UseDefaultTransform(mImpl->mTransformMapUsingDefault)); + .EnableBorderline(IsBorderlineRequired())); } else { diff --git a/dali-toolkit/internal/visuals/text/text-visual-shader-factory.cpp b/dali-toolkit/internal/visuals/text/text-visual-shader-factory.cpp index e0b5a1af44..d4964d1aef 100644 --- a/dali-toolkit/internal/visuals/text/text-visual-shader-factory.cpp +++ b/dali-toolkit/internal/visuals/text/text-visual-shader-factory.cpp @@ -167,7 +167,7 @@ Shader TextVisualShaderFactory::GetShader(VisualFactoryCache& factoryCache, cons { Shader shader; VisualFactoryCache::ShaderType shaderType = featureBuilder.GetShaderType(); - shader = factoryCache.GetShader(shaderType, false); + shader = factoryCache.GetShader(shaderType); if(!shader) { @@ -179,7 +179,7 @@ Shader TextVisualShaderFactory::GetShader(VisualFactoryCache& factoryCache, cons std::string vertexShader = std::string(Dali::Shader::GetVertexShaderPrefix() + vertexShaderPrefixList + SHADER_TEXT_VISUAL_SHADER_VERT.data()); std::string fragmentShader = std::string(Dali::Shader::GetFragmentShaderPrefix() + fragmentShaderPrefixList + SHADER_TEXT_VISUAL_SHADER_FRAG.data()); - shader = factoryCache.GenerateAndSaveShader(shaderType, vertexShader, fragmentShader, false); + shader = factoryCache.GenerateAndSaveShader(shaderType, vertexShader, fragmentShader); } return shader; } diff --git a/dali-toolkit/internal/visuals/visual-base-impl.cpp b/dali-toolkit/internal/visuals/visual-base-impl.cpp index 59a91113e2..d61c1e46e5 100644 --- a/dali-toolkit/internal/visuals/visual-base-impl.cpp +++ b/dali-toolkit/internal/visuals/visual-base-impl.cpp @@ -247,7 +247,7 @@ void Visual::Base::SetProperties(const Property::Map& propertyMap) // Unusual case. SetProperty called after OnInitialize(). // Assume that DoAction call UPDATE_PROPERTY. mImpl->mTransformMapChanged |= !map.Empty(); - if(mImpl->mTransformMapChanged) + if(mImpl->mTransformMapChanged && mImpl->mTransformMapUsingDefault) { mImpl->mTransformMapUsingDefault = false; mImpl->mRenderer.RegisterVisualTransformUniform(); @@ -537,7 +537,7 @@ void Visual::Base::SetTransformAndSize(const Property::Map& transform, Size cont { mImpl->mControlSize = controlSize; mImpl->mTransformMapChanged |= !transform.Empty(); - if(mImpl->mTransformMapChanged) + if(mImpl->mTransformMapChanged && mImpl->mTransformMapUsingDefault) { mImpl->mTransformMapUsingDefault = false; mImpl->mRenderer.RegisterVisualTransformUniform(); @@ -1406,22 +1406,22 @@ Dali::Property Visual::Base::GetPropertyObject(Dali::Property::Key key) case Toolkit::Visual::Transform::Property::OFFSET: { // Need to change visual transform is not default anymore. - mImpl->mTransformMapUsingDefault = false; - mImpl->mRenderer.RegisterVisualTransformUniform(); - - // Change shader - UpdateShader(); + if(mImpl->mTransformMapUsingDefault) + { + mImpl->mTransformMapUsingDefault = false; + mImpl->mRenderer.RegisterVisualTransformUniform(); + } return Dali::Property(mImpl->mRenderer, VisualRenderer::Property::TRANSFORM_OFFSET); } case Toolkit::Visual::Transform::Property::SIZE: { // Need to change visual transform is not default anymore. - mImpl->mTransformMapUsingDefault = false; - mImpl->mRenderer.RegisterVisualTransformUniform(); - - // Change shader - UpdateShader(); + if(mImpl->mTransformMapUsingDefault) + { + mImpl->mTransformMapUsingDefault = false; + mImpl->mRenderer.RegisterVisualTransformUniform(); + } return Dali::Property(mImpl->mRenderer, VisualRenderer::Property::TRANSFORM_SIZE); } diff --git a/dali-toolkit/internal/visuals/visual-factory-cache.cpp b/dali-toolkit/internal/visuals/visual-factory-cache.cpp index 751aa67212..ea780185d7 100644 --- a/dali-toolkit/internal/visuals/visual-factory-cache.cpp +++ b/dali-toolkit/internal/visuals/visual-factory-cache.cpp @@ -90,35 +90,21 @@ void VisualFactoryCache::SaveGeometry(GeometryType type, Geometry geometry) mGeometry[type] = geometry; } -Shader VisualFactoryCache::GetShader(ShaderType type, bool useDefaultUniforms) +Shader VisualFactoryCache::GetShader(ShaderType type) { - if(useDefaultUniforms) - { - return mDefaultShader[type]; - } return mShader[type]; } -Shader VisualFactoryCache::GenerateAndSaveShader(ShaderType type, std::string_view vertexShader, std::string_view fragmentShader, bool useDefaultUniforms) +Shader VisualFactoryCache::GenerateAndSaveShader(ShaderType type, std::string_view vertexShader, std::string_view fragmentShader) { - Shader shader; std::string shaderName = Scripting::GetLinearEnumerationName(type, VISUAL_SHADER_TYPE_TABLE, VISUAL_SHADER_TYPE_TABLE_COUNT); // If the shader name is empty, it means that the shader is not generated internally. So, there is need to support file caching. Otherwise, it is defined externally. So, it needs not to support file caching. - Shader::Hint::Value shaderHints = shaderName.empty()? Shader::Hint::NONE : Shader::Hint::FILE_CACHE_SUPPORT; + Shader::Hint::Value shaderHints = shaderName.empty() ? Shader::Hint::NONE : Shader::Hint::FILE_CACHE_SUPPORT; - if(useDefaultUniforms) - { - shader = Integration::ShaderNewWithUniformBlock(vertexShader, fragmentShader, shaderHints, shaderName, {GetDefaultUniformBlock()}); - mDefaultShader[type] = shader; - } - else - { - shader = Shader::New(vertexShader, fragmentShader, shaderHints, shaderName); - mShader[type] = shader; - } + mShader[type] = Integration::ShaderNewWithUniformBlock(vertexShader, fragmentShader, shaderHints, shaderName, {GetDefaultUniformBlock()}); - return shader; + return mShader[type]; } Geometry VisualFactoryCache::CreateQuadGeometry() @@ -380,11 +366,11 @@ Shader VisualFactoryCache::GetNPatchShader(int index) if(DALI_LIKELY((xStretchCount == 0 && yStretchCount == 0) || (xStretchCount == 1 && yStretchCount == 1))) { - shader = GetShader(VisualFactoryCache::NINE_PATCH_SHADER, false); + shader = GetShader(VisualFactoryCache::NINE_PATCH_SHADER); if(DALI_UNLIKELY(!shader)) { // Only cache vanilla 9 patch shaders - shader = GenerateAndSaveShader(VisualFactoryCache::NINE_PATCH_SHADER, SHADER_NPATCH_VISUAL_3X3_SHADER_VERT, SHADER_NPATCH_VISUAL_SHADER_FRAG, false); + shader = GenerateAndSaveShader(VisualFactoryCache::NINE_PATCH_SHADER, SHADER_NPATCH_VISUAL_3X3_SHADER_VERT, SHADER_NPATCH_VISUAL_SHADER_FRAG); } } else if(xStretchCount > 0 || yStretchCount > 0) @@ -491,10 +477,10 @@ void VisualFactoryCache::UpdateBrokenImageRenderer(VisualRenderer& renderer, con if(!rendererIsImage) { Geometry geometry = GetGeometry(QUAD_GEOMETRY); - Shader shader = GetShader(IMAGE_SHADER, false); + Shader shader = GetShader(IMAGE_SHADER); if(!shader) { - shader = GenerateAndSaveShader(IMAGE_SHADER, Dali::Shader::GetVertexShaderPrefix() + SHADER_IMAGE_VISUAL_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_IMAGE_VISUAL_SHADER_FRAG.data(), false); + shader = GenerateAndSaveShader(IMAGE_SHADER, Dali::Shader::GetVertexShaderPrefix() + SHADER_IMAGE_VISUAL_SHADER_VERT.data(), Dali::Shader::GetFragmentShaderPrefix() + SHADER_IMAGE_VISUAL_SHADER_FRAG.data()); shader.RegisterProperty(PIXEL_AREA_UNIFORM_NAME, FULL_TEXTURE_RECT); shader.RegisterProperty(PREMULTIPLIED_ALPHA, ALPHA_VALUE_PREMULTIPLIED); } diff --git a/dali-toolkit/internal/visuals/visual-factory-cache.h b/dali-toolkit/internal/visuals/visual-factory-cache.h index 7763dc1ac5..116d5e44f6 100644 --- a/dali-toolkit/internal/visuals/visual-factory-cache.h +++ b/dali-toolkit/internal/visuals/visual-factory-cache.h @@ -223,17 +223,16 @@ public: * Request shader of the given type. * @return The shader of the required type if it exist in the cache. Otherwise, an empty handle is returned. */ - Shader GetShader(ShaderType type, bool useDefaultUniforms = false); + Shader GetShader(ShaderType type); /** * Generate and cache the shader of the give type. The name of shader will be installed to shader. * @param[in] type The shder type. * @param[in] vertexShader The vertex shader code. * @param[in] fragmentShader The fragment shader code. - * @param[in] useDefaultUniforms Whether to use default uniforms or not. * @return The shader created by given vertex and fragment shader code. */ - Shader GenerateAndSaveShader(ShaderType type, std::string_view vertexShader, std::string_view fragmentShader, bool useDefaultUniforms = false); + Shader GenerateAndSaveShader(ShaderType type, std::string_view vertexShader, std::string_view fragmentShader); /* * Greate the quad geometry. @@ -411,7 +410,6 @@ private: Geometry mGeometry[GEOMETRY_TYPE_MAX]; Shader mShader[SHADER_TYPE_MAX]; - Shader mDefaultShader[SHADER_TYPE_MAX]; bool mLoadYuvPlanes; ///< A global flag to specify if the image should be loaded as yuv planes