[Tizen] Make Scene3D controls also applied actor color 67/284567/2
authorEunki Hong <eunkiki.hong@samsung.com>
Sun, 20 Nov 2022 07:07:18 +0000 (16:07 +0900)
committerSeungho BAEK <sbsh.baek@samsung.com>
Tue, 22 Nov 2022 06:47:44 +0000 (06:47 +0000)
Let we make PBR shader use our world color system.

TODO : We should change DepthWrite & AlphaBlend properties on coreside.
Since the model might has 32bit image as texture, we cannot make
DepthWrite as AUTO.

Change-Id: I4e3371d940cdebc45c43d2cb9acc88018c111bf2
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
dali-scene3d/internal/graphics/shaders/default-physically-based-shader.frag
dali-scene3d/internal/graphics/shaders/scene3d-joint-debug.frag
dali-scene3d/public-api/loader/renderer-state.cpp

index 6ef02b2..8c9e7ea 100644 (file)
@@ -33,7 +33,8 @@ precision mediump float;
 #endif //GLTF_CHANNELS
 #endif //THREE_TEX
 
-uniform lowp vec4 uColorFactor;
+uniform lowp vec4 uColor; // Color from SceneGraph
+uniform lowp vec4 uColorFactor; // Color from material
 uniform lowp float uMetallicFactor;
 uniform lowp float uRoughnessFactor;
 uniform lowp float uDielectricSpecular;
@@ -206,5 +207,5 @@ void main()
   color += emissive;
 #endif // EMISSIVE
 
-  FragColor = vec4(pow(color, vec3(1.0 / 2.2)), baseColor.a);
+  FragColor = vec4(pow(color, vec3(1.0 / 2.2)), baseColor.a) * uColor;
 }
index a1153c9..633e91c 100644 (file)
@@ -1,11 +1,12 @@
 #version 300 es
 
 precision mediump float;
+uniform lowp vec4 uColor;
 flat in float vColor;
 out vec4 FragColor;
 
 void main()
 {
   vec3 rgb = vec3(fract(vColor), fract(vColor * 0.00390625), fract(vColor * 0.00390625 * 0.00390625));
-  FragColor = vec4(rgb, 1.);
+  FragColor = vec4(rgb, 1.) * uColor;
 }
\ No newline at end of file
index ad8059d..a1fcfdb 100644 (file)
@@ -54,7 +54,7 @@ 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::AUTO);
 
   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));