X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Fcontrols%2Fscene3d-view%2Fgltf-loader.cpp;h=b1cd70d44cd42b74a4635a37bda4bdeb443c4cc2;hb=HEAD;hp=c25e3d0cf5060c1e90a669e352ba6d7ac56a7da3;hpb=1913a75d0158e7142dd2d81324e650aa84c59056;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp b/dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp index c25e3d0..b1cd70d 100644 --- a/dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp +++ b/dali-toolkit/internal/controls/scene3d-view/gltf-loader.cpp @@ -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) { @@ -396,10 +398,10 @@ void SetVertexBufferData(MeshInfo& meshInfo, std::string path, std::vector= 0) { Dali::Vector bufferData; - LoadDataFromAccessor(accessorIdx, bufferData, path, accessorArray, bufferViewArray, bufferArray); + LoadDataFromAccessor(accessorIdx, bufferData, std::move(path), accessorArray, bufferViewArray, bufferArray); SetMeshInfoAndCanonize(meshInfo, bufferData); - VertexBuffer vertexBuffer = CreateVertexBuffer(bufferData, map, type); + VertexBuffer vertexBuffer = CreateVertexBuffer(bufferData, std::move(map), type); meshInfo.geometry.AddVertexBuffer(vertexBuffer); } } @@ -410,9 +412,9 @@ void SetAttributeBufferData(MeshInfo& meshInfo, std::string path, std::vector= 0) { Dali::Vector bufferData; - LoadDataFromAccessor(accessorIdx, bufferData, path, accessorArray, bufferViewArray, bufferArray); + LoadDataFromAccessor(accessorIdx, bufferData, std::move(path), accessorArray, bufferViewArray, bufferArray); - VertexBuffer vertexBuffer = CreateVertexBuffer(bufferData, map, type); + VertexBuffer vertexBuffer = CreateVertexBuffer(bufferData, std::move(map), type); meshInfo.geometry.AddVertexBuffer(vertexBuffer); } } @@ -420,7 +422,7 @@ void SetAttributeBufferData(MeshInfo& meshInfo, std::string path, std::vector& accessorArray, std::vector& bufferViewArray, std::vector& bufferArray, int32_t indexIdx) { Dali::Vector indexBufferData; - LoadDataFromAccessor(indexIdx, indexBufferData, path, accessorArray, bufferViewArray, bufferArray); + LoadDataFromAccessor(indexIdx, indexBufferData, std::move(path), accessorArray, bufferViewArray, bufferArray); meshInfo.geometry.SetIndexBuffer(&indexBufferData[0], indexBufferData.Size()); } @@ -434,7 +436,7 @@ float LoadKeyFrames(const AnimationSamplerInfo& currentSampler, const Property:: LoadDataFromAccessor(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];