[Tizen] Backport tizen_7.5 for Scene3D 80/287880/5
authorEunki, Hong <eunkiki.hong@samsung.com>
Tue, 7 Feb 2023 06:59:51 +0000 (15:59 +0900)
committerEunki Hong <eunkiki.hong@samsung.com>
Mon, 13 Feb 2023 04:32:48 +0000 (13:32 +0900)
commit1a70b3163f78d945a8b3e3b629b38c74c5a43654
treee74fb2b0022493dd55c7a39590438ce201c57816
parent42ddc47b25a1e3b6b2dc8d7dc750432736a4ffd3
[Tizen] Backport tizen_7.5 for Scene3D

This is a combination of 54 commits.

Revert "[Tizen] Texture size reduction on the fly for 3D model using metadata"

This reverts commit bd8d3703a1147e323aafca88a8a774495cc1e56c.

Revert "[Tizen] Make API to set MultiSampling level for SceneView"

This reverts commit 59df57f1a5ebfefd81ba56e44c918e41e5c452d5.

Revert "[Tizen] Able to load uint8_t type Joint + Able to animate 0 duration animation"

This reverts commit 95d8d0192701e1127293955308f67845a309b228.

Revert "[Tizen] inherit parent color in 3D model."

This reverts commit 780ee74b53272bfcf3b26e6ca9b0c74aa0e84c0b.

Revert "[Tizen] Support Fade animation when UseFrameBuffer is true in SceneView."

This reverts commit 8cf0d351b5ec71b456a0ce6565047a34233019e9.

Revert "[Tizen] Use AnimatedProperty instead of name for getActor."

This reverts commit b74811f29389151fba6870c8bcf19d4e96b8474a.

Revert "[Tizen] Make FBO visual use premultiplied alpha (2)"

This reverts commit d3d7e9f9f8e1555e6ce9de3a8496a9af11188009.

Revert "[Tizen] Make FBO visual use premultiplied alpha"

This reverts commit 280dc16b205e696bc652baaf90361a176f331f0a.

Revert "[Tizen] Fix opacity animation issue in 3D"

This reverts commit f5d4d324ddb013f67fe21367027ab7425bd0fdb8.

Revert "[Tizen] Do not name check to add node"

This reverts commit 37a0481c17b7083f8a28d5274bd47a7d43290ed0.

Revert "[Tizen] Fix Scene3D shader cache miss"

This reverts commit cae8c5dee904d34aaad8343d33c54e152d80f6b4.

Revert "[Tizen] Fix Scene3d::Loader bugs"

This reverts commit c2d880b6505e40da7324195c9e2e3ee1cb40a0c4.

Revert "[Tizen] Fix 3D blend issue"

This reverts commit 16874136b5ffc785c05dbe2ab878a28792f5a07f.

Revert "[Tizen] Make Scene3D controls also applied actor color"

This reverts commit 089ff5baf1e75b911225806238570302b1ef184a.

Revert "[Tizen] Make SceneView FBO multisampling + Sync utc harness"

This reverts commit e31bcb82f18b6117db091de8065c72e83a1efd33.

Revert "[Tizen] Support KHR_materials_specular and KHR_materials_ior extension of glTF"

This reverts commit d63237ffbc775aa0328b802aed35d9da80874533.

Revert "[Tizen] Fix bug that didn't make nodes for child of multiple primitive"

This reverts commit c12abcc2110b68497af5001671060182c491b207.

Revert "[Tizen] Remove SceneView RenderTask when destroied"

This reverts commit 6fa874b3ee5fc3da1a1f95e296a033ccefe3406f.

Revert "[Tizen](Scene3D) Change model's default behavior"

This reverts commit a080be35b4960c8b7aee92c4df7cebfc9095274f.

Revert "[Tizen] Refactoring of SceneView and Model."

This reverts commit cc7b2a7ebc1454b3a16db294d87fddb34b7a2995.

Revert "[Tizen] Fix Svace issue for 64bit"

This reverts commit 6b09321d0f01f06b199117f264a39e4af7beb4d1.

Revert "[Tizen] Fix build error"

This reverts commit ff4ecf19c7d7d55af2c8750155c80c599afbc0e6.

Revert "[Tizen] Add Asynchronous loading for Model and SceneView"

This reverts commit a557071870fe977361cb6d4316927f57ee3c8f60.

Add Skybox in SceneView

