18bf80f4bSopenharmony_ci# Copyright (c) 2024 Huawei Device Co., Ltd. 28bf80f4bSopenharmony_ci# Licensed under the Apache License, Version 2.0 (the "License"); 38bf80f4bSopenharmony_ci# you may not use this file except in compliance with the License. 48bf80f4bSopenharmony_ci# You may obtain a copy of the License at 58bf80f4bSopenharmony_ci# 68bf80f4bSopenharmony_ci# http://www.apache.org/licenses/LICENSE-2.0 78bf80f4bSopenharmony_ci# 88bf80f4bSopenharmony_ci# Unless required by applicable law or agreed to in writing, software 98bf80f4bSopenharmony_ci# distributed under the License is distributed on an "AS IS" BASIS, 108bf80f4bSopenharmony_ci# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 118bf80f4bSopenharmony_ci# See the License for the specific language governing permissions and 128bf80f4bSopenharmony_ci# limitations under the License. 138bf80f4bSopenharmony_ci 148bf80f4bSopenharmony_ciimport("//build/ohos.gni") 158bf80f4bSopenharmony_ciimport("//foundation/graphic/graphic_2d/graphic_config.gni") 168bf80f4bSopenharmony_ciimport("//foundation/graphic/graphic_3d/lume/lume_config.gni") 178bf80f4bSopenharmony_ci 188bf80f4bSopenharmony_cideclare_args() { 198bf80f4bSopenharmony_ci CORE3D_EMBEDDED_ASSETS_ENABLED = true 208bf80f4bSopenharmony_ci CORE3D_ROFS = "rofs3D" 218bf80f4bSopenharmony_ci} 228bf80f4bSopenharmony_ci 238bf80f4bSopenharmony_ciconfig("lume_3d_api") { 248bf80f4bSopenharmony_ci include_dirs = [ "api" ] 258bf80f4bSopenharmony_ci} 268bf80f4bSopenharmony_ci 278bf80f4bSopenharmony_ciconfig("lume_3d_config") { 288bf80f4bSopenharmony_ci include_dirs = [ 298bf80f4bSopenharmony_ci "3rdparty/", 308bf80f4bSopenharmony_ci "src/", 318bf80f4bSopenharmony_ci "assets/", 328bf80f4bSopenharmony_ci ] 338bf80f4bSopenharmony_ci 348bf80f4bSopenharmony_ci defines = [ 358bf80f4bSopenharmony_ci "__OHOS_PLATFORM__", 368bf80f4bSopenharmony_ci "CORE3D_PUBLIC=__attribute__((visibility(\"default\")))", 378bf80f4bSopenharmony_ci "CORE_USE_COMPILER_GENERATED_STATIC_LIST=1", 388bf80f4bSopenharmony_ci "CORE3D_SHARED_LIBRARY=1", 398bf80f4bSopenharmony_ci "CORE3D_VALIDATION_ENABLED=0", 408bf80f4bSopenharmony_ci "CORE3D_TESTS_ENABLED=0", 418bf80f4bSopenharmony_ci "CORE3D_DEV_ENABLED=${CORE_DEV_ENABLED}", 428bf80f4bSopenharmony_ci "CORE3D_PUBLIC=__attribute__((visibility(\"default\")))", 438bf80f4bSopenharmony_ci "CORE_USE_COMPILER_GENERATED_STATIC_LIST=1", 448bf80f4bSopenharmony_ci "CORE_STATIC_PLUGIN_HEADER=${CORE_STATIC_PLUGIN_HEADER }", 458bf80f4bSopenharmony_ci ] 468bf80f4bSopenharmony_ci 478bf80f4bSopenharmony_ci if (LUME_OHOS_BUILD) { 488bf80f4bSopenharmony_ci defines += [ "__OHOS_PLATFORM__" ] 498bf80f4bSopenharmony_ci } 508bf80f4bSopenharmony_ci 518bf80f4bSopenharmony_ci if (CORE3D_EMBEDDED_ASSETS_ENABLED) { 528bf80f4bSopenharmony_ci defines += [ "CORE3D_EMBEDDED_ASSETS_ENABLED=1" ] 538bf80f4bSopenharmony_ci } 548bf80f4bSopenharmony_ci} 558bf80f4bSopenharmony_ci 568bf80f4bSopenharmony_ciohos_source_set("lume_3d_src") { 578bf80f4bSopenharmony_ci public_configs = [ 588bf80f4bSopenharmony_ci ":lume_3d_config", 598bf80f4bSopenharmony_ci ":lume_3d_api", 608bf80f4bSopenharmony_ci "${LUME_RENDER_PATH}:lume_render_api", 618bf80f4bSopenharmony_ci "${LUME_CORE_PATH}:lume_base_api", 628bf80f4bSopenharmony_ci "${LUME_CORE_PATH}:lume_engine_api", 638bf80f4bSopenharmony_ci "${LUME_CORE_PATH}:lume_component_help_config", 648bf80f4bSopenharmony_ci "${LUME_CORE_PATH}:lume_default", 658bf80f4bSopenharmony_ci ] 668bf80f4bSopenharmony_ci 678bf80f4bSopenharmony_ci sources = [ 688bf80f4bSopenharmony_ci "src/ecs/components/animation_component_manager.cpp", 698bf80f4bSopenharmony_ci "src/ecs/components/animation_input_component_manager.cpp", 708bf80f4bSopenharmony_ci "src/ecs/components/animation_output_component_manager.cpp", 718bf80f4bSopenharmony_ci "src/ecs/components/animation_state_component_manager.cpp", 728bf80f4bSopenharmony_ci "src/ecs/components/animation_track_component_manager.cpp", 738bf80f4bSopenharmony_ci "src/ecs/components/camera_component_manager.cpp", 748bf80f4bSopenharmony_ci "src/ecs/components/environment_component_manager.cpp", 758bf80f4bSopenharmony_ci "src/ecs/components/fog_component_manager.cpp", 768bf80f4bSopenharmony_ci "src/ecs/components/initial_transform_component.h", 778bf80f4bSopenharmony_ci "src/ecs/components/initial_transform_component_manager.cpp", 788bf80f4bSopenharmony_ci "src/ecs/components/joint_matrices_component_manager.cpp", 798bf80f4bSopenharmony_ci "src/ecs/components/layer_component_manager.cpp", 808bf80f4bSopenharmony_ci "src/ecs/components/layer_flag_bits_metadata.h", 818bf80f4bSopenharmony_ci "src/ecs/components/light_component_manager.cpp", 828bf80f4bSopenharmony_ci "src/ecs/components/local_matrix_component_manager.cpp", 838bf80f4bSopenharmony_ci "src/ecs/components/material_component_manager.cpp", 848bf80f4bSopenharmony_ci "src/ecs/components/material_extension_component_manager.cpp", 858bf80f4bSopenharmony_ci "src/ecs/components/mesh_component_manager.cpp", 868bf80f4bSopenharmony_ci "src/ecs/components/morph_component_manager.cpp", 878bf80f4bSopenharmony_ci "src/ecs/components/name_component_manager.cpp", 888bf80f4bSopenharmony_ci "src/ecs/components/node_component_manager.cpp", 898bf80f4bSopenharmony_ci "src/ecs/components/physical_camera_component_manager.cpp", 908bf80f4bSopenharmony_ci "src/ecs/components/planar_reflection_component_manager.cpp", 918bf80f4bSopenharmony_ci "src/ecs/components/post_process_component_manager.cpp", 928bf80f4bSopenharmony_ci "src/ecs/components/previous_joint_matrices_component_manager.cpp", 938bf80f4bSopenharmony_ci "src/ecs/components/previous_world_matrix_component_manager.cpp", 948bf80f4bSopenharmony_ci "src/ecs/components/render_configuration_component_manager.cpp", 958bf80f4bSopenharmony_ci "src/ecs/components/render_handle_component_manager.cpp", 968bf80f4bSopenharmony_ci "src/ecs/components/render_mesh_batch_component_manager.cpp", 978bf80f4bSopenharmony_ci "src/ecs/components/render_mesh_component_manager.cpp", 988bf80f4bSopenharmony_ci "src/ecs/components/rsdz_model_id_component_manager.cpp", 998bf80f4bSopenharmony_ci "src/ecs/components/skin_component_manager.cpp", 1008bf80f4bSopenharmony_ci "src/ecs/components/skin_ibm_component_manager.cpp", 1018bf80f4bSopenharmony_ci "src/ecs/components/skin_joints_component_manager.cpp", 1028bf80f4bSopenharmony_ci "src/ecs/components/transform_component_manager.cpp", 1038bf80f4bSopenharmony_ci "src/ecs/components/uri_component_manager.cpp", 1048bf80f4bSopenharmony_ci "src/ecs/components/world_matrix_component_manager.cpp", 1058bf80f4bSopenharmony_ci "src/ecs/systems/animation_playback.cpp", 1068bf80f4bSopenharmony_ci "src/ecs/systems/animation_playback.h", 1078bf80f4bSopenharmony_ci "src/ecs/systems/animation_system.cpp", 1088bf80f4bSopenharmony_ci "src/ecs/systems/animation_system.h", 1098bf80f4bSopenharmony_ci "src/ecs/systems/local_matrix_system.cpp", 1108bf80f4bSopenharmony_ci "src/ecs/systems/local_matrix_system.h", 1118bf80f4bSopenharmony_ci "src/ecs/systems/morphing_system.cpp", 1128bf80f4bSopenharmony_ci "src/ecs/systems/morphing_system.h", 1138bf80f4bSopenharmony_ci "src/ecs/systems/node_system.cpp", 1148bf80f4bSopenharmony_ci "src/ecs/systems/node_system.h", 1158bf80f4bSopenharmony_ci "src/ecs/systems/render_preprocessor_system.cpp", 1168bf80f4bSopenharmony_ci "src/ecs/systems/render_system.cpp", 1178bf80f4bSopenharmony_ci "src/ecs/systems/render_system.h", 1188bf80f4bSopenharmony_ci "src/ecs/systems/skinning_system.cpp", 1198bf80f4bSopenharmony_ci "src/ecs/systems/skinning_system.h", 1208bf80f4bSopenharmony_ci "src/gltf/data.h", 1218bf80f4bSopenharmony_ci "src/gltf/gltf2.cpp", 1228bf80f4bSopenharmony_ci "src/gltf/gltf2.h", 1238bf80f4bSopenharmony_ci "src/gltf/gltf2_data_structures.h", 1248bf80f4bSopenharmony_ci "src/gltf/gltf2_exporter.cpp", 1258bf80f4bSopenharmony_ci "src/gltf/gltf2_exporter.h", 1268bf80f4bSopenharmony_ci "src/gltf/gltf2_importer.cpp", 1278bf80f4bSopenharmony_ci "src/gltf/gltf2_importer.h", 1288bf80f4bSopenharmony_ci "src/gltf/gltf2_loader.cpp", 1298bf80f4bSopenharmony_ci "src/gltf/gltf2_loader.h", 1308bf80f4bSopenharmony_ci "src/gltf/gltf2_util.cpp", 1318bf80f4bSopenharmony_ci "src/gltf/gltf2_util.h", 1328bf80f4bSopenharmony_ci "src/graphics_context.cpp", 1338bf80f4bSopenharmony_ci "src/graphics_context.h", 1348bf80f4bSopenharmony_ci "src/loader/json_util.h", 1358bf80f4bSopenharmony_ci "src/plugin/static_plugin.cpp", 1368bf80f4bSopenharmony_ci "version.cpp", 1378bf80f4bSopenharmony_ci 1388bf80f4bSopenharmony_ci #"src/plugin/static_registry.cpp", 1398bf80f4bSopenharmony_ci 1408bf80f4bSopenharmony_ci "src/ecs/components/post_process_configuration_component_manager.cpp", 1418bf80f4bSopenharmony_ci "src/property/property_handle.cpp", 1428bf80f4bSopenharmony_ci "src/property/property_handle.h", 1438bf80f4bSopenharmony_ci "src/render/datastore/render_data_store_default_camera.cpp", 1448bf80f4bSopenharmony_ci "src/render/datastore/render_data_store_default_camera.h", 1458bf80f4bSopenharmony_ci "src/render/datastore/render_data_store_default_light.cpp", 1468bf80f4bSopenharmony_ci "src/render/datastore/render_data_store_default_light.h", 1478bf80f4bSopenharmony_ci "src/render/datastore/render_data_store_default_material.cpp", 1488bf80f4bSopenharmony_ci "src/render/datastore/render_data_store_default_material.h", 1498bf80f4bSopenharmony_ci "src/render/datastore/render_data_store_default_scene.cpp", 1508bf80f4bSopenharmony_ci "src/render/datastore/render_data_store_default_scene.h", 1518bf80f4bSopenharmony_ci "src/render/datastore/render_data_store_morph.cpp", 1528bf80f4bSopenharmony_ci "src/render/datastore/render_data_store_morph.h", 1538bf80f4bSopenharmony_ci "src/render/node/render_copy_helper.cpp", 1548bf80f4bSopenharmony_ci "src/render/node/render_copy_helper.h", 1558bf80f4bSopenharmony_ci "src/render/node/render_light_helper.h", 1568bf80f4bSopenharmony_ci "src/render/node/render_node_camera_cubemap.cpp", 1578bf80f4bSopenharmony_ci "src/render/node/render_node_camera_cubemap.h", 1588bf80f4bSopenharmony_ci "src/render/node/render_node_camera_single_post_process.cpp", 1598bf80f4bSopenharmony_ci "src/render/node/render_node_camera_single_post_process.h", 1608bf80f4bSopenharmony_ci "src/render/node/render_node_create_default_camera_gpu_images.cpp", 1618bf80f4bSopenharmony_ci "src/render/node/render_node_create_default_camera_gpu_images.h", 1628bf80f4bSopenharmony_ci "src/render/node/render_node_default_camera_controller.cpp", 1638bf80f4bSopenharmony_ci "src/render/node/render_node_default_camera_controller.h", 1648bf80f4bSopenharmony_ci "src/render/node/render_node_default_camera_post_process_controller.cpp", 1658bf80f4bSopenharmony_ci "src/render/node/render_node_default_camera_post_process_controller.h", 1668bf80f4bSopenharmony_ci "src/render/node/render_node_default_cameras.cpp", 1678bf80f4bSopenharmony_ci "src/render/node/render_node_default_cameras.h", 1688bf80f4bSopenharmony_ci "src/render/node/render_node_default_depth_render_slot.cpp", 1698bf80f4bSopenharmony_ci "src/render/node/render_node_default_depth_render_slot.h", 1708bf80f4bSopenharmony_ci "src/render/node/render_node_default_env.cpp", 1718bf80f4bSopenharmony_ci "src/render/node/render_node_default_env.h", 1728bf80f4bSopenharmony_ci "src/render/node/render_node_default_lights.cpp", 1738bf80f4bSopenharmony_ci "src/render/node/render_node_default_lights.h", 1748bf80f4bSopenharmony_ci "src/render/node/render_node_default_material_deferred_shading.cpp", 1758bf80f4bSopenharmony_ci "src/render/node/render_node_default_material_deferred_shading.h", 1768bf80f4bSopenharmony_ci "src/render/node/render_node_default_material_objects.cpp", 1778bf80f4bSopenharmony_ci "src/render/node/render_node_default_material_objects.h", 1788bf80f4bSopenharmony_ci "src/render/node/render_node_default_material_render_slot.cpp", 1798bf80f4bSopenharmony_ci "src/render/node/render_node_default_material_render_slot.h", 1808bf80f4bSopenharmony_ci "src/render/node/render_node_default_shadow_render_slot.cpp", 1818bf80f4bSopenharmony_ci "src/render/node/render_node_default_shadow_render_slot.h", 1828bf80f4bSopenharmony_ci "src/render/node/render_node_default_shadows_blur.cpp", 1838bf80f4bSopenharmony_ci "src/render/node/render_node_default_shadows_blur.h", 1848bf80f4bSopenharmony_ci "src/render/node/render_node_morph.cpp", 1858bf80f4bSopenharmony_ci "src/render/node/render_node_morph.h", 1868bf80f4bSopenharmony_ci "src/render/render_node_scene_util.cpp", 1878bf80f4bSopenharmony_ci "src/render/render_node_scene_util.h", 1888bf80f4bSopenharmony_ci "src/util/component_util_functions.h", 1898bf80f4bSopenharmony_ci "src/util/linear_allocator.h", 1908bf80f4bSopenharmony_ci "src/util/mesh_builder.cpp", 1918bf80f4bSopenharmony_ci "src/util/mesh_builder.h", 1928bf80f4bSopenharmony_ci "src/util/mesh_util.cpp", 1938bf80f4bSopenharmony_ci "src/util/mesh_util.h", 1948bf80f4bSopenharmony_ci "src/util/picking.cpp", 1958bf80f4bSopenharmony_ci "src/util/picking.h", 1968bf80f4bSopenharmony_ci "src/util/property_util.cpp", 1978bf80f4bSopenharmony_ci "src/util/property_util.h", 1988bf80f4bSopenharmony_ci "src/util/render_util.cpp", 1998bf80f4bSopenharmony_ci "src/util/render_util.h", 2008bf80f4bSopenharmony_ci "src/util/scene_util.cpp", 2018bf80f4bSopenharmony_ci "src/util/scene_util.h", 2028bf80f4bSopenharmony_ci "src/util/string_util.h", 2038bf80f4bSopenharmony_ci "src/util/uri_lookup.cpp", 2048bf80f4bSopenharmony_ci "src/util/uri_lookup.h", 2058bf80f4bSopenharmony_ci ] 2068bf80f4bSopenharmony_ci 2078bf80f4bSopenharmony_ci external_deps = [ "c_utils:utils" ] 2088bf80f4bSopenharmony_ci part_name = "graphic_3d" 2098bf80f4bSopenharmony_ci subsystem_name = "graphic" 2108bf80f4bSopenharmony_ci} 2118bf80f4bSopenharmony_ci 2128bf80f4bSopenharmony_cilume_compile_shader("lume_3d_compile_shader") { 2138bf80f4bSopenharmony_ci script = "${LUME_CORE_PATH}/tools/CompilerShader.sh" 2148bf80f4bSopenharmony_ci outputs = [ "$target_gen_dir" ] 2158bf80f4bSopenharmony_ci tool_path = "$target_gen_dir" 2168bf80f4bSopenharmony_ci dest_gen_path = "$target_gen_dir/assets" 2178bf80f4bSopenharmony_ci asset_path = rebase_path("./assets/3d", root_build_dir) 2188bf80f4bSopenharmony_ci shader_path = "${dest_gen_path}/shaders" 2198bf80f4bSopenharmony_ci include_path = rebase_path("api", root_build_dir) 2208bf80f4bSopenharmony_ci render_include_path = "${LUME_PATH}/${RENDER_DIR_NAME}/api/" 2218bf80f4bSopenharmony_ci compileShader_deps = 2228bf80f4bSopenharmony_ci [ "${LUME_BINARY_PATH}/LumeShaderCompiler:lume_binary_shader_compile" ] 2238bf80f4bSopenharmony_ci} 2248bf80f4bSopenharmony_ci 2258bf80f4bSopenharmony_cilume_rofs("lume_3d_rofs") { 2268bf80f4bSopenharmony_ci output_obj = "" 2278bf80f4bSopenharmony_ci if (target_cpu == "arm") { 2288bf80f4bSopenharmony_ci output_obj = "${CORE3D_ROFS}_32.o" 2298bf80f4bSopenharmony_ci } 2308bf80f4bSopenharmony_ci 2318bf80f4bSopenharmony_ci if (target_cpu == "arm64") { 2328bf80f4bSopenharmony_ci output_obj = "${CORE3D_ROFS}_64.o" 2338bf80f4bSopenharmony_ci } 2348bf80f4bSopenharmony_ci 2358bf80f4bSopenharmony_ci outputs = "${target_gen_dir}/assets/${output_obj}" 2368bf80f4bSopenharmony_ci 2378bf80f4bSopenharmony_ci tool_path = "$target_gen_dir" 2388bf80f4bSopenharmony_ci root = "/" 2398bf80f4bSopenharmony_ci bin_name = "BINARY_DATA_FOR_3D" 2408bf80f4bSopenharmony_ci size_name = "SIZE_OF_DATA_FOR_3D" 2418bf80f4bSopenharmony_ci base_name = CORE3D_ROFS 2428bf80f4bSopenharmony_ci script = "${LUME_CORE_PATH}/tools/CompilerAsset.sh" 2438bf80f4bSopenharmony_ci copy_path = "$target_gen_dir/assets" 2448bf80f4bSopenharmony_ci compileShader_deps = [ 2458bf80f4bSopenharmony_ci ":lume_3d_compile_shader", 2468bf80f4bSopenharmony_ci "${LUME_BINARY_PATH}/lumeassetcompiler:lume_binary_assets_compile", 2478bf80f4bSopenharmony_ci ] 2488bf80f4bSopenharmony_ci file_extension = "\".spv;.json;.lsb;.shader;.shadergs;.shadervid;.shaderpl;.rng;.gl;.gles\"" 2498bf80f4bSopenharmony_ci} 2508bf80f4bSopenharmony_ci 2518bf80f4bSopenharmony_cisource_set("lume_3d_rofs_obj") { 2528bf80f4bSopenharmony_ci output_obj = "" 2538bf80f4bSopenharmony_ci if (target_cpu == "arm") { 2548bf80f4bSopenharmony_ci output_obj = "${CORE3D_ROFS}_32.o" 2558bf80f4bSopenharmony_ci } 2568bf80f4bSopenharmony_ci 2578bf80f4bSopenharmony_ci if (target_cpu == "arm64") { 2588bf80f4bSopenharmony_ci output_obj = "${CORE3D_ROFS}_64.o" 2598bf80f4bSopenharmony_ci } 2608bf80f4bSopenharmony_ci 2618bf80f4bSopenharmony_ci sources = [ "${target_gen_dir}/assets/${output_obj}" ] 2628bf80f4bSopenharmony_ci deps = [ ":lume_3d_rofs" ] 2638bf80f4bSopenharmony_ci} 2648bf80f4bSopenharmony_ci 2658bf80f4bSopenharmony_ciohos_static_library("libAGP3D") { 2668bf80f4bSopenharmony_ci public_deps = [ ":lume_3d_src" ] 2678bf80f4bSopenharmony_ci 2688bf80f4bSopenharmony_ci if (CORE3D_EMBEDDED_ASSETS_ENABLED) { 2698bf80f4bSopenharmony_ci deps = [ ":lume_3d_rofs_obj" ] 2708bf80f4bSopenharmony_ci } 2718bf80f4bSopenharmony_ci 2728bf80f4bSopenharmony_ci part_name = "graphic_3d" 2738bf80f4bSopenharmony_ci subsystem_name = "graphic" 2748bf80f4bSopenharmony_ci} 275