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_2d/graphic_config.gni") 16import("//foundation/graphic/graphic_3d/lume/lume_config.gni") 17 18declare_args() { 19 CORE3D_EMBEDDED_ASSETS_ENABLED = true 20 CORE3D_ROFS = "rofs3D" 21} 22 23config("lume_3d_api") { 24 include_dirs = [ "api" ] 25} 26 27config("lume_3d_config") { 28 include_dirs = [ 29 "3rdparty/", 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 += [ "__OHOS_PLATFORM__" ] 49 } 50 51 if (CORE3D_EMBEDDED_ASSETS_ENABLED) { 52 defines += [ "CORE3D_EMBEDDED_ASSETS_ENABLED=1" ] 53 } 54} 55 56ohos_source_set("lume_3d_src") { 57 public_configs = [ 58 ":lume_3d_config", 59 ":lume_3d_api", 60 "${LUME_RENDER_PATH}:lume_render_api", 61 "${LUME_CORE_PATH}:lume_base_api", 62 "${LUME_CORE_PATH}:lume_engine_api", 63 "${LUME_CORE_PATH}:lume_component_help_config", 64 "${LUME_CORE_PATH}:lume_default", 65 ] 66 67 sources = [ 68 "src/ecs/components/animation_component_manager.cpp", 69 "src/ecs/components/animation_input_component_manager.cpp", 70 "src/ecs/components/animation_output_component_manager.cpp", 71 "src/ecs/components/animation_state_component_manager.cpp", 72 "src/ecs/components/animation_track_component_manager.cpp", 73 "src/ecs/components/camera_component_manager.cpp", 74 "src/ecs/components/environment_component_manager.cpp", 75 "src/ecs/components/fog_component_manager.cpp", 76 "src/ecs/components/initial_transform_component.h", 77 "src/ecs/components/initial_transform_component_manager.cpp", 78 "src/ecs/components/joint_matrices_component_manager.cpp", 79 "src/ecs/components/layer_component_manager.cpp", 80 "src/ecs/components/layer_flag_bits_metadata.h", 81 "src/ecs/components/light_component_manager.cpp", 82 "src/ecs/components/local_matrix_component_manager.cpp", 83 "src/ecs/components/material_component_manager.cpp", 84 "src/ecs/components/material_extension_component_manager.cpp", 85 "src/ecs/components/mesh_component_manager.cpp", 86 "src/ecs/components/morph_component_manager.cpp", 87 "src/ecs/components/name_component_manager.cpp", 88 "src/ecs/components/node_component_manager.cpp", 89 "src/ecs/components/physical_camera_component_manager.cpp", 90 "src/ecs/components/planar_reflection_component_manager.cpp", 91 "src/ecs/components/post_process_component_manager.cpp", 92 "src/ecs/components/previous_joint_matrices_component_manager.cpp", 93 "src/ecs/components/previous_world_matrix_component_manager.cpp", 94 "src/ecs/components/render_configuration_component_manager.cpp", 95 "src/ecs/components/render_handle_component_manager.cpp", 96 "src/ecs/components/render_mesh_batch_component_manager.cpp", 97 "src/ecs/components/render_mesh_component_manager.cpp", 98 "src/ecs/components/rsdz_model_id_component_manager.cpp", 99 "src/ecs/components/skin_component_manager.cpp", 100 "src/ecs/components/skin_ibm_component_manager.cpp", 101 "src/ecs/components/skin_joints_component_manager.cpp", 102 "src/ecs/components/transform_component_manager.cpp", 103 "src/ecs/components/uri_component_manager.cpp", 104 "src/ecs/components/world_matrix_component_manager.cpp", 105 "src/ecs/systems/animation_playback.cpp", 106 "src/ecs/systems/animation_playback.h", 107 "src/ecs/systems/animation_system.cpp", 108 "src/ecs/systems/animation_system.h", 109 "src/ecs/systems/local_matrix_system.cpp", 110 "src/ecs/systems/local_matrix_system.h", 111 "src/ecs/systems/morphing_system.cpp", 112 "src/ecs/systems/morphing_system.h", 113 "src/ecs/systems/node_system.cpp", 114 "src/ecs/systems/node_system.h", 115 "src/ecs/systems/render_preprocessor_system.cpp", 116 "src/ecs/systems/render_system.cpp", 117 "src/ecs/systems/render_system.h", 118 "src/ecs/systems/skinning_system.cpp", 119 "src/ecs/systems/skinning_system.h", 120 "src/gltf/data.h", 121 "src/gltf/gltf2.cpp", 122 "src/gltf/gltf2.h", 123 "src/gltf/gltf2_data_structures.h", 124 "src/gltf/gltf2_exporter.cpp", 125 "src/gltf/gltf2_exporter.h", 126 "src/gltf/gltf2_importer.cpp", 127 "src/gltf/gltf2_importer.h", 128 "src/gltf/gltf2_loader.cpp", 129 "src/gltf/gltf2_loader.h", 130 "src/gltf/gltf2_util.cpp", 131 "src/gltf/gltf2_util.h", 132 "src/graphics_context.cpp", 133 "src/graphics_context.h", 134 "src/loader/json_util.h", 135 "src/plugin/static_plugin.cpp", 136 "version.cpp", 137 138 #"src/plugin/static_registry.cpp", 139 140 "src/ecs/components/post_process_configuration_component_manager.cpp", 141 "src/property/property_handle.cpp", 142 "src/property/property_handle.h", 143 "src/render/datastore/render_data_store_default_camera.cpp", 144 "src/render/datastore/render_data_store_default_camera.h", 145 "src/render/datastore/render_data_store_default_light.cpp", 146 "src/render/datastore/render_data_store_default_light.h", 147 "src/render/datastore/render_data_store_default_material.cpp", 148 "src/render/datastore/render_data_store_default_material.h", 149 "src/render/datastore/render_data_store_default_scene.cpp", 150 "src/render/datastore/render_data_store_default_scene.h", 151 "src/render/datastore/render_data_store_morph.cpp", 152 "src/render/datastore/render_data_store_morph.h", 153 "src/render/node/render_copy_helper.cpp", 154 "src/render/node/render_copy_helper.h", 155 "src/render/node/render_light_helper.h", 156 "src/render/node/render_node_camera_cubemap.cpp", 157 "src/render/node/render_node_camera_cubemap.h", 158 "src/render/node/render_node_camera_single_post_process.cpp", 159 "src/render/node/render_node_camera_single_post_process.h", 160 "src/render/node/render_node_create_default_camera_gpu_images.cpp", 161 "src/render/node/render_node_create_default_camera_gpu_images.h", 162 "src/render/node/render_node_default_camera_controller.cpp", 163 "src/render/node/render_node_default_camera_controller.h", 164 "src/render/node/render_node_default_camera_post_process_controller.cpp", 165 "src/render/node/render_node_default_camera_post_process_controller.h", 166 "src/render/node/render_node_default_cameras.cpp", 167 "src/render/node/render_node_default_cameras.h", 168 "src/render/node/render_node_default_depth_render_slot.cpp", 169 "src/render/node/render_node_default_depth_render_slot.h", 170 "src/render/node/render_node_default_env.cpp", 171 "src/render/node/render_node_default_env.h", 172 "src/render/node/render_node_default_lights.cpp", 173 "src/render/node/render_node_default_lights.h", 174 "src/render/node/render_node_default_material_deferred_shading.cpp", 175 "src/render/node/render_node_default_material_deferred_shading.h", 176 "src/render/node/render_node_default_material_objects.cpp", 177 "src/render/node/render_node_default_material_objects.h", 178 "src/render/node/render_node_default_material_render_slot.cpp", 179 "src/render/node/render_node_default_material_render_slot.h", 180 "src/render/node/render_node_default_shadow_render_slot.cpp", 181 "src/render/node/render_node_default_shadow_render_slot.h", 182 "src/render/node/render_node_default_shadows_blur.cpp", 183 "src/render/node/render_node_default_shadows_blur.h", 184 "src/render/node/render_node_morph.cpp", 185 "src/render/node/render_node_morph.h", 186 "src/render/render_node_scene_util.cpp", 187 "src/render/render_node_scene_util.h", 188 "src/util/component_util_functions.h", 189 "src/util/linear_allocator.h", 190 "src/util/mesh_builder.cpp", 191 "src/util/mesh_builder.h", 192 "src/util/mesh_util.cpp", 193 "src/util/mesh_util.h", 194 "src/util/picking.cpp", 195 "src/util/picking.h", 196 "src/util/property_util.cpp", 197 "src/util/property_util.h", 198 "src/util/render_util.cpp", 199 "src/util/render_util.h", 200 "src/util/scene_util.cpp", 201 "src/util/scene_util.h", 202 "src/util/string_util.h", 203 "src/util/uri_lookup.cpp", 204 "src/util/uri_lookup.h", 205 ] 206 207 external_deps = [ "c_utils:utils" ] 208 part_name = "graphic_3d" 209 subsystem_name = "graphic" 210} 211 212lume_compile_shader("lume_3d_compile_shader") { 213 script = "${LUME_CORE_PATH}/tools/CompilerShader.sh" 214 outputs = [ "$target_gen_dir" ] 215 tool_path = "$target_gen_dir" 216 dest_gen_path = "$target_gen_dir/assets" 217 asset_path = rebase_path("./assets/3d", root_build_dir) 218 shader_path = "${dest_gen_path}/shaders" 219 include_path = rebase_path("api", root_build_dir) 220 render_include_path = "${LUME_PATH}/${RENDER_DIR_NAME}/api/" 221 compileShader_deps = 222 [ "${LUME_BINARY_PATH}/LumeShaderCompiler:lume_binary_shader_compile" ] 223} 224 225lume_rofs("lume_3d_rofs") { 226 output_obj = "" 227 if (target_cpu == "arm") { 228 output_obj = "${CORE3D_ROFS}_32.o" 229 } 230 231 if (target_cpu == "arm64") { 232 output_obj = "${CORE3D_ROFS}_64.o" 233 } 234 235 outputs = "${target_gen_dir}/assets/${output_obj}" 236 237 tool_path = "$target_gen_dir" 238 root = "/" 239 bin_name = "BINARY_DATA_FOR_3D" 240 size_name = "SIZE_OF_DATA_FOR_3D" 241 base_name = CORE3D_ROFS 242 script = "${LUME_CORE_PATH}/tools/CompilerAsset.sh" 243 copy_path = "$target_gen_dir/assets" 244 compileShader_deps = [ 245 ":lume_3d_compile_shader", 246 "${LUME_BINARY_PATH}/lumeassetcompiler:lume_binary_assets_compile", 247 ] 248 file_extension = "\".spv;.json;.lsb;.shader;.shadergs;.shadervid;.shaderpl;.rng;.gl;.gles\"" 249} 250 251source_set("lume_3d_rofs_obj") { 252 output_obj = "" 253 if (target_cpu == "arm") { 254 output_obj = "${CORE3D_ROFS}_32.o" 255 } 256 257 if (target_cpu == "arm64") { 258 output_obj = "${CORE3D_ROFS}_64.o" 259 } 260 261 sources = [ "${target_gen_dir}/assets/${output_obj}" ] 262 deps = [ ":lume_3d_rofs" ] 263} 264 265ohos_static_library("libAGP3D") { 266 public_deps = [ ":lume_3d_src" ] 267 268 if (CORE3D_EMBEDDED_ASSETS_ENABLED) { 269 deps = [ ":lume_3d_rofs_obj" ] 270 } 271 272 part_name = "graphic_3d" 273 subsystem_name = "graphic" 274} 275