[dali_2.3.23] Merge branch 'devel/master'
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / controls / scene3d-view / gltf-loader.cpp
index 8bcc978..b1cd70d 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2024 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -38,6 +38,8 @@ namespace Gltf
 {
 namespace
 {
+constexpr float MIN_DURATION_SECONDS = 1e-2f;
+
 // Utility functions
 const TreeNode* Tidx(const TreeNode* node, uint32_t index)
 {
@@ -434,7 +436,7 @@ float LoadKeyFrames(const AnimationSamplerInfo& currentSampler, const Property::
   LoadDataFromAccessor<T>(currentSampler.output, outputBufferData, path, accessorArray, bufferViewArray, bufferArray);
 
   uint32_t keyframeNum     = inputBufferData.Size();
-  float    lengthAnimation = inputBufferData[inputBufferData.Size() - 1];
+  float    lengthAnimation = std::max((inputBufferData.Size() > 0u ? inputBufferData[inputBufferData.Size() - 1] : MIN_DURATION_SECONDS), MIN_DURATION_SECONDS);
   for(uint32_t i = 0; i < keyframeNum; i++)
   {
     if(propIndex == Dali::Actor::Property::ORIENTATION)
@@ -1589,7 +1591,9 @@ Actor Loader::AddNode(Scene3dView& scene3dView, uint32_t index)
     FRAGMENT_SHADER += SHADER_GLTF_PHYSICALLY_BASED_SHADER_FRAG.data();
     if(!mShaderCache[shaderTypeIndex])
     {
-      mShaderCache[shaderTypeIndex] = Shader::New(VERTEX_SHADER, FRAGMENT_SHADER);
+      std::ostringstream oss;
+      oss << "GLTF_VIEW_" << shaderTypeIndex;
+      mShaderCache[shaderTypeIndex] = Shader::New(VERTEX_SHADER, FRAGMENT_SHADER, Shader::Hint::NONE, oss.str());
       scene3dView.AddShader(mShaderCache[shaderTypeIndex]);
     }
     Shader shader = mShaderCache[shaderTypeIndex];