cmake_minimum_required(VERSION 3.27) project(z3d) set(CMAKE_CXX_STANDARD 23) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Ofast -pedantic -Wall -Werror ") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fmacro-prefix-map=${CMAKE_CURRENT_SOURCE_DIR}/=") add_executable(z3d main.cpp include/assets/components/material_components.hpp include/assets/components/point_cloud_vertex_components.hpp include/assets/components/mesh_vertex_components.hpp include/assets/dynamic_read_buffers/dynamic_material_buffer.hpp include/assets/dynamic_read_buffers/dynamic_mesh_buffer.hpp include/assets/dynamic_read_buffers/dynamic_point_cloud_buffer.hpp include/assets/data_loaders/kitti_loader.hpp include/assets/data_loaders/obj_loader.hpp include/assets/data_loaders/stl_loader.hpp include/assets/data_loaders/uos_loader.hpp include/assets/components/mesh_vertex_components.hpp include/scene/camera.hpp include/scene/flying_camera.hpp include/opengl/handles/mesh_handle.hpp include/opengl/handles/point_cloud_handle.hpp include/opengl/handles/shader_program_handle.hpp include/opengl/handles/texture_handle.hpp include/opengl/data/mesh_data.hpp include/opengl/data/point_cloud_data.hpp include/opengl/data/shader_program_data.hpp include/scene/lighting_setup.hpp include/rendering/batch_renderers/mesh_batch_renderer.hpp include/opengl/error.hpp include/rendering/batches/mesh_batch.hpp include/rendering/batches/point_cloud_batch.hpp include/util/arx.hpp include/util/extra_arx_parsers.hpp include/util/for_each.hpp include/util/function.hpp include/util/image.hpp include/util/logger.hpp include/util/string_indexer.hpp include/util/string_literal.hpp include/util/uix.hpp source/assets/data_loaders/stl_loader.cpp source/assets/data_loaders/obj_loader.cpp source/scene/flying_camera.cpp source/opengl/data/point_cloud_data.cpp source/opengl/handles/shader_program_handle.ipp source/opengl/data/texture_data.ipp source/opengl/data/mesh_data.cpp include/opengl/error.hpp source/opengl/data/shader_program_data.cpp source/opengl/handles/mesh_handle.ipp source/opengl/handles/point_cloud_handle.ipp source/opengl/handles/texture_handle.ipp include/assets/data/surface_properties.hpp include/util/unroll_bool_template.hpp include/rendering/batch_renderers/point_cloud_batch_renderer.hpp source/rendering/batches/mesh_batch.ipp source/rendering/batches/point_cloud_batch.ipp include/opengl/shader_program_variable.hpp include/opengl/type_utils.hpp include/util/binary_ifstream.hpp source/assets/data_loaders/kitti_loader.cpp include/assets/data_loaders/generic/generic_3dtk_loader.hpp include/assets/data_loaders/uosr_loader.hpp include/assets/data_loaders/uos_normal_loader.hpp include/assets/data_loaders/uos_rgb_loader.hpp include/assets/dynamic_data_loaders/dynamic_mesh_loader.hpp source/assets/dynamic_data_loaders/dynamic_mesh_loader.cpp source/assets/dynamic_data_loaders/dynamic_mesh_loader.cpp include/assets/dynamic_data_loaders/dynamic_point_cloud_loader.hpp include/assets/dynamic_data_loaders/generic/base_dynamic_loader.hpp source/assets/dynamic_data_loaders/generic/base_dynamic_loader.ipp source/assets/dynamic_data_loaders/dynamic_point_cloud_loader.cpp include/opengl/handles/matrix_handles.hpp include/viewer/instance.hpp include/opengl/data/material_data.hpp include/opengl/handles/material_handle.hpp include/opengl/handles/surface_properties_handle.hpp include/opengl/handles/alpha_handle.hpp source/opengl/data/material_data.ipp include/util/specialised_lambda.hpp include/viewer/asset_types.hpp source/viewer/instance.cpp include/viewer/asset_loader.hpp source/viewer/asset_loader.cpp include/assets/data_loaders/glsl_loader.hpp include/assets/dynamic_read_buffers/dynamic_shader_buffer.hpp source/assets/data_loaders/glsl_loader.cpp include/viewer/settings.hpp include/opengl/data/shader_data.hpp source/opengl/data/shader_data.ipp source/opengl/data/point_cloud_data.ipp source/opengl/data/shader_data.cpp include/opengl/handles/shader_handle.hpp include/util/string_lookup.hpp include/viewer/dynamic_shader_program_loading.hpp source/viewer/dynamic_shader_program_loading.cpp source/opengl/handles/shader_program_handle.cpp include/opengl/shader_program_lookup.hpp source/opengl/shader_program_lookup.cpp include/opengl/shading/attributes/point_cloud_attributes.hpp include/opengl/shading/uniforms/mesh_uniforms.hpp include/opengl/shading/uniforms/point_cloud_uniforms.hpp include/opengl/shading/features/mesh_features.hpp include/opengl/shading/features/point_cloud_features.hpp include/rendering/requirements/mesh_requirements.hpp include/rendering/requirements/point_cloud_requirements.hpp include/rendering/modes/mesh_modes.hpp include/rendering/modes/point_cloud_modes.hpp source/rendering/batch_renderers/mesh_batch_renderer.cpp source/rendering/batch_renderers/point_cloud_batch_renderer.cpp include/rendering/shader_program_lookups/mesh_lookup.hpp include/rendering/shader_program_lookups/mesh_lookup.hpp source/rendering/shader_program_lookups/mesh_lookup.cpp source/rendering/shader_program_lookups/point_cloud_lookup.cpp include/rendering/shader_program_lookups/point_cloud_lookup.hpp include/geometry/aabb.hpp source/geometry/normal_estimation.cpp include/geometry/normal_estimation.hpp include/assets/components/texture_components.hpp include/util/enum_bitfield_operators.hpp include/assets/dynamic_read_buffers/dynamic_texture_buffer.hpp source/assets/dynamic_read_buffers/dynamic_mesh_buffer.ipp source/assets/dynamic_read_buffers/dynamic_material_buffer.ipp include/assets/dynamic_read_buffers/generic/dynamic_vertex_buffer.hpp source/assets/dynamic_read_buffers/dynamic_model_buffer.ipp source/assets/dynamic_read_buffers/dynamic_texture_buffer.ipp source/assets/dynamic_read_buffers/dynamic_point_cloud_buffer.ipp include/assets/data_loaders/mtl_loader.hpp include/assets/dynamic_data_loaders/dynamic_material_loader.hpp include/util/id_type.hpp include/assets/dynamic_data_stores/generic/generic_dynamic_store.hpp source/assets/dynamic_data_stores/generic/generic_dynamic_store.ipp include/assets/dynamic_data_stores/dynamic_material_store.hpp include/assets/dynamic_data_stores/dynamic_mesh_store.hpp include/assets/dynamic_data_stores/dynamic_point_cloud_store.hpp include/util/result.hpp source/assets/data_loaders/mtl_loader.cpp include/util/line_parser.hpp include/assets/dynamic_data_loaders/dynamic_texture_loader.hpp source/assets/dynamic_data_loaders/dynamic_texture_loader.cpp include/assets/dynamic_data_stores/dynamic_texture_store.hpp include/opengl/data_managers/texture_manager.hpp include/assets/dynamic_data_stores/dynamic_vertex_store.hpp include/assets/prefetch_lookups/mesh_prefetch_lookup.hpp include/assets/prefetch_lookups/point_cloud_prefetch_lookup.hpp include/assets/prefetch_lookups/material_prefetch_lookup.hpp include/assets/prefetch_lookups/texture_prefetch_lookup.hpp include/assets/prefetch_lookups/pose_prefetch_lookup.hpp include/assets/dynamic_data_stores/dynamic_pose_store.hpp include/assets/data_loaders/kitti_pose_loader.hpp include/assets/data_loaders/threedtk_pose_loader.hpp source/assets/data_loaders/threedtk_pose_loader.cpp include/assets/dynamic_read_buffers/dynamic_pose_buffer.hpp source/assets/data_loaders/kitti_pose_loader.cpp include/assets/prefetch_queue.hpp include/util/string_list.hpp include/assets/dynamic_data_stores/dynamic_material_library_store.hpp include/assets/dynamic_data_stores/generic/generic_dynamic_component_store.hpp source/assets/dynamic_data_stores/generic/generic_dynamic_component_store.ipp source/assets/dynamic_data_stores/dynamic_material_store.cpp include/assets/dynamic_data_stores/generic/generic_dynamic_component_array_store.hpp source/assets/dynamic_data_stores/generic/generic_dynamic_component_array_store.ipp source/assets/dynamic_data_stores/dynamic_mesh_store.cpp include/assets/dynamic_data_stores/generic/generic_dynamic_indexed_component_array_store.hpp source/assets/dynamic_data_stores/dynamic_point_cloud_store.cpp include/assets/dynamic_read_buffers/dynamic_material_library_buffer.hpp include/assets/dynamic_data_loaders/dynamic_material_library_loader.hpp include/assets/prefetch_lookups/material_library_prefetch_lookup.hpp include/assets/prefetch_lookups/shader_prefetch_lookup.hpp include/assets/dynamic_data_stores/dynamic_shader_source_store.hpp include/assets/data_loaders/generic/generic_3dtk_loader.hpp source/assets/data_loaders/generic/generic_3dtk_loader.ipp include/assets/prefetch_lookup.hpp source/assets/prefetch_lookups/pose_prefetch_lookup.cpp include/assets/dynamic_data_store.hpp include/opengl/metadata/shader_source_metadata.hpp source/opengl/data_managers/shader_manager.cpp include/opengl/shading/model_geometry.hpp include/opengl/shading/shader_stage.hpp include/opengl/shading/requirements/shader_program_requirements.hpp include/opengl/shading/attributes/mesh_attributes.hpp include/opengl/data_managers/shader_source_manager.hpp source/opengl/data_managers/shader_source_manager.cpp include/opengl/shading/shader_metadata_language.hpp include/opengl/shading/features/generic_features.hpp include/opengl/shading/features/combined_features.hpp include/opengl/shading/requirements/shader_source_requirements.hpp include/opengl/metadata/preprocessed_shader_source_metadata.hpp include/opengl/shading/requirements/shader_requirements.hpp include/opengl/metadata/shader_metadata.hpp include/opengl/metadata/shader_set_metadata.hpp include/opengl/handles/shader_handle_set.hpp include/opengl/shading/requirements/shader_set_requirements.hpp include/opengl/data_managers/shader_program_manager.hpp include/opengl/metadata/shader_program_metadata.hpp source/opengl/data_managers/shader_program_manager.cpp source/opengl/data_managers/texture_manager.cpp include/util/reference_counter.hpp include/opengl/resource_management/resource_manager.hpp source/opengl/resource_management/resource_manager.ipp include/opengl/data_managers/buffer_manager.hpp include/opengl/data_managers/shader_manager.hpp include/opengl/data_managers/mesh_vertex_buffer_manager.hpp source/opengl/data_managers/mesh_vertex_buffer_manager.cpp include/opengl/resource_management/reference_counter.hpp include/opengl/resource_management/reference_counter.hpp include/opengl/resource_management/resource_handle.hpp source/opengl/resource_management/resource_handle.ipp include/opengl/handles/vertex_buffer_handle.hpp source/opengl/handles/vertex_buffer_handle.ipp include/opengl/handles/index_buffer_handle.hpp source/opengl/handles/index_buffer_handle.ipp include/opengl/metadata/texture_metadata.hpp include/opengl/metadata/vertex_buffer_metadata.hpp ) target_include_directories(z3d PRIVATE include) target_include_directories(z3d PRIVATE source) # for ipp headers target_include_directories(z3d PRIVATE libraries/include/glm) target_include_directories(z3d PRIVATE libraries/include/stb) find_package(GLEW REQUIRED) find_package(OpenGL REQUIRED) find_package(SFML REQUIRED COMPONENTS graphics system) find_package(Eigen3 3.4 REQUIRED NO_MODULE) include_directories(${SFML_INCLUDE_DIR}) include_directories(SYSTEM ${eigen_INCLUDE_DIR}) target_link_libraries(z3d Eigen3::Eigen sfml-graphics sfml-system sfml-window ${OPENGL_LIBRARIES} ${GLEW_LIBRARIES})