Signed-off-by: seungho <sbsh.baek@samsung.com>
Fix Svace issue for 64bit

Solve some convert from size_t to uint32_t case.

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Refactoring of SceneView and Model.

 - Loosen the coupling between SceneView and Model using observer.
 - Add Priority of IBL. Model IBL has higher priority than SceneView.

Signed-off-by: seungho <sbsh.baek@samsung.com>
(Scene3D) Change model's default behavior

1. Make mRootModel's KEYBOARD_FOCUSABLE as false in default.
2. Set ParentOrigin at Intialize timing, not ModelLoad completed

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Deprecate camera plane distance setter + Allow to setup OrthographicSize.

Set each Left/Right/Top/Bottom plane distance setter is deprecated.
Instead of that API, we make to use OrthographicSize.

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Make Scene3D controls also applied actor color

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 / BlendMode as AUTO.

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Creates RenderTask when it connects on Scene and Remove it when it is disconnected.

Signed-off-by: seungho baek <sbsh.baek@samsung.com>
Enable multiple primitives in a mesh(glTF)

Signed-off-by: seunghobaek <sbsh.baek@samsung.com>
Support KHR_materials_specular and KHR_materials_ior extension of glTF

Signed-off-by: seungho baek <sbsh.baek@samsung.com>
Make SceneView FBO multisampling + Sync utc harness

Let we make SceneView's FBO usecase use multisampling as default.

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Texture size reduction on the fly for 3D model using metadata

Make FBO visual use premultiplied alpha

Since FBO result use Premultiplied alpha texture,
make sure that FBO image use premultiplied alpha during render.

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Equirectangular projection support for Skybox in SceneView

Fix Scene3d::Loader bugs

 - Make Renderer translucent when AlphaMode is Blend
 - Use discard for AlphaMode.Mask in shader
 - Fixed ConvertSampler bug.
 - Fixed crash when there isn't "scene" property in glTF
 - Fixed wrong loading of buffer when the bufferView uses stride.
 - Returns MeshDefinition::Blob::GetBufferSize() only mLength
   This is because every use case of this method is to set real buffer size without considering stride.
 - Fix texture order of Specular and Specular color.

Signed-off-by: seungho baek <sbsh.baek@samsung.com>
Allow duplicated name and use Actor ID as a unique key to define animation.

 - We don't need to make crash when multiple nodes had same name.
 - DALi actor also allows duplicated name.
 - Because name is not an unique key, make AnimationDefinition use Actor ID as a key.(for glTF)
    - glTF don't use name as a key.

Signed-off-by: seungho baek <sbsh.baek@samsung.com>
Fix Scene3D shader cache miss

1. Hash include THREE_TEX eash items.
   It will reduce some shader hash collision.
