X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;ds=sidebyside;f=automated-tests%2Fsrc%2Fdali-scene3d%2Futc-Dali-MeshDefinition.cpp;h=ba67d42378ddb813b1fe83ba740c298e9fa1b0ff;hb=HEAD;hp=377e68d965b4b8e3cb9182f59518d6b2b41df16e;hpb=f2ee13ccda8c768fddc68f5208b7dcfa54c07242;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/automated-tests/src/dali-scene3d/utc-Dali-MeshDefinition.cpp b/automated-tests/src/dali-scene3d/utc-Dali-MeshDefinition.cpp index 377e68d..2754ad3 100644 --- a/automated-tests/src/dali-scene3d/utc-Dali-MeshDefinition.cpp +++ b/automated-tests/src/dali-scene3d/utc-Dali-MeshDefinition.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. @@ -17,7 +17,8 @@ #include -#include "dali-scene3d/public-api/loader/mesh-definition.h" +#include +#include #include using namespace Dali; @@ -27,14 +28,14 @@ int UtcDaliMeshDefinitionBlobApplyMinMaxBothMinMaxApplied(void) { using Container = std::vector; - Container buffer = { 4.0f, 6.0f, 8.0f, 10.0f, 12.0f }; - Container minValues = { 5.0f }; - Container maxValues = { 10.0f }; - Container result = {5.0f, 6.0f, 8.0f, 10.0f, 10.0f}; + Container buffer = {4.0f, 6.0f, 8.0f, 10.0f, 12.0f}; + Container minValues = {5.0f}; + Container maxValues = {10.0f}; + Container result = {5.0f, 6.0f, 8.0f, 10.0f, 10.0f}; MeshDefinition::Blob::ApplyMinMax(minValues, maxValues, 5, buffer.data()); - for( auto i = 0u; i < result.size(); ++i) + for(auto i = 0u; i < result.size(); ++i) { DALI_TEST_EQUALS(buffer[i], result[i], TEST_LOCATION); } @@ -46,14 +47,14 @@ int UtcDaliMeshDefinitionBlobApplyMinMaxOnlyMin(void) { using Container = std::vector; - Container buffer = { 4.0f, 6.0f, 8.0f, 10.0f, 12.0f }; - Container minValues = { 5.0f }; + Container buffer = {4.0f, 6.0f, 8.0f, 10.0f, 12.0f}; + Container minValues = {5.0f}; Container maxValues = {}; - Container result = {5.0f, 6.0f, 8.0f, 10.0f, 12.0f}; + Container result = {5.0f, 6.0f, 8.0f, 10.0f, 12.0f}; MeshDefinition::Blob::ApplyMinMax(minValues, maxValues, 5, buffer.data()); - for( auto i = 0u; i < result.size(); ++i) + for(auto i = 0u; i < result.size(); ++i) { DALI_TEST_EQUALS(buffer[i], result[i], TEST_LOCATION); } @@ -65,14 +66,14 @@ int UtcDaliMeshDefinitionBlobApplyMinMaxOnlyMax(void) { using Container = std::vector; - Container buffer = { 4.0f, 6.0f, 8.0f, 10.0f, 12.0f }; - Container minValues = { }; - Container maxValues = { 10.0f }; - Container result = {4.0f, 6.0f, 8.0f, 10.0f, 10.0f}; + Container buffer = {4.0f, 6.0f, 8.0f, 10.0f, 12.0f}; + Container minValues = {}; + Container maxValues = {10.0f}; + Container result = {4.0f, 6.0f, 8.0f, 10.0f, 10.0f}; MeshDefinition::Blob::ApplyMinMax(minValues, maxValues, 5, buffer.data()); - for( auto i = 0u; i < result.size(); ++i) + for(auto i = 0u; i < result.size(); ++i) { DALI_TEST_EQUALS(buffer[i], result[i], TEST_LOCATION); } @@ -84,14 +85,14 @@ int UtcDaliMeshDefinitionBlobApplyMinMaxBothEmpty(void) { using Container = std::vector; - Container buffer = { 4.0f, 6.0f, 8.0f, 10.0f, 12.0f }; + Container buffer = {4.0f, 6.0f, 8.0f, 10.0f, 12.0f}; Container minValues; Container maxValues; Container result = {4.0f, 6.0f, 8.0f, 10.0f, 12.0f}; MeshDefinition::Blob::ApplyMinMax(minValues, maxValues, 5, buffer.data()); - for( auto i = 0u; i < result.size(); ++i) + for(auto i = 0u; i < result.size(); ++i) { DALI_TEST_EQUALS(buffer[i], result[i], TEST_LOCATION); } @@ -99,3 +100,86 @@ int UtcDaliMeshDefinitionBlobApplyMinMaxBothEmpty(void) END_TEST; } +int UtcDaliMeshDefinitionByteSkinWeight(void) +{ + float data8[8] = {0.003922, 0.062745, 0.250980, 0.098039, 0.937255, 0.749020, 0.741176, 0.937255}; + + BufferDefinition bufferDefinition; + bufferDefinition.mUri = "data:application/base64,ARBAGe+/ve+/vT9hc2RmYXNkZmFzZGZhc2RmYXNkZmE="; + bufferDefinition.mByteLength = 32; + BufferDefinition::Vector buffers; + buffers.push_back(std::move(bufferDefinition)); + + MeshDefinition meshDefinition; + meshDefinition.mFlags = MeshDefinition::U16_JOINT_IDS | MeshDefinition::U8_WEIGHT; + MeshDefinition::SparseBlob sparseBlob; + meshDefinition.mPositions = + MeshDefinition::Accessor{ + std::move(MeshDefinition::Blob{0, 12, 0, (uint16_t)12, std::vector(), std::vector()}), std::move(sparseBlob), 0}; + meshDefinition.mJoints.push_back( + MeshDefinition::Accessor{ + std::move(MeshDefinition::Blob{0, 16, 0, (uint16_t)16, std::vector(), std::vector()}), std::move(sparseBlob), 0}); + meshDefinition.mWeights.push_back( + MeshDefinition::Accessor{ + std::move(MeshDefinition::Blob{0, 8, 0, (uint16_t)8, std::vector(), std::vector()}), std::move(sparseBlob), 0}); + + MeshDefinition::RawData rawData = meshDefinition.LoadRaw("", buffers); + + DALI_TEST_EQUALS(rawData.mAttribs.size(), 4, TEST_LOCATION); + DALI_TEST_EQUALS(rawData.mAttribs[3].mName, "aWeights0", TEST_LOCATION); + DALI_TEST_EQUALS(rawData.mAttribs[3].mNumElements, 2, TEST_LOCATION); + float* value = reinterpret_cast(rawData.mAttribs[3].mData.data()); + for(uint32_t i = 0; i < rawData.mAttribs[3].mNumElements * 4; ++i) + { + DALI_TEST_EQUALS(*value, data8[i], TEST_LOCATION); + value++; + } + END_TEST; +} + +int UtcDaliMeshDefinitionShortSkinWeight(void) +{ + float data8[8] = {0.062516, 0.098634, 0.749752, 0.936492, 0.741207, 0.379873, 0.392386, 0.380468}; + + BufferDefinition bufferDefinition; + bufferDefinition.mUri = "data:application/base64,ARBAGe+/ve+/vT9hc2RmYXNkZmFzZGZhc2RmYXNkZmE="; + bufferDefinition.mByteLength = 32; + BufferDefinition::Vector buffers; + buffers.push_back(std::move(bufferDefinition)); + + MeshDefinition meshDefinition; + meshDefinition.mFlags = MeshDefinition::U16_JOINT_IDS | MeshDefinition::U16_WEIGHT; + MeshDefinition::SparseBlob sparseBlob; + meshDefinition.mPositions = + MeshDefinition::Accessor{ + std::move(MeshDefinition::Blob{0, 12, 0, (uint16_t)12, std::vector(), std::vector()}), std::move(sparseBlob), 0}; + meshDefinition.mJoints.push_back( + MeshDefinition::Accessor{ + std::move(MeshDefinition::Blob{0, 16, 0, (uint16_t)16, std::vector(), std::vector()}), std::move(sparseBlob), 0}); + meshDefinition.mWeights.push_back( + MeshDefinition::Accessor{ + std::move(MeshDefinition::Blob{0, 16, 0, (uint16_t)16, std::vector(), std::vector()}), std::move(sparseBlob), 0}); + + MeshDefinition::RawData rawData = meshDefinition.LoadRaw("", buffers); + + DALI_TEST_EQUALS(rawData.mAttribs.size(), 4, TEST_LOCATION); + DALI_TEST_EQUALS(rawData.mAttribs[3].mName, "aWeights0", TEST_LOCATION); + DALI_TEST_EQUALS(rawData.mAttribs[3].mNumElements, 2, TEST_LOCATION); + float* value = reinterpret_cast(rawData.mAttribs[3].mData.data()); + for(uint32_t i = 0; i < rawData.mAttribs[3].mNumElements * 4; ++i) + { + DALI_TEST_EQUALS(*value, data8[i], TEST_LOCATION); + value++; + } + END_TEST; +} + +int UtcDaliMeshDefinitionInvalidUrl(void) +{ + MeshDefinition meshDefinition; + meshDefinition.mUri = "invalid-uri/"; + BufferDefinition::Vector buffers; + MeshDefinition::RawData rawData = meshDefinition.LoadRaw("invalidModelPath", buffers); + DALI_TEST_EQUALS(rawData.mIndices.size(), 0u, TEST_LOCATION); + END_TEST; +} \ No newline at end of file