2 * Copyright (c) 2023 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include <dali-test-suite-utils.h>
19 #include <dali-toolkit/dali-toolkit.h>
20 #include <string_view>
21 #include "dali-scene3d/public-api/loader/shader-option.h"
24 using namespace Dali::Toolkit;
26 void shader_definition_option_startup(void)
28 test_return_value = TET_UNDEF;
31 void shader_definition_option_cleanup(void)
33 test_return_value = TET_PASS;
36 int UtcDaliShaderOptionInit(void)
38 Scene3D::Loader::ShaderOption option;
39 DALI_TEST_EQUALS(option.GetOptionHash(), 0u, TEST_LOCATION);
43 int UtcDaliShaderOptionSetTransparency(void)
45 Scene3D::Loader::ShaderOption option;
46 DALI_TEST_EQUALS(option.GetOptionHash(), 0u, TEST_LOCATION);
48 option.SetTransparency();
49 DALI_TEST_NOT_EQUALS(option.GetOptionHash(), static_cast<uint64_t>(0u), 0.1f, TEST_LOCATION);
54 int UtcDaliShaderOptionAddOption(void)
56 Scene3D::Loader::ShaderOption option;
57 DALI_TEST_EQUALS(option.GetOptionHash(), 0u, TEST_LOCATION);
59 Scene3D::Loader::ShaderOption::Type types[19] = {
60 Scene3D::Loader::ShaderOption::Type::GLTF_CHANNELS,
61 Scene3D::Loader::ShaderOption::Type::THREE_TEXTURE,
62 Scene3D::Loader::ShaderOption::Type::BASE_COLOR_TEXTURE,
63 Scene3D::Loader::ShaderOption::Type::METALLIC_ROUGHNESS_TEXTURE,
64 Scene3D::Loader::ShaderOption::Type::NORMAL_TEXTURE,
65 Scene3D::Loader::ShaderOption::Type::OCCLUSION,
66 Scene3D::Loader::ShaderOption::Type::EMISSIVE,
67 Scene3D::Loader::ShaderOption::Type::ALPHA_TEST,
68 Scene3D::Loader::ShaderOption::Type::SUBSURFACE,
69 Scene3D::Loader::ShaderOption::Type::SPECULAR,
70 Scene3D::Loader::ShaderOption::Type::SPECULAR_COLOR,
71 Scene3D::Loader::ShaderOption::Type::SKINNING,
72 Scene3D::Loader::ShaderOption::Type::FLIP_UVS_VERTICAL,
73 Scene3D::Loader::ShaderOption::Type::COLOR_ATTRIBUTE,
74 Scene3D::Loader::ShaderOption::Type::VEC4_TANGENT,
75 Scene3D::Loader::ShaderOption::Type::MORPH_POSITION,
76 Scene3D::Loader::ShaderOption::Type::MORPH_NORMAL,
77 Scene3D::Loader::ShaderOption::Type::MORPH_TANGENT,
78 Scene3D::Loader::ShaderOption::Type::MORPH_VERSION_2_0};
81 for(uint32_t i = 0; i < 19; ++i)
83 hash |= (1 << static_cast<uint32_t>(types[i]));
84 option.AddOption(types[i]);
85 DALI_TEST_EQUALS(option.GetOptionHash(), hash, TEST_LOCATION);
91 int UtcDaliShaderOptionGetDefines(void)
93 Scene3D::Loader::ShaderOption option;
94 DALI_TEST_EQUALS(option.GetOptionHash(), 0u, TEST_LOCATION);
96 Scene3D::Loader::ShaderOption::Type types[19] = {
97 Scene3D::Loader::ShaderOption::Type::GLTF_CHANNELS,
98 Scene3D::Loader::ShaderOption::Type::THREE_TEXTURE,
99 Scene3D::Loader::ShaderOption::Type::BASE_COLOR_TEXTURE,
100 Scene3D::Loader::ShaderOption::Type::METALLIC_ROUGHNESS_TEXTURE,
101 Scene3D::Loader::ShaderOption::Type::NORMAL_TEXTURE,
102 Scene3D::Loader::ShaderOption::Type::OCCLUSION,
103 Scene3D::Loader::ShaderOption::Type::EMISSIVE,
104 Scene3D::Loader::ShaderOption::Type::ALPHA_TEST,
105 Scene3D::Loader::ShaderOption::Type::SUBSURFACE,
106 Scene3D::Loader::ShaderOption::Type::SPECULAR,
107 Scene3D::Loader::ShaderOption::Type::SPECULAR_COLOR,
108 Scene3D::Loader::ShaderOption::Type::SKINNING,
109 Scene3D::Loader::ShaderOption::Type::FLIP_UVS_VERTICAL,
110 Scene3D::Loader::ShaderOption::Type::COLOR_ATTRIBUTE,
111 Scene3D::Loader::ShaderOption::Type::VEC4_TANGENT,
112 Scene3D::Loader::ShaderOption::Type::MORPH_POSITION,
113 Scene3D::Loader::ShaderOption::Type::MORPH_NORMAL,
114 Scene3D::Loader::ShaderOption::Type::MORPH_TANGENT,
115 Scene3D::Loader::ShaderOption::Type::MORPH_VERSION_2_0};
118 for(uint32_t i = 0; i < 19; ++i)
120 hash |= (1 << static_cast<uint32_t>(types[i]));
121 option.AddOption(types[i]);
122 DALI_TEST_EQUALS(option.GetOptionHash(), hash, TEST_LOCATION);
124 std::vector<std::string> defines;
125 option.GetDefines(defines);
126 DALI_TEST_EQUALS(defines.size(), i + 1, TEST_LOCATION);
127 for(uint32_t j = 0; j < defines.size(); ++j)
129 DALI_TEST_EQUALS(defines[j], option.GetDefineKeyword(types[j]), TEST_LOCATION);