2. Make vertex color use ifdef in shader level.
   (Since we'd better skip to allocate vertex color attribs in usal case)

TODO : Current shader-define-factory.cpp implement has various problem.
We should refactorize this code, and re-open UTC soon

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Minor coverity issue fixed (scene3d only)

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Modify ColorMode Policy for SceneView and Model

 - For Model, Use ColorMode::USE_OWN_MULTIPLY_PARENT_ALPHA for ColorMode
 - Actor::Property::COLOR will affect its children Actors.
 - For SceneView, Use ColorMode::USE_OWN_COLOR when mUseFrameBuffer is true.
 - When Opacity of SceneView is animated, it looks natural.
 - But, use ColorMode::USE_OWN_MULTIPLY_PARENT_ALPHA when mUseFrameBuffer is false.
 - Then, Opacity animation is works (but slightly looks unnatural.)

Signed-off-by: seungho baek <sbsh.baek@samsung.com>
Use Renderer::BlendMode::USE_ACTOR_OPACITY instead to use depth write mode

Signed-off-by: seungho baek <sbsh.baek@samsung.com>
Bug fix to load animation of dli in Model

Signed-off-by: seungho baek <sbsh.baek@samsung.com>
Asynchronous loading of Scene3D resources

Signed-off-by: seunghobaek <sbsh.baek@samsung.com>
Fix SVACE error in scene-view

Able to load uint8_t type Joint + Able to animate 0 duration animation

This patch try to resolve 2 kind of unsupported feature.

1. There was possible to set JOINT_0 accessor type as unsigend byte.
Make it supported.

2. If duration of gltf was 0, the keyframe's progress value become -nan.
It may occure some problems.

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Use EnvironmentMapLoadTask to load Equirectangular projection image.
 - Changes SkymapType to EnvironmentMapType
 - TODO: To make IBL image support Equirectangular projection

Signed-off-by: seungho baek <sbsh.baek@samsung.com>
Fix default IBL env map type as Cube Map

Signed-off-by: seungho baek <sbsh.baek@samsung.com>
Support embedded texture data for glTF + alpha

 - Supports embedded gltf
   - Supports data: iri for image.uri
   - Supports data: iri for buffer.uri
   - Supports image.bufferView.
 - Additional Fix
   - Changes default value of Sampler.wrapS, wrapT to Refeat
   - Adds function to decode base64 to std::vector<uint_8>
   - Fixes base64 decoder to do not cut end part.

Signed-off-by: seungho baek <sbsh.baek@samsung.com>
Make API to set MultiSampling level for SceneView

Make new API to set FBO's multiSamplingLevel what this scene view will use.

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Fixed SVACE issue in gltf2-loader

Fix svace issue (uint32_t to long or std::streamsize)

To convert unsigned value into signed value safely,
we should convert as unsigned type with same size as signed type,
and after done, convert into signed type.

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Reduce decoding time of embedded gltf + Fix base64 encode bug

Let we don't copy the full string during decode base64.
+
Let we print '=' tags end of encoded base64 result, so
we can decode the encode result at common external library.

Signed-off-by: Eunki, Hong <eunkiki.hong@samsung.com>
Generate tangent as Vector4 for gltf

Since gltf use aTangent as Vector4 type, we seperate
the tangent load logic and shaders.

But dali auto generated aTangent used only for Vector3.
It mean Vector4's w value was ignored.

This patch branch whether we use Vector3 tangent or not.

Change-Id: I78c4e77b9322d997bfdf7cd3f0b548ed7a188666
Signed-off-by: Eunki Hong <eunkiki.hong@samsung.com>
96 files changed:
automated-tests/resources/AlphaBlendModeTest.gltf [new file with mode: 0644]
automated-tests/resources/AnimatedCube.gltf
automated-tests/resources/AnimatedCubeStride.gltf [new file with mode: 0644]
automated-tests/resources/BoxAnimated.gltf
automated-tests/resources/CesiumMan_e.gltf [new file with mode: 0644]
automated-tests/resources/EnvironmentTest_b.gltf [new file with mode: 0644]
automated-tests/resources/EnvironmentTest_binary_b.bin [new file with mode: 0644]
automated-tests/resources/MRendererTest.gltf
automated-tests/resources/equirectangular.png [new file with mode: 0644]
automated-tests/resources/simpleMultiplePrimitiveTest.gltf [new file with mode: 0644]
automated-tests/src/dali-scene3d/CMakeLists.txt
automated-tests/src/dali-scene3d/utc-Dali-AnimatedProperty.cpp
automated-tests/src/dali-scene3d/utc-Dali-AnimationDefinition.cpp
automated-tests/src/dali-scene3d/utc-Dali-BvhLoader.cpp
automated-tests/src/dali-scene3d/utc-Dali-CameraParameters.cpp
automated-tests/src/dali-scene3d/utc-Dali-CubeLoader.cpp [deleted file]
automated-tests/src/dali-scene3d/utc-Dali-CubeMapLoader.cpp [deleted file]
automated-tests/src/dali-scene3d/utc-Dali-DliLoader.cpp
automated-tests/src/dali-scene3d/utc-Dali-EnvironmentDefinition.cpp
automated-tests/src/dali-scene3d/utc-Dali-EnvironmentMapLoader.cpp [new file with mode: 0644]
automated-tests/src/dali-scene3d/utc-Dali-FacialAnimation.cpp
automated-tests/src/dali-scene3d/utc-Dali-Gltf2Loader.cpp
automated-tests/src/dali-scene3d/utc-Dali-KtxLoader.cpp
automated-tests/src/dali-scene3d/utc-Dali-Model.cpp
automated-tests/src/dali-scene3d/utc-Dali-NodeDefinition.cpp
automated-tests/src/dali-scene3d/utc-Dali-RendererState.cpp
automated-tests/src/dali-scene3d/utc-Dali-SceneDefinition.cpp
automated-tests/src/dali-scene3d/utc-Dali-SceneView.cpp
automated-tests/src/dali-scene3d/utc-Dali-ShaderDefinitionFactory.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-graphics-buffer.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-scene-holder-impl.h
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-scene-holder.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-window.h
automated-tests/src/dali-toolkit/utc-Dali-Builder.cpp
dali-scene3d/internal/common/environment-map-load-task.cpp [new file with mode: 0644]
dali-scene3d/internal/common/environment-map-load-task.h [new file with mode: 0644]
dali-scene3d/internal/common/model-load-task.cpp [new file with mode: 0644]
dali-scene3d/internal/common/model-load-task.h [new file with mode: 0644]
dali-scene3d/internal/controls/model/model-impl.cpp
dali-scene3d/internal/controls/model/model-impl.h
dali-scene3d/internal/controls/scene-view/scene-view-impl.cpp
dali-scene3d/internal/controls/scene-view/scene-view-impl.h
dali-scene3d/internal/file.list
dali-scene3d/internal/graphics/shaders/default-physically-based-shader.frag
dali-scene3d/internal/graphics/shaders/default-physically-based-shader.vert
dali-scene3d/internal/graphics/shaders/skybox-equirectangular-shader.frag [new file with mode: 0644]
dali-scene3d/internal/graphics/shaders/skybox-shader.frag [new file with mode: 0644]
dali-scene3d/internal/graphics/shaders/skybox-shader.vert [new file with mode: 0644]
dali-scene3d/internal/loader/gltf2-asset.h
dali-scene3d/public-api/common/environment-map.h [new file with mode: 0644]
dali-scene3d/public-api/controls/model/model.cpp
dali-scene3d/public-api/controls/model/model.h
dali-scene3d/public-api/controls/scene-view/scene-view.cpp
dali-scene3d/public-api/controls/scene-view/scene-view.h
dali-scene3d/public-api/file.list
dali-scene3d/public-api/loader/animated-property.h
dali-scene3d/public-api/loader/animation-definition.cpp
dali-scene3d/public-api/loader/buffer-definition.cpp [new file with mode: 0644]
dali-scene3d/public-api/loader/buffer-definition.h [new file with mode: 0644]
dali-scene3d/public-api/loader/camera-parameters.cpp
dali-scene3d/public-api/loader/camera-parameters.h
dali-scene3d/public-api/loader/cube-data.cpp [deleted file]
dali-scene3d/public-api/loader/cube-data.h [deleted file]
dali-scene3d/public-api/loader/cube-loader.cpp [deleted file]
dali-scene3d/public-api/loader/cube-map-loader.cpp [deleted file]
dali-scene3d/public-api/loader/cube-map-loader.h [deleted file]
dali-scene3d/public-api/loader/dli-loader.cpp
dali-scene3d/public-api/loader/environment-definition.cpp
dali-scene3d/public-api/loader/environment-definition.h
dali-scene3d/public-api/loader/environment-map-data.cpp [new file with mode: 0644]
dali-scene3d/public-api/loader/environment-map-data.h [new file with mode: 0644]
dali-scene3d/public-api/loader/environment-map-loader.cpp [new file with mode: 0644]
dali-scene3d/public-api/loader/environment-map-loader.h [moved from dali-scene3d/public-api/loader/cube-loader.h with 54% similarity]
dali-scene3d/public-api/loader/gltf2-loader.cpp
dali-scene3d/public-api/loader/gltf2-loader.h
dali-scene3d/public-api/loader/ktx-loader.cpp
dali-scene3d/public-api/loader/ktx-loader.h
dali-scene3d/public-api/loader/material-definition.cpp
dali-scene3d/public-api/loader/material-definition.h
dali-scene3d/public-api/loader/mesh-definition.cpp
dali-scene3d/public-api/loader/mesh-definition.h
dali-scene3d/public-api/loader/node-definition.cpp
dali-scene3d/public-api/loader/node-definition.h
dali-scene3d/public-api/loader/renderer-state.cpp
dali-scene3d/public-api/loader/resource-bundle.cpp
dali-scene3d/public-api/loader/resource-bundle.h
dali-scene3d/public-api/loader/scene-definition.cpp
dali-scene3d/public-api/loader/shader-definition-factory.cpp
dali-scene3d/public-api/loader/shader-definition-factory.h
dali-scene3d/public-api/loader/shader-definition.cpp
dali-scene3d/public-api/loader/shader-definition.h
dali-toolkit/devel-api/builder/base64-encoding.cpp
dali-toolkit/devel-api/builder/base64-encoding.h
dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp
dali-toolkit/third-party/base-n/basen.hpp