diff --git a/ace_config.gni b/ace_config.gni index cac06a36de0121f53eb20d216970ee6b81df18ff..48a22323eb9f0b16f1587d463ac2a809ca416c5b 100644 --- a/ace_config.gni +++ b/ace_config.gni @@ -187,6 +187,7 @@ ace_wearable_defines = [ "WEARABLE_PRODUCT" ] ace_ivi_defines = [ "IVI_PRODUCT" ] ace_common_defines = [ "ACE_LOG_TAG=\"Ace\"" ] +ace_common_defines += [ "MODIFIER_NG" ] if (use_hilog) { ace_common_defines += [ "USE_HILOG" ] diff --git a/frameworks/core/components_ng/render/adapter/rosen_modifier_property.h b/frameworks/core/components_ng/render/adapter/rosen_modifier_property.h index 3ffe0f4bddac7fa056355d5bd56b5ba2aa6b3929..4247609d64d55bf6464c987171a7e0fbf775a3e4 100644 --- a/frameworks/core/components_ng/render/adapter/rosen_modifier_property.h +++ b/frameworks/core/components_ng/render/adapter/rosen_modifier_property.h @@ -18,8 +18,8 @@ #ifndef MODIFIER_NG #include "render_service_client/core/modifier/rs_property_modifier.h" -#include "render_service_client/core/ui/rs_node.h" #endif +#include "render_service_client/core/ui/rs_node.h" namespace OHOS::Ace::NG { #ifndef MODIFIER_NG diff --git a/frameworks/core/components_ng/render/adapter/rosen_render_context.cpp b/frameworks/core/components_ng/render/adapter/rosen_render_context.cpp index a895252ca25d2e8c5dfef526f1c636458bd00c67..c6b3ad295c7ab860b382820e33d687437bde9591 100755 --- a/frameworks/core/components_ng/render/adapter/rosen_render_context.cpp +++ b/frameworks/core/components_ng/render/adapter/rosen_render_context.cpp @@ -395,10 +395,10 @@ void RosenRenderContext::SetPivot(float xPivot, float yPivot, float zPivot) if (pivotModifier_) { auto pivot = pivotModifier_->GetPivot(); changed = pivot[0] != xPivot || pivot[1] != yPivot; - pivotModifier_->SetPivot({ xPivot, yPivot }); + pivotModifier_->SetPivot({ xPivot, yPivot }, false); } else { pivotModifier_ = std::make_shared(); - pivotModifier_->SetPivot({ xPivot, yPivot }); + pivotModifier_->SetPivot({ xPivot, yPivot }, false); rsNode_->AddModifier(pivotModifier_); } #else @@ -1855,7 +1855,7 @@ void RosenRenderContext::OnOpacityUpdate(double opacity) } } #if defined(MODIFIER_NG) - SetAnimatableProperty( + AddOrUpdateModifier( alphaUserModifier_, opacity); #else SetAnimatableProperty(alphaUserModifier_, opacity); @@ -2013,7 +2013,7 @@ bool RosenRenderContext::GetPixelMap(const std::shared_ptr& pix #if defined(MODIFIER_NG) template -void RosenRenderContext::SetAnimatableProperty(std::shared_ptr& modifier, const T& value) +void RosenRenderContext::AddOrUpdateModifier(std::shared_ptr& modifier, const T& value) { if (modifier != nullptr) { (*modifier.*Setter)(value); @@ -2072,7 +2072,7 @@ void RosenRenderContext::OnTransformScaleUpdate(const VectorF& scale) } } #if defined(MODIFIER_NG) - SetAnimatableProperty(scaleXYUserModifier_, { scale.x, scale.y }); #else SetAnimatableProperty(scaleXYUserModifier_, { scale.x, scale.y }); @@ -2125,9 +2125,9 @@ void RosenRenderContext::OnTransformTranslateUpdate(const TranslateOptions& tran } } #if defined(MODIFIER_NG) - SetAnimatableProperty(translateXYUserModifier_, { translateVec.x, translateVec.y }); - SetAnimatableProperty(translateZUserModifier_, translateVec.z); #else SetAnimatableProperty( @@ -2147,13 +2147,13 @@ void RosenRenderContext::OnTransformRotateUpdate(const Vector5F& rotate) norm = 1.0f; } #if defined(MODIFIER_NG) - SetAnimatableProperty(rotationXUserModifier_, -rotate.w * rotate.x / norm); - SetAnimatableProperty(rotationYUserModifier_, -rotate.w * rotate.y / norm); - SetAnimatableProperty(rotationZUserModifier_, rotate.w * rotate.z / norm); - SetAnimatableProperty(cameraDistanceUserModifier_, rotate.v); #else SetAnimatableProperty(rotationXUserModifier_, -rotate.w * rotate.x / norm); @@ -2169,13 +2169,13 @@ void RosenRenderContext::OnTransformRotateAngleUpdate(const Vector4F& rotate) { CHECK_NULL_VOID(rsNode_); #if defined(MODIFIER_NG) - SetAnimatableProperty(rotationXUserModifier_, -rotate.x); - SetAnimatableProperty(rotationYUserModifier_, -rotate.y); - SetAnimatableProperty(rotationZUserModifier_, rotate.z); - SetAnimatableProperty(cameraDistanceUserModifier_, rotate.w); #else SetAnimatableProperty(rotationXUserModifier_, -rotate.x); @@ -2208,7 +2208,7 @@ void RosenRenderContext::OnTransformMatrixUpdate(const Matrix4& matrix) { CHECK_NULL_VOID(rsNode_); #if defined(MODIFIER_NG) - // Do nothing, transformModifier_ will be create and add to node in function SetAnimatableProperty. + // Do nothing, transformModifier_ will be create and add to node in function AddOrUpdateModifier. #else if (!transformModifier_.has_value()) { transformModifier_ = TransformMatrixModifier(); @@ -2220,10 +2220,10 @@ void RosenRenderContext::OnTransformMatrixUpdate(const Matrix4& matrix) Rosen::Vector2f xyTranslateValue { static_cast(matrix.Get(0, 3)), static_cast(matrix.Get(1, 3)) }; Rosen::Vector2f scaleValue { 0.0f, 0.0f }; #if defined(MODIFIER_NG) - SetAnimatableProperty( transformModifier_, xyTranslateValue); - SetAnimatableProperty(transformModifier_, scaleValue); #else AddOrChangeTranslateModifier( @@ -2239,16 +2239,16 @@ void RosenRenderContext::OnTransformMatrixUpdate(const Matrix4& matrix) Rosen::Vector2f xyScaleValue { transform.scale[0], transform.scale[1] }; Rosen::Vector3f skewValue { transform.skew[0], transform.skew[1], 0.0f }; #if defined(MODIFIER_NG) - SetAnimatableProperty(transformModifier_, perspectiveValue); - SetAnimatableProperty( transformModifier_, xyTranslateValue); - SetAnimatableProperty(transformModifier_, xyScaleValue); - SetAnimatableProperty(transformModifier_, skewValue); - SetAnimatableProperty(transformModifier_, quaternion); #else AddOrChangePerspectiveModifier( @@ -2269,7 +2269,7 @@ void RosenRenderContext::OnTransform3DMatrixUpdate(const Matrix4& matrix) { CHECK_NULL_VOID(rsNode_); #if defined(MODIFIER_NG) - // Do nothing, transformModifier_ will be create and add to node in function SetAnimatableProperty. + // Do nothing, transformModifier_ will be create and add to node in function AddOrUpdateModifier. #else if (!transformModifier_.has_value()) { transformModifier_ = TransformMatrixModifier(); @@ -2282,10 +2282,10 @@ void RosenRenderContext::OnTransform3DMatrixUpdate(const Matrix4& matrix) static_cast(matrix.Get(INDEX_1, INDEX_3)) }; Rosen::Vector2f scaleValue { FLOAT_ZERO, FLOAT_ZERO }; #if defined(MODIFIER_NG) - SetAnimatableProperty( transformModifier_, xyTranslateValue); - SetAnimatableProperty(transformModifier_, scaleValue); #else AddOrChangeTranslateModifier( @@ -2303,21 +2303,21 @@ void RosenRenderContext::OnTransform3DMatrixUpdate(const Matrix4& matrix) Rosen::Vector3f skewValue { transform.skew[0], transform.skew[1], transform.skew[INDEX_2] }; #if defined(MODIFIER_NG) - SetAnimatableProperty(transformModifier_, perspectiveValue); - SetAnimatableProperty( transformModifier_, xyTranslateValue); - SetAnimatableProperty( transformModifier_, transform.translate[INDEX_2]); - SetAnimatableProperty(transformModifier_, xyScaleValue); - SetAnimatableProperty(transformModifier_, transform.scale[INDEX_2]); - SetAnimatableProperty(transformModifier_, skewValue); - SetAnimatableProperty(transformModifier_, quaternion); #else AddOrChangePerspectiveModifier( @@ -2878,7 +2878,7 @@ void RosenRenderContext::OpacityAnimation(const AnimationOption& option, double { CHECK_NULL_VOID(rsNode_); #if defined(MODIFIER_NG) - SetAnimatableProperty( + AddOrUpdateModifier( alphaUserModifier_, begin); #else SetAnimatableProperty(alphaUserModifier_, begin); @@ -2887,7 +2887,7 @@ void RosenRenderContext::OpacityAnimation(const AnimationOption& option, double option, [this, end]() { #if defined(MODIFIER_NG) - SetAnimatableProperty(alphaUserModifier_, end); #else SetAnimatableProperty(alphaUserModifier_, end); @@ -5385,7 +5385,7 @@ void RosenRenderContext::PaintClipShape(const std::unique_ptr& cli auto rsPath = DrawingDecorationPainter::DrawingCreatePath(basicShape, frameSize); auto shapePath = Rosen::RSPath::CreateRSPath(rsPath); #if defined(MODIFIER_NG) - SetAnimatableProperty>( clipBoundModifier_, shapePath); #else @@ -5416,7 +5416,7 @@ void RosenRenderContext::PaintClipMask(const std::unique_ptr& clip auto maskPath = Rosen::RSMask::CreatePathMask(rsPath, pen, DrawingDecorationPainter::CreateMaskDrawingBrush(basicShape)); #if defined(MODIFIER_NG) - SetAnimatableProperty>(clipMaskModifier_, maskPath); #else if (!clipMaskModifier_) { @@ -5559,7 +5559,7 @@ void RosenRenderContext::SetContentClip(const std::variant( customClipToFrameModifier_, clipRect); #else @@ -5781,7 +5781,7 @@ void RosenRenderContext::OnBloomUpdate(const float bloomIntensity) void RosenRenderContext::SetSharedTranslate(float xTranslate, float yTranslate) { #if defined(MODIFIER_NG) - SetAnimatableProperty(sharedTransitionModifier_, { xTranslate, yTranslate }); #else if (!sharedTransitionModifier_) { @@ -6921,11 +6921,11 @@ void RosenRenderContext::SetRotation(float rotationX, float rotationY, float rot { CHECK_NULL_VOID(rsNode_); #if defined(MODIFIER_NG) - SetAnimatableProperty(rotationXUserModifier_, rotationX); - SetAnimatableProperty(rotationYUserModifier_, rotationY); - SetAnimatableProperty(rotationZUserModifier_, rotationZ); #else SetAnimatableProperty(rotationXUserModifier_, rotationX); @@ -6974,7 +6974,7 @@ void RosenRenderContext::SetScale(float scaleX, float scaleY) { CHECK_NULL_VOID(rsNode_); #if defined(MODIFIER_NG) - SetAnimatableProperty(scaleXYUserModifier_, { scaleX, scaleY }); #else SetAnimatableProperty(scaleXYUserModifier_, { scaleX, scaleY }); @@ -7005,7 +7005,7 @@ void RosenRenderContext::SetOpacity(float opacity) { CHECK_NULL_VOID(rsNode_); #if defined(MODIFIER_NG) - SetAnimatableProperty( + AddOrUpdateModifier( alphaUserModifier_, opacity); #else SetAnimatableProperty(alphaUserModifier_, opacity); @@ -7017,7 +7017,7 @@ void RosenRenderContext::SetOpacityMultiplier(float opacity) { CHECK_NULL_VOID(rsNode_); #if defined(MODIFIER_NG) - SetAnimatableProperty( + AddOrUpdateModifier( alphaModifier_, opacity); #else SetAnimatableProperty(alphaModifier_, opacity); @@ -7028,10 +7028,10 @@ void RosenRenderContext::SetTranslate(float translateX, float translateY, float { CHECK_NULL_VOID(rsNode_); #if defined(MODIFIER_NG) - SetAnimatableProperty(translateXYUserModifier_, { translateX, translateY }); - SetAnimatableProperty(translateZUserModifier_, translateZ); + AddOrUpdateModifier(translateZUserModifier_, translateZ); #else SetAnimatableProperty( translateXYUserModifier_, { translateX, translateY }); @@ -7076,7 +7076,7 @@ void RosenRenderContext::SetBaseTranslateInXY(const OffsetF& offset) { CHECK_NULL_VOID(rsNode_); #if defined(MODIFIER_NG) - SetAnimatableProperty(baseTranslateInXYModifier_, { offset.GetX(), offset.GetY() }); #else SetAnimatableProperty( @@ -7105,7 +7105,7 @@ void RosenRenderContext::SetBaseRotateInZ(float degree) { CHECK_NULL_VOID(rsNode_); #if defined(MODIFIER_NG) - SetAnimatableProperty(baseRotateInZModifier_, degree); #else SetAnimatableProperty(baseRotateInZModifier_, degree); @@ -7375,8 +7375,10 @@ void RosenRenderContext::UpdateWindowBlur() (static_cast((std::clamp(maskColor.GetGreen(), 0, UINT8_MAX)) << 16)) | (static_cast((std::clamp(maskColor.GetRed(), 0, UINT8_MAX)) << 24)); #if defined(MODIFIER_NG) + bool needAddModifier = false; if (!windowBlurModifier_) { windowBlurModifier_ = std::make_shared(); + needAddModifier = true; } #else if (!windowBlurModifier_.has_value()) { @@ -7402,7 +7404,9 @@ void RosenRenderContext::UpdateWindowBlur() windowBlurModifier_->SetBehindWindowFilterSaturation(blurParam->saturation); windowBlurModifier_->SetBehindWindowFilterBrightness(blurParam->brightness); windowBlurModifier_->SetBehindWindowFilterMaskColor(Rosen::RSColor(rgbaColor)); - rsNodeTmp->AddModifier(windowBlurModifier_); + if (needAddModifier) { + rsNodeTmp->AddModifier(windowBlurModifier_); + } #else WindowBlurModifier::AddOrChangeRadiusModifier( rsNodeTmp, windowBlurModifier_->radius, windowBlurModifier_->radiusValue, blurParam->radius); @@ -7900,11 +7904,11 @@ void RosenRenderContext::SetAnimationPropertyValue(AnimationPropertyType propert case AnimationPropertyType::ROTATION: { if (value.size() == ROTATION_PARAM_SIZE) { // rotationX and rotationY are opposite between arkui and rs. - SetAnimatableProperty(rotationXUserModifier_, -value[0]); - SetAnimatableProperty(rotationYUserModifier_, -value[1]); - SetAnimatableProperty( rotationZUserModifier_, value[2]); // 2 is index of value NotifyHostTransformUpdated(); @@ -7913,7 +7917,7 @@ void RosenRenderContext::SetAnimationPropertyValue(AnimationPropertyType propert } case AnimationPropertyType::TRANSLATION: { if (value.size() == TRANSLATION_PARAM_SIZE) { - SetAnimatableProperty( translateXYUserModifier_, { value[0], value[1] }); NotifyHostTransformUpdated(); @@ -7922,7 +7926,7 @@ void RosenRenderContext::SetAnimationPropertyValue(AnimationPropertyType propert } case AnimationPropertyType::SCALE: { if (value.size() == SCALE_PARAM_SIZE) { - SetAnimatableProperty( scaleXYUserModifier_, { value[0], value[1] }); NotifyHostTransformUpdated(); @@ -7931,7 +7935,7 @@ void RosenRenderContext::SetAnimationPropertyValue(AnimationPropertyType propert } case AnimationPropertyType::OPACITY: { if (value.size() == OPACITY_PARAM_SIZE) { - SetAnimatableProperty(alphaUserModifier_, value[0]); MarkNeedDrawNode(value[0] < 1.0); } diff --git a/frameworks/core/components_ng/render/adapter/rosen_render_context.h b/frameworks/core/components_ng/render/adapter/rosen_render_context.h index 5544f99a345fe4893adda35a5759f99e4d232a88..941cf89d49fe638c47a388ece2a1c10c5efe812d 100755 --- a/frameworks/core/components_ng/render/adapter/rosen_render_context.h +++ b/frameworks/core/components_ng/render/adapter/rosen_render_context.h @@ -32,6 +32,7 @@ #include "render_service_client/core/modifier_ng/geometry/rs_bounds_clip_modifier.h" #include "render_service_client/core/modifier_ng/geometry/rs_frame_clip_modifier.h" #include "render_service_client/core/modifier_ng/geometry/rs_transform_modifier.h" +#include "render_service_client/core/ui/rs_canvas_node.h" #else #include "core/components_ng/render/adapter/rosen_modifier_property.h" #endif @@ -200,10 +201,11 @@ public: #if defined(MODIFIER_NG) template + void AddOrUpdateModifier(std::shared_ptr& modifier, const T& value); #else template -#endif void SetAnimatableProperty(std::shared_ptr& modifier, const T& value); +#endif void FlushContentDrawFunction(CanvasDrawFunction&& contentDraw) override; diff --git a/test/unittest/core/rosen/rosen_render_context_test.cpp b/test/unittest/core/rosen/rosen_render_context_test.cpp index 61f83e6d5e1f929081832a61c3e9e149fa2754a0..96ec54b64df502d1c913848217fd5452f4aff108 100644 --- a/test/unittest/core/rosen/rosen_render_context_test.cpp +++ b/test/unittest/core/rosen/rosen_render_context_test.cpp @@ -1215,6 +1215,25 @@ HWTEST_F(RosenRenderContextTest, RosenRenderContextTest047, TestSize.Level1) auto rotationYUserModifier = std::make_shared>(rotate); auto rotationZUserModifier = std::make_shared>(rotate); auto cameraDistanceUserModifier = std::make_shared>(rotate); +#if defined(MODIFIER_NG) + rosenRenderContext->rotationXUserModifier_ = std::make_shared(); + rosenRenderContext->rotationXUserModifier_->AttachProperty( + Rosen::ModifierNG::RSPropertyType::ROTATION_X, rotationXUserModifier); + rosenRenderContext->rotationYUserModifier_ = std::make_shared(); + rosenRenderContext->rotationYUserModifier_->AttachProperty( + Rosen::ModifierNG::RSPropertyType::ROTATION_Y, rotationYUserModifier); + rosenRenderContext->rotationZUserModifier_ = std::make_shared(); + rosenRenderContext->rotationZUserModifier_->AttachProperty( + Rosen::ModifierNG::RSPropertyType::ROTATION, rotationZUserModifier); + rosenRenderContext->cameraDistanceUserModifier_ = std::make_shared(); + rosenRenderContext->cameraDistanceUserModifier_->AttachProperty( + Rosen::ModifierNG::RSPropertyType::CAMERA_DISTANCE, cameraDistanceUserModifier); + rosenRenderContext->OnTransformRotateAngleUpdate({ rotateX, rotateY, rotateZ, perspective }); + auto rotationXValue = rosenRenderContext->rotationXUserModifier_->GetRotationX(); + auto rotationYValue = rosenRenderContext->rotationYUserModifier_->GetRotationY(); + auto rotationZValue = rosenRenderContext->rotationZUserModifier_->GetRotation(); + auto cameraDistanceValue = rosenRenderContext->cameraDistanceUserModifier_->GetCameraDistance(); +#else rosenRenderContext->rotationXUserModifier_ = std::make_shared(rotationXUserModifier); rosenRenderContext->rotationYUserModifier_ = std::make_shared(rotationYUserModifier); rosenRenderContext->rotationZUserModifier_ = std::make_shared(rotationZUserModifier); @@ -1229,6 +1248,7 @@ HWTEST_F(RosenRenderContextTest, RosenRenderContextTest047, TestSize.Level1) rosenRenderContext->rotationZUserModifier_->GetProperty())->Get(); auto cameraDistanceValue = std::static_pointer_cast>( rosenRenderContext->cameraDistanceUserModifier_->GetProperty()) ->Get(); +#endif EXPECT_EQ(rotationXValue, -rotateX); EXPECT_EQ(rotationYValue, -rotateY); EXPECT_EQ(rotationZValue, rotateZ); @@ -2020,6 +2040,15 @@ HWTEST_F(RosenRenderContextTest, OnTransform3DMatrixUpdate001, TestSize.Level1) Matrix4 matrix4(INDEX_1, INDEX_0, INDEX_0, INDEX_0, INDEX_0, INDEX_1, INDEX_0, INDEX_0, INDEX_0, INDEX_0, INDEX_1, INDEX_0, INDEX_100, INDEX_0, INDEX_0, INDEX_1); rosenRenderContext->OnTransform3DMatrixUpdate(matrix4); +#if defined(MODIFIER_NG) + auto perspectiveValue = rosenRenderContext->transformModifier_->GetPersp(); + auto xyTranslateValue = rosenRenderContext->transformModifier_->GetTranslate(); + auto translateZValue = rosenRenderContext->transformModifier_->GetTranslateZ(); + auto scaleXYValue = rosenRenderContext->transformModifier_->GetScale(); + auto scaleZValue = rosenRenderContext->transformModifier_->GetScaleZ(); + auto skewValue = rosenRenderContext->transformModifier_->GetSkew(); + auto quaternionValue = rosenRenderContext->transformModifier_->GetQuaternion(); +#else auto perspectiveValue = rosenRenderContext->transformModifier_->perspectiveValue.get()->Get(); auto xyTranslateValue = rosenRenderContext->transformModifier_->translateXYValue.get()->Get(); auto translateZValue = rosenRenderContext->transformModifier_->translateZValue.get()->Get(); @@ -2027,6 +2056,7 @@ HWTEST_F(RosenRenderContextTest, OnTransform3DMatrixUpdate001, TestSize.Level1) auto scaleZValue = rosenRenderContext->transformModifier_->scaleZValue.get()->Get(); auto skewValue = rosenRenderContext->transformModifier_->skewValue.get()->Get(); auto quaternionValue = rosenRenderContext->transformModifier_->quaternionValue.get()->Get(); +#endif EXPECT_NE(perspectiveValue[0], 0); EXPECT_EQ(perspectiveValue[1], 0); EXPECT_EQ(perspectiveValue[2], 0); diff --git a/test/unittest/core/rosen/rosen_render_context_test_new.cpp b/test/unittest/core/rosen/rosen_render_context_test_new.cpp index 0f4c0743ce42f8e16b76b9ef892a3fa55a6e07c0..80f35501118d864f772c4211cb9ef61e2271bfb4 100644 --- a/test/unittest/core/rosen/rosen_render_context_test_new.cpp +++ b/test/unittest/core/rosen/rosen_render_context_test_new.cpp @@ -21,6 +21,10 @@ #include "core/components_ng/render/drawing.h" #include "core/components_ng/pattern/stage/page_pattern.h" +#if defined(MODIFIER_NG) +#include "modifier_ng/background/rs_background_shader_modifier.h" +#endif + #undef private #undef protected @@ -605,6 +609,12 @@ HWTEST_F(RosenRenderContextTest, RosenRenderContextTestNew019, TestSize.Level1) EXPECT_EQ(rosenRenderContext->GetRSNode()->GetStagingProperties().GetShadowOffsetY(), 0.0); } +#if defined(MODIFIER_NG) +using RSModifier = Rosen::ModifierNG::RSModifier; +#else +using RSModifier = Rosen::RSModifier; +#endif + /** * @tc.name: RosenRenderContextTestNew020 * @tc.desc: OnClipEdgeUpdate(). @@ -616,7 +626,12 @@ HWTEST_F(RosenRenderContextTest, RosenRenderContextTestNew020, TestSize.Level1) FrameNode::GetOrCreateFrameNode("frame", -1, []() { return AceType::MakeRefPtr(nullptr); }); auto rosenRenderContext = InitRosenRenderContext(frameNode); auto property = std::make_shared>(); - std::shared_ptr modifier = std::make_shared(property); +#if defined(MODIFIER_NG) + std::shared_ptr modifier = std::make_shared(); + modifier->AttachProperty(Rosen::ModifierNG::RSPropertyType::BACKGROUND_SHADER, property); +#else + std::shared_ptr modifier = std::make_shared(property); +#endif rosenRenderContext->AddModifier(modifier); rosenRenderContext->paintRect_ = RectF(1.0, 1.0, 1.0, 1.0); BrightnessOption option; @@ -664,7 +679,12 @@ HWTEST_F(RosenRenderContextTest, RosenRenderContextTestNew021, TestSize.Level1) FrameNode::GetOrCreateFrameNode("frame", -1, []() { return AceType::MakeRefPtr(nullptr); }); auto rosenRenderContext = InitRosenRenderContext(frameNode); auto property = std::make_shared>(); - std::shared_ptr modifier = std::make_shared(property); +#if defined(MODIFIER_NG) + std::shared_ptr modifier = std::make_shared(); + modifier->AttachProperty(Rosen::ModifierNG::RSPropertyType::BACKGROUND_SHADER, property); +#else + std::shared_ptr modifier = std::make_shared(property); +#endif rosenRenderContext->AddModifier(modifier); rosenRenderContext->paintRect_ = RectF(1.0, 1.0, 1.0, 1.0); rosenRenderContext->OnBackBlendApplyTypeUpdate(BlendApplyType::OFFSCREEN);