• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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