1# Copyright (c) 2024 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//build/ohos.gni") 15import("//foundation/graphic/graphic_3d/lume/lume_config.gni") 16 17declare_args() { 18 CORE3D_EMBEDDED_ASSETS_ENABLED=true 19 CORE3D_ROFS = "rofs3D" 20} 21 22config("lume_3d_api") { 23 include_dirs = [ 24 "api", 25 ] 26} 27 28config("lume_3d_config") { 29 include_dirs = [ 30 "src/", 31 "assets/", 32 ] 33 34 defines = [ 35 "__OHOS_PLATFORM__", 36 "CORE3D_PUBLIC=__attribute__((visibility(\"default\")))", 37 "CORE_USE_COMPILER_GENERATED_STATIC_LIST=1", 38 "CORE3D_SHARED_LIBRARY=1", 39 "CORE3D_VALIDATION_ENABLED=0", 40 "CORE3D_TESTS_ENABLED=0", 41 "CORE3D_DEV_ENABLED=${CORE_DEV_ENABLED}", 42 "CORE3D_PUBLIC=__attribute__((visibility(\"default\")))", 43 "CORE_USE_COMPILER_GENERATED_STATIC_LIST=1", 44 "CORE_STATIC_PLUGIN_HEADER=${CORE_STATIC_PLUGIN_HEADER }" 45 ] 46 47 if (LUME_OHOS_BUILD) { 48 defines += [ 49 "__OHOS_PLATFORM__", 50 ] 51 } 52 53 if (CORE3D_EMBEDDED_ASSETS_ENABLED) { 54 defines += [ 55 "CORE3D_EMBEDDED_ASSETS_ENABLED=1", 56 ] 57 } 58 59 cflags = [ 60 "-Wno-braced-scalar-init" 61 ] 62} 63 64ohos_source_set("lume_3d_src") { 65 public_configs = [ 66 ":lume_3d_config", 67 ":lume_3d_api", 68 "${LUME_RENDER_PATH}:lume_render_api", 69 "${LUME_CORE_PATH}:lume_base_api", 70 "${LUME_CORE_PATH}:lume_engine_api", 71 "${LUME_CORE_PATH}:lume_component_help_config", 72 "${LUME_CORE_PATH}:lume_default" 73 ] 74 75 sources = [ 76 "version.cpp", 77 "src/ecs/components/animation_component_manager.cpp", 78 "src/ecs/components/animation_input_component_manager.cpp", 79 "src/ecs/components/animation_output_component_manager.cpp", 80 "src/ecs/components/animation_state_component_manager.cpp", 81 "src/ecs/components/animation_track_component_manager.cpp", 82 "src/ecs/components/camera_component_manager.cpp", 83 "src/ecs/components/dynamic_environment_blender_manager.cpp", 84 "src/ecs/components/environment_component_manager.cpp", 85 "src/ecs/components/fog_component_manager.cpp", 86 "src/ecs/components/graphics_state_component_manager.cpp", 87 "src/ecs/components/initial_transform_component.h", 88 "src/ecs/components/initial_transform_component_manager.cpp", 89 "src/ecs/components/joint_matrices_component_manager.cpp", 90 "src/ecs/components/layer_component_manager.cpp", 91 "src/ecs/components/layer_flag_bits_metadata.h", 92 "src/ecs/components/light_component_manager.cpp", 93 "src/ecs/components/local_matrix_component_manager.cpp", 94 "src/ecs/components/material_component_manager.cpp", 95 "src/ecs/components/mesh_component_manager.cpp", 96 "src/ecs/components/morph_component_manager.cpp", 97 "src/ecs/components/name_component_manager.cpp", 98 "src/ecs/components/node_component_manager.cpp", 99 "src/ecs/components/physical_camera_component_manager.cpp", 100 "src/ecs/components/planar_reflection_component_manager.cpp", 101 "src/ecs/components/post_process_component_manager.cpp", 102 "src/ecs/components/post_process_configuration_component_manager.cpp", 103 "src/ecs/components/previous_joint_matrices_component.h", 104 "src/ecs/components/previous_joint_matrices_component_manager.cpp", 105 "src/ecs/components/reflection_probe_component_manager.cpp", 106 "src/ecs/components/render_configuration_component_manager.cpp", 107 "src/ecs/components/render_handle_component_manager.cpp", 108 "src/ecs/components/render_mesh_batch_component_manager.cpp", 109 "src/ecs/components/render_mesh_component_manager.cpp", 110 "src/ecs/components/rsdz_model_id_component_manager.cpp", 111 "src/ecs/components/skin_component_manager.cpp", 112 "src/ecs/components/skin_ibm_component_manager.cpp", 113 "src/ecs/components/skin_joints_component_manager.cpp", 114 "src/ecs/components/transform_component_manager.cpp", 115 "src/ecs/components/uri_component_manager.cpp", 116 "src/ecs/components/water_ripple_component_manager.cpp", 117 "src/ecs/components/weather_component_manager.cpp", 118 "src/ecs/components/world_matrix_component_manager.cpp", 119 "src/ecs/systems/animation_playback.cpp", 120 "src/ecs/systems/animation_playback.h", 121 "src/ecs/systems/animation_system.cpp", 122 "src/ecs/systems/animation_system.h", 123 "src/ecs/systems/local_matrix_system.cpp", 124 "src/ecs/systems/local_matrix_system.h", 125 "src/ecs/systems/morphing_system.cpp", 126 "src/ecs/systems/morphing_system.h", 127 "src/ecs/systems/node_system.cpp", 128 "src/ecs/systems/node_system.h", 129 "src/ecs/systems/render_preprocessor_system.cpp", 130 "src/ecs/systems/render_preprocessor_system.h", 131 "src/ecs/systems/render_system.cpp", 132 "src/ecs/systems/render_system.h", 133 "src/ecs/systems/skinning_system.cpp", 134 "src/ecs/systems/skinning_system.h", 135 "src/ecs/systems/weather_system.cpp", 136 "src/ecs/systems/weather_system.h", 137 "src/gltf/data.h", 138 "src/gltf/gltf2.cpp", 139 "src/gltf/gltf2.h", 140 "src/gltf/gltf2_data_structures.h", 141 "src/gltf/gltf2_exporter.cpp", 142 "src/gltf/gltf2_exporter.h", 143 "src/gltf/gltf2_importer.cpp", 144 "src/gltf/gltf2_importer.h", 145 "src/gltf/gltf2_loader.cpp", 146 "src/gltf/gltf2_loader.h", 147 "src/gltf/gltf2_util.cpp", 148 "src/gltf/gltf2_util.h", 149 "src/graphics_context.cpp", 150 "src/graphics_context.h", 151 "src/plugin/static_plugin.cpp", 152 "src/property/property_handle.cpp", 153 "src/property/property_handle.h", 154 "src/render/datastore/render_data_store_default_camera.cpp", 155 "src/render/datastore/render_data_store_default_camera.h", 156 "src/render/datastore/render_data_store_default_light.cpp", 157 "src/render/datastore/render_data_store_default_light.h", 158 "src/render/datastore/render_data_store_default_material.cpp", 159 "src/render/datastore/render_data_store_default_material.h", 160 "src/render/datastore/render_data_store_default_scene.cpp", 161 "src/render/datastore/render_data_store_default_scene.h", 162 "src/render/datastore/render_data_store_morph.cpp", 163 "src/render/datastore/render_data_store_morph.h", 164 "src/render/datastore/render_data_store_weather.cpp", 165 "src/render/datastore/render_data_store_weather.h", 166 "src/render/default_constants.h", 167 "src/render/node/render_light_helper.h", 168 "src/render/node/render_node_camera_single_post_process.cpp", 169 "src/render/node/render_node_camera_single_post_process.h", 170 "src/render/node/render_node_camera_weather.cpp", 171 "src/render/node/render_node_camera_weather.h", 172 "src/render/node/render_node_create_default_camera_gpu_images.cpp", 173 "src/render/node/render_node_create_default_camera_gpu_images.h", 174 "src/render/node/render_node_default_cameras.cpp", 175 "src/render/node/render_node_default_cameras.h", 176 "src/render/node/render_node_default_camera_controller.cpp", 177 "src/render/node/render_node_default_camera_controller.h", 178 "src/render/node/render_node_default_camera_post_process_controller.cpp", 179 "src/render/node/render_node_default_camera_post_process_controller.h", 180 "src/render/node/render_node_default_depth_render_slot.cpp", 181 "src/render/node/render_node_default_depth_render_slot.h", 182 "src/render/node/render_node_default_env.cpp", 183 "src/render/node/render_node_default_env.h", 184 "src/render/node/render_node_default_environment_blender.cpp", 185 "src/render/node/render_node_default_environment_blender.h", 186 "src/render/node/render_node_default_lights.cpp", 187 "src/render/node/render_node_default_lights.h", 188 "src/render/node/render_node_default_material_deferred_shading.cpp", 189 "src/render/node/render_node_default_material_deferred_shading.h", 190 "src/render/node/render_node_default_material_objects.cpp", 191 "src/render/node/render_node_default_material_objects.h", 192 "src/render/node/render_node_default_material_render_slot.cpp", 193 "src/render/node/render_node_default_material_render_slot.h", 194 "src/render/node/render_node_default_shadows_blur.cpp", 195 "src/render/node/render_node_default_shadows_blur.h", 196 "src/render/node/render_node_default_shadow_render_slot.cpp", 197 "src/render/node/render_node_default_shadow_render_slot.h", 198 "src/render/node/render_node_generics.cpp", 199 "src/render/node/render_node_generics.h", 200 "src/render/node/render_node_morph.cpp", 201 "src/render/node/render_node_morph.h", 202 "src/render/node/render_node_weather_simulation.cpp", 203 "src/render/node/render_node_weather_simulation.h", 204 "src/render/render_node_scene_util.cpp", 205 "src/render/render_node_scene_util.h", 206 "src/util/component_util_functions.h", 207 "src/util/json_util.h", 208 "src/util/linear_allocator.h", 209 "src/util/log.h", 210 "src/util/mesh_builder.cpp", 211 "src/util/mesh_builder.h", 212 "src/util/mesh_util.cpp", 213 "src/util/mesh_util.h", 214 "src/util/picking.cpp", 215 "src/util/picking.h", 216 "src/util/property_util.cpp", 217 "src/util/property_util.h", 218 "src/util/render_util.cpp", 219 "src/util/render_util.h", 220 "src/util/scene_util.cpp", 221 "src/util/scene_util.h", 222 "src/util/string_util.h", 223 "src/util/uri_lookup.cpp", 224 "src/util/uri_lookup.h", 225 ] 226 deps = [ "${LUME_CORE_PATH}/ecshelper:libAGPEcshelper" ] 227 228 external_deps = [ 229 "c_utils:utils", 230 "vulkan-headers:vulkan_headers", 231 "vulkan-loader:vulkan_loader", 232 ] 233 part_name = "graphic_3d" 234 subsystem_name = "graphic" 235} 236 237lume_compile_shader("lume_3d_compile_shader") 238{ 239 script = "${LUME_CORE_PATH}/tools/CompilerShader.sh" 240 outputs = [ "$target_gen_dir" ] 241 tool_path = "$target_gen_dir/../LumeBinaryCompile/LumeShaderCompiler" 242 dest_gen_path = "$target_gen_dir/assets" 243 asset_path = rebase_path("./assets/3d", root_build_dir) 244 shader_path = "${dest_gen_path}/shaders" 245 include_path = rebase_path("api", root_build_dir) 246 render_include_path = "${LUME_PATH}/${RENDER_DIR_NAME}/api/" 247 compileShader_deps=["${LUME_BINARY_PATH}/LumeShaderCompiler:lume_binary_shader_compile"] 248 if (ohos_indep_compiler_enable) { 249 tool_path = "//prebuilts/graphics_3d/AGPBinaryCompile" 250 compileShader_deps -= [ 251 "${LUME_BINARY_PATH}/LumeShaderCompiler:lume_binary_shader_compile", 252 ] 253 } 254} 255 256lume_rofs("lume_3d_rofs") 257{ 258 output_obj= "" 259 if (target_cpu == "arm") { 260 output_obj = "${CORE3D_ROFS}_32.o" 261 } 262 263 if (target_cpu == "arm64") { 264 output_obj = "${CORE3D_ROFS}_64.o" 265 } 266 267 if (target_cpu == "x86") { 268 output_obj = "${CORE3D_ROFS}_x32.o" 269 } 270 271 if (target_cpu == "x64") { 272 output_obj = "${CORE3D_ROFS}_x64.o" 273 } 274 275 outputs = "${target_gen_dir}/assets/${output_obj}" 276 277 tool_path = "$target_gen_dir/../LumeBinaryCompile/lumeassetcompiler" 278 root = "/" 279 bin_name = "BINARY_DATA_FOR_3D" 280 size_name = "SIZE_OF_DATA_FOR_3D" 281 base_name = CORE3D_ROFS 282 script = "${LUME_CORE_PATH}/tools/CompilerAsset.sh" 283 copy_path = "$target_gen_dir/assets" 284 compileShader_deps = [ 285 ":lume_3d_compile_shader", 286 "${LUME_BINARY_PATH}/lumeassetcompiler:lume_binary_assets_compile" 287 ] 288 if (ohos_indep_compiler_enable) { 289 tool_path = "//prebuilts/graphics_3d/AGPBinaryCompile/" 290 compileShader_deps -= [ 291 "${LUME_BINARY_PATH}/lumeassetcompiler:lume_binary_assets_compile", 292 ] 293 } 294 file_extension = "\".spv;.json;.lsb;.shader;.shadergs;.shadervid;.shaderpl;.rng;.gl;.gles\"" 295} 296 297source_set("lume_3d_rofs_obj") { 298 output_obj = "" 299 if (target_cpu == "arm") { 300 output_obj = "${CORE3D_ROFS}_32.o" 301 } 302 303 if (target_cpu == "arm64") { 304 output_obj = "${CORE3D_ROFS}_64.o" 305 } 306 307 if (target_cpu == "x86") { 308 output_obj = "${CORE3D_ROFS}_x32.o" 309 } 310 311 if (target_cpu == "x64") { 312 output_obj = "${CORE3D_ROFS}_x64.o" 313 } 314 315 sources = [ 316 "${target_gen_dir}/assets/${output_obj}" 317 ] 318 deps = [ 319 ":lume_3d_rofs" 320 ] 321} 322 323ohos_shared_library("AGP3DApi") { 324 public_configs = [ 325 ":lume_3d_api", 326 ] 327 part_name = "graphic_3d" 328 subsystem_name = "graphic" 329} 330 331ohos_static_library("libAGP3D") { 332 public_deps = [ 333 ":lume_3d_src", 334 ] 335 336 if (CORE3D_EMBEDDED_ASSETS_ENABLED) { 337 deps = [ 338 ":lume_3d_rofs_obj" 339 ] 340 } 341 342 part_name = "graphic_3d" 343 subsystem_name = "graphic" 344} 345