Use Renderer::BlendMode::USE_ACTOR_OPACITY instead to use depth write mode 04/285404/5
authorseungho baek <sbsh.baek@samsung.com>
Mon, 12 Dec 2022 08:01:19 +0000 (17:01 +0900)
committerseungho baek <sbsh.baek@samsung.com>
Tue, 20 Dec 2022 10:23:32 +0000 (19:23 +0900)
Change-Id: Iefc5fe27786f64a3892502f17898faca874d03f9
Signed-off-by: seungho baek <sbsh.baek@samsung.com>
automated-tests/resources/MRendererTest.gltf
automated-tests/src/dali-scene3d/utc-Dali-Gltf2Loader.cpp
automated-tests/src/dali-scene3d/utc-Dali-RendererState.cpp
dali-scene3d/public-api/loader/renderer-state.cpp
dali-scene3d/public-api/loader/shader-definition-factory.cpp

index ae3d113..bfd45b4 100644 (file)
         0,\r
         0\r
       ],\r
-      "alphaMode": "OPAQUE",\r
+      "alphaMode": "BLEND",\r
       "doubleSided": false\r
     }\r
   ],\r
index 3ebf5de..a6256f5 100644 (file)
@@ -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<decltype(BlendMode::ON)>(Renderer::Property::BLEND_MODE), BlendMode::ON);
+
   END_TEST;
 }
 
index fb1e23d..a72560b 100644 (file)
@@ -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);
index ad8059d..cc2837b 100644 (file)
@@ -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));
index 390284c..b5566e0 100644 (file)
@@ -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 ||