From cb34e71eb965e7700398f675ecf69c4388a8fd47 Mon Sep 17 00:00:00 2001 From: seungho baek Date: Mon, 12 Dec 2022 17:01:19 +0900 Subject: [PATCH] Use Renderer::BlendMode::USE_ACTOR_OPACITY instead to use depth write mode Change-Id: Iefc5fe27786f64a3892502f17898faca874d03f9 Signed-off-by: seungho baek --- automated-tests/resources/MRendererTest.gltf | 2 +- automated-tests/src/dali-scene3d/utc-Dali-Gltf2Loader.cpp | 3 +++ automated-tests/src/dali-scene3d/utc-Dali-RendererState.cpp | 2 +- dali-scene3d/public-api/loader/renderer-state.cpp | 3 +-- dali-scene3d/public-api/loader/shader-definition-factory.cpp | 4 ++-- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/automated-tests/resources/MRendererTest.gltf b/automated-tests/resources/MRendererTest.gltf index ae3d113..bfd45b4 100644 --- a/automated-tests/resources/MRendererTest.gltf +++ b/automated-tests/resources/MRendererTest.gltf @@ -150,7 +150,7 @@ 0, 0 ], - "alphaMode": "OPAQUE", + "alphaMode": "BLEND", "doubleSided": false } ], diff --git a/automated-tests/src/dali-scene3d/utc-Dali-Gltf2Loader.cpp b/automated-tests/src/dali-scene3d/utc-Dali-Gltf2Loader.cpp index 3ebf5de..a6256f5 100644 --- a/automated-tests/src/dali-scene3d/utc-Dali-Gltf2Loader.cpp +++ b/automated-tests/src/dali-scene3d/utc-Dali-Gltf2Loader.cpp @@ -577,6 +577,9 @@ int UtcDaliGltfLoaderMRendererTest(void) DALI_TEST_EQUAL(child.GetRendererCount(), 1u); DALI_TEST_EQUAL(child.GetRendererAt(0).GetTextures().GetTextureCount(), 4u); + DALI_TEST_EQUAL(child.GetRendererCount(), 1u); + DALI_TEST_EQUAL(child.GetRendererAt(0u).GetProperty(Renderer::Property::BLEND_MODE), BlendMode::ON); + END_TEST; } diff --git a/automated-tests/src/dali-scene3d/utc-Dali-RendererState.cpp b/automated-tests/src/dali-scene3d/utc-Dali-RendererState.cpp index fb1e23d..a72560b 100644 --- a/automated-tests/src/dali-scene3d/utc-Dali-RendererState.cpp +++ b/automated-tests/src/dali-scene3d/utc-Dali-RendererState.cpp @@ -60,10 +60,10 @@ int UtcDaliRendererStateApply(void) Shader shader = Shader::New(vsh, fsh); Renderer renderer = Renderer::New(geom, shader); - HELP_TEST_RENDERER_STATE(Renderer::Property::DEPTH_WRITE_MODE, DepthWriteMode::OFF, rs::DEPTH_WRITE, DepthWriteMode::ON, renderer); HELP_TEST_RENDERER_STATE(Renderer::Property::DEPTH_TEST_MODE, DepthTestMode::OFF, rs::DEPTH_TEST, DepthTestMode::ON, renderer); HELP_TEST_RENDERER_STATE(Renderer::Property::BLEND_MODE, BlendMode::OFF, rs::ALPHA_BLEND, BlendMode::ON, renderer); + HELP_TEST_RENDERER_STATE(Renderer::Property::BLEND_MODE, BlendMode::OFF, ~(rs::ALPHA_BLEND), BlendMode::USE_ACTOR_OPACITY, renderer); HELP_TEST_RENDERER_STATE(Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::NONE, rs::CULL_FRONT, FaceCullingMode::FRONT, renderer); HELP_TEST_RENDERER_STATE(Renderer::Property::FACE_CULLING_MODE, FaceCullingMode::NONE, rs::CULL_BACK, FaceCullingMode::BACK, renderer); diff --git a/dali-scene3d/public-api/loader/renderer-state.cpp b/dali-scene3d/public-api/loader/renderer-state.cpp index ad8059d..cc2837b 100644 --- a/dali-scene3d/public-api/loader/renderer-state.cpp +++ b/dali-scene3d/public-api/loader/renderer-state.cpp @@ -51,10 +51,9 @@ namespace RendererState void Apply(Type rendererState, Renderer& renderer) { - RENDERER_SET_PROPERTY(DEPTH_WRITE_MODE, MaskMatch(rendererState, DEPTH_WRITE) ? DepthWriteMode::ON : DepthWriteMode::OFF); RENDERER_SET_PROPERTY(DEPTH_TEST_MODE, MaskMatch(rendererState, DEPTH_TEST) ? DepthTestMode::ON : DepthTestMode::OFF); - RENDERER_SET_PROPERTY(BLEND_MODE, MaskMatch(rendererState, ALPHA_BLEND) ? BlendMode::ON : BlendMode::OFF); + RENDERER_SET_PROPERTY(BLEND_MODE, MaskMatch(rendererState, ALPHA_BLEND) ? BlendMode::ON : BlendMode::USE_ACTOR_OPACITY); const bool cullBack = MaskMatch(rendererState, CULL_BACK); RENDERER_SET_PROPERTY(FACE_CULLING_MODE, MaskMatch(rendererState, CULL_FRONT) ? (cullBack ? FaceCullingMode::FRONT_AND_BACK : FaceCullingMode::FRONT) : (cullBack ? FaceCullingMode::BACK : FaceCullingMode::NONE)); diff --git a/dali-scene3d/public-api/loader/shader-definition-factory.cpp b/dali-scene3d/public-api/loader/shader-definition-factory.cpp index 390284c..b5566e0 100644 --- a/dali-scene3d/public-api/loader/shader-definition-factory.cpp +++ b/dali-scene3d/public-api/loader/shader-definition-factory.cpp @@ -233,7 +233,7 @@ Index ShaderDefinitionFactory::ProduceShader(NodeDefinition::Renderable& rendera { ShaderDefinition shaderDef; shaderDef.mUseBuiltInShader = true; - shaderDef.mRendererState = RendererState::DEPTH_TEST | RendererState::DEPTH_WRITE; + shaderDef.mRendererState = RendererState::DEPTH_TEST; auto& materialDef = *receiver.mMaterialDef; if(!materialDef.mDoubleSided) @@ -245,7 +245,7 @@ Index ShaderDefinitionFactory::ProduceShader(NodeDefinition::Renderable& rendera if(hasTransparency) { // TODO: this requires more granularity - shaderDef.mRendererState = (shaderDef.mRendererState | RendererState::ALPHA_BLEND) & ~RendererState::DEPTH_WRITE; + shaderDef.mRendererState = (shaderDef.mRendererState | RendererState::ALPHA_BLEND); } if(hasTransparency || -- 2.7.4