diff --git a/render_3D/CMakeLists.txt b/render_3D/CMakeLists.txt index 9358d92..d71d456 100644 --- a/render_3D/CMakeLists.txt +++ b/render_3D/CMakeLists.txt @@ -24,9 +24,12 @@ if (Renderive_render_3D_missing) return() endif () rcl_load_dependency_environment(${Renderive_render_3D_dependencies}) -set(ENV{VULKAN_SDK} "C:/VulkanSDK/1.4.357.0") find_package(Vulkan REQUIRED) -find_package(PThreads4W REQUIRED) +find_package(PThreads4W QUIET) +if (NOT PThreads4W_FOUND) + rcl_log_append(${CMAKE_CURRENT_LIST_LINE} "[FATAL_ERROR] Renderive_render_3D PThreads4W installation is incomplete. Rebuild render_3D::PThreads4W") + return() +endif () find_package(cglm CONFIG REQUIRED) find_package(volk CONFIG REQUIRED) find_package(VulkanMemoryAllocator CONFIG REQUIRED) @@ -44,14 +47,17 @@ if (NOT TARGET Renderive_Kernel) rcl_log_append(${CMAKE_CURRENT_LIST_LINE} "[FATAL_ERROR] Renderive_render_3D requires Renderive_Kernel") return() endif () +add_subdirectory("${CMAKE_CURRENT_LIST_DIR}/datoviz" "${CMAKE_CURRENT_BINARY_DIR}/datoviz") set(Renderive_render_3D_source_dir "${CMAKE_CURRENT_LIST_DIR}") append_glob_source(Renderive_render_3D_sources "${Renderive_render_3D_source_dir}") list(FILTER Renderive_render_3D_sources EXCLUDE REGEX "/tests/") +list(FILTER Renderive_render_3D_sources EXCLUDE REGEX "/datoviz/") add_library(Renderive_render_3D STATIC ${Renderive_render_3D_sources}) target_include_directories(Renderive_render_3D PUBLIC "$" ) target_compile_features(Renderive_render_3D PUBLIC cxx_std_20) +target_link_libraries(Renderive_render_3D PRIVATE ${Renderive_render_3D_datoviz_targets} tinyobjloader::tinyobjloader) if (MSVC) target_compile_options(Renderive_render_3D PRIVATE /utf-8) endif () diff --git a/render_3D/cmake/computer_graphics.cmake b/render_3D/cmake/computer_graphics.cmake index a2d1687..0bd222e 100644 --- a/render_3D/cmake/computer_graphics.cmake +++ b/render_3D/cmake/computer_graphics.cmake @@ -96,17 +96,24 @@ block() ) set(msdfgl_cmake_option "") if (WIN32) - set(PThreads4W_option ${base_options}) - list(APPEND PThreads4W_option - "-DCMAKE_C_FLAGS=-D_WINDLL" - "-DCMAKE_CXX_FLAGS=-D_WINDLL" - ) _register_git_cmake_library(render_3D::PThreads4W https://github.com/jwinarske/pthreads4w.git "cmake" ) rcl_get_effective_install_dir(render_3D::PThreads4W PTHREADS4W_ROOT) + set(PThreads4W_option ${base_options}) + list(APPEND PThreads4W_option + "-DDIST_ROOT=${PTHREADS4W_ROOT}" + "-DCMAKE_C_FLAGS=-D_WINDLL" + "-DCMAKE_CXX_FLAGS=-D_WINDLL" + ) rcl_cmake_library_set_cmake_options(render_3D::PThreads4W ${PThreads4W_option}) + rcl_cmake_library_set_init_script(render_3D::PThreads4W + "set(PTHREADS4W_ROOT \"${PTHREADS4W_ROOT}\")" + ) + rcl_cmake_library_set_clear_script(render_3D::PThreads4W + "unset(PTHREADS4W_ROOT)" + ) endif () set(glfw3_option ${base_options}) _register_git_cmake_library(render_3D::glfw3 diff --git a/render_3D/cmake/module/FindPThreads4W.cmake b/render_3D/cmake/module/FindPThreads4W.cmake index 29e398c..2c8d8af 100644 --- a/render_3D/cmake/module/FindPThreads4W.cmake +++ b/render_3D/cmake/module/FindPThreads4W.cmake @@ -1,12 +1,30 @@ include_guard(GLOBAL) rcl_get_effective_install_dir(render_3D::PThreads4W PTHREADS4W_ROOT) -message("render_3D::PThreads4W PTHREADS4W_ROOT=${PTHREADS4W_ROOT}") -set(PThreads4W_INCLUDE_DIR "${PTHREADS4W_ROOT}/include") -if (CMAKE_BUILD_TYPE STREQUAL "Debug") - set(PThreads4W_LIBRARY "${PTHREADS4W_ROOT}/lib/pthreadVC3d.lib") +if (CMAKE_SYSTEM_PROCESSOR MATCHES "^(AMD64|amd64|x86_64)$") + set(PThreads4W_ARCH "x86_64") +elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^(ARM64|arm64|aarch64)$") + set(PThreads4W_ARCH "ARM64") +elseif (CMAKE_SYSTEM_PROCESSOR MATCHES "^(x86|i[3-6]86)$") + set(PThreads4W_ARCH "x86") else () - set(PThreads4W_LIBRARY "${PTHREADS4W_ROOT}/lib/pthreadVC3.lib") + set(PThreads4W_ARCH "${CMAKE_SYSTEM_PROCESSOR}") endif () +set(PThreads4W_INSTALL_DIR "${PTHREADS4W_ROOT}/${PThreads4W_ARCH}/${CMAKE_BUILD_TYPE}") +find_path(PThreads4W_INCLUDE_DIR + NAMES pthread.h + PATHS "${PThreads4W_INSTALL_DIR}/include" + NO_DEFAULT_PATH +) +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + set(PThreads4W_LIBRARY_NAME pthreadVC3d) +else () + set(PThreads4W_LIBRARY_NAME pthreadVC3) +endif () +find_library(PThreads4W_LIBRARY + NAMES "${PThreads4W_LIBRARY_NAME}" + PATHS "${PThreads4W_INSTALL_DIR}/lib" + NO_DEFAULT_PATH +) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(PThreads4W REQUIRED_VARS @@ -23,4 +41,4 @@ endif () mark_as_advanced( PThreads4W_INCLUDE_DIR PThreads4W_LIBRARY -) \ No newline at end of file +) diff --git a/render_3D/datoviz/CMakeLists.txt b/render_3D/datoviz/CMakeLists.txt new file mode 100644 index 0000000..760d1e5 --- /dev/null +++ b/render_3D/datoviz/CMakeLists.txt @@ -0,0 +1,218 @@ +# Datoviz 移植源码只在这个目录内维护,不加载上游 Datoviz 的总 CMake,也不生成 datoviz 库。 +enable_language(C) +set(Renderive_render_3D_datoviz_root "${CMAKE_CURRENT_LIST_DIR}") +set(Renderive_render_3D_datoviz_include_dir "${Renderive_render_3D_datoviz_root}/include") +set(Renderive_render_3D_datoviz_src_dir "${Renderive_render_3D_datoviz_root}/src") +set(Renderive_render_3D_datoviz_external_dir "${Renderive_render_3D_datoviz_root}/external") +# 这些定义保持 Datoviz 当前 Vulkan/scene 源码的编译语义;未迁入的 app/gui/window 等能力明确关闭。 +set(Renderive_render_3D_datoviz_os_linux 0) +set(Renderive_render_3D_datoviz_os_macos 0) +set(Renderive_render_3D_datoviz_os_windows 0) +set(Renderive_render_3D_datoviz_os_unix 0) +if(UNIX AND NOT APPLE) + set(Renderive_render_3D_datoviz_os_linux 1) + set(Renderive_render_3D_datoviz_os_unix 1) +elseif(APPLE) + set(Renderive_render_3D_datoviz_os_macos 1) + set(Renderive_render_3D_datoviz_os_unix 1) +elseif(WIN32) + set(Renderive_render_3D_datoviz_os_windows 1) +endif() +set(Renderive_render_3D_datoviz_cc_gcc 0) +set(Renderive_render_3D_datoviz_cc_clang 0) +set(Renderive_render_3D_datoviz_cc_msvc 0) +if(CMAKE_CXX_COMPILER_ID MATCHES "GNU") + set(Renderive_render_3D_datoviz_cc_gcc 1) +elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang") + set(Renderive_render_3D_datoviz_cc_clang 1) +elseif(CMAKE_CXX_COMPILER_ID MATCHES "MSVC") + set(Renderive_render_3D_datoviz_cc_msvc 1) +endif() +set(Renderive_render_3D_datoviz_compile_definitions + ENABLE_VALIDATION_LAYERS=$,0,1> + DEBUG=$,1,0> + VK_NO_PROTOTYPES + OS_LINUX=${Renderive_render_3D_datoviz_os_linux} + OS_MACOS=${Renderive_render_3D_datoviz_os_macos} + OS_WINDOWS=${Renderive_render_3D_datoviz_os_windows} + OS_UNIX=${Renderive_render_3D_datoviz_os_unix} + CC_MSVC=${Renderive_render_3D_datoviz_cc_msvc} + CC_GCC=${Renderive_render_3D_datoviz_cc_gcc} + CC_CLANG=${Renderive_render_3D_datoviz_cc_clang} + DVZ_HAS_ZLIB=1 + DVZ_HAS_OPENMP=0 + DVZ_HAS_CUDA=0 + DVZ_HAS_GLFW=0 + DVZ_HAS_KVZ=0 + DVZ_HAS_CGLM=1 + DVZ_HAS_FREETYPE=1 + DVZ_HAS_MSDF_ATLAS=1 + DVZ_HAS_DRP2=1 + DVZ_HAS_CONTROLLER=1 + DVZ_HAS_SCENE=1 + DVZ_HAS_APP=0 + DVZ_HAS_GUI=0 + DVZ_HAS_MIMALLOC=0 + DVZ_ALLOCATOR_DEFAULT_MIMALLOC=0 + DVZ_ENABLE_ASAN_IN_DEBUG=0 + FPNG_NO_SSE=1 + VMA_STATIC_VULKAN_FUNCTIONS=0 + VMA_DYNAMIC_VULKAN_FUNCTIONS=0 +) +if(WIN32) + list(APPEND Renderive_render_3D_datoviz_compile_definitions VK_USE_PLATFORM_WIN32_KHR NOMINMAX) +endif() +# 所有 Datoviz 移植模块共用同一套 C11/C++17、宏定义和目录分组,后续替换 empty 源文件时不改变模块语义。 +function(Renderive_render_3D_datoviz_configure_target target) + target_compile_definitions(${target} PUBLIC ${Renderive_render_3D_datoviz_compile_definitions}) + target_compile_features(${target} PRIVATE c_std_11 cxx_std_17) + set_target_properties(${target} PROPERTIES POSITION_INDEPENDENT_CODE ON FOLDER Renderive_render_3D/datoviz) + if(MSVC) + target_compile_options(${target} PRIVATE /utf-8) + endif() +endfunction() +# 每个模块从自己的移植目录收集源码;当前 empty.c 只是占位,后续直接覆盖/加入 Datoviz 原源码即可。 +function(Renderive_render_3D_datoviz_collect_sources out dir) + file(GLOB _sources CONFIGURE_DEPENDS + "${dir}/*.c" + "${dir}/*.cc" + "${dir}/*.cpp" + "${dir}/*.cxx" + ) + set(${out} ${_sources} PARENT_SCOPE) +endfunction() +if(TARGET Vulkan::Headers) + set(Renderive_render_3D_datoviz_vulkan_target Vulkan::Headers) +else() + set(Renderive_render_3D_datoviz_vulkan_target Vulkan::Vulkan) +endif() +# CORE/common:Datoviz 通用基础设施,线程实现沿用当前 PThreads4W 环境。 +Renderive_render_3D_datoviz_collect_sources(Renderive_render_3D_datoviz_common_sources "${Renderive_render_3D_datoviz_src_dir}/common") +add_library(Renderive_render_3D_datoviz_common OBJECT ${Renderive_render_3D_datoviz_common_sources}) +target_include_directories(Renderive_render_3D_datoviz_common PUBLIC "${Renderive_render_3D_datoviz_include_dir}" INTERFACE "${Renderive_render_3D_datoviz_src_dir}/common") +target_link_libraries(Renderive_render_3D_datoviz_common PUBLIC PThreads4W::PThreads4W) +Renderive_render_3D_datoviz_configure_target(Renderive_render_3D_datoviz_common) +# CORE/fileio:保留 Datoviz fileio + fpng 的边界,压缩统一使用工程已经安装的 ZLIB。 +Renderive_render_3D_datoviz_collect_sources(Renderive_render_3D_datoviz_fileio_sources "${Renderive_render_3D_datoviz_src_dir}/fileio") +list(APPEND Renderive_render_3D_datoviz_fileio_sources "${Renderive_render_3D_datoviz_external_dir}/fpng.cpp") +add_library(Renderive_render_3D_datoviz_fileio OBJECT ${Renderive_render_3D_datoviz_fileio_sources}) +target_include_directories(Renderive_render_3D_datoviz_fileio PUBLIC "${Renderive_render_3D_datoviz_include_dir}" "${Renderive_render_3D_datoviz_external_dir}" "${Renderive_render_3D_datoviz_src_dir}/common") +target_compile_definitions(Renderive_render_3D_datoviz_fileio PUBLIC FPNG_USE_UNALIGNED_LOADS=0) +target_link_libraries(Renderive_render_3D_datoviz_fileio PUBLIC ZLIB::ZLIB) +Renderive_render_3D_datoviz_configure_target(Renderive_render_3D_datoviz_fileio) +# CORE/geom:保持 Datoviz 的 cglm 数学依赖。 +Renderive_render_3D_datoviz_collect_sources(Renderive_render_3D_datoviz_geom_sources "${Renderive_render_3D_datoviz_src_dir}/geom") +add_library(Renderive_render_3D_datoviz_geom OBJECT ${Renderive_render_3D_datoviz_geom_sources}) +target_include_directories(Renderive_render_3D_datoviz_geom PUBLIC "${Renderive_render_3D_datoviz_include_dir}" "${Renderive_render_3D_datoviz_src_dir}/common" "${Renderive_render_3D_datoviz_external_dir}") +target_link_libraries(Renderive_render_3D_datoviz_geom PUBLIC cglm::cglm) +Renderive_render_3D_datoviz_configure_target(Renderive_render_3D_datoviz_geom) +# CORE/math:保持 cglm + 线程依赖。 +Renderive_render_3D_datoviz_collect_sources(Renderive_render_3D_datoviz_math_sources "${Renderive_render_3D_datoviz_src_dir}/math") +add_library(Renderive_render_3D_datoviz_math OBJECT ${Renderive_render_3D_datoviz_math_sources}) +target_include_directories(Renderive_render_3D_datoviz_math PUBLIC "${Renderive_render_3D_datoviz_include_dir}" "${Renderive_render_3D_datoviz_src_dir}/common") +target_link_libraries(Renderive_render_3D_datoviz_math PUBLIC cglm::cglm PThreads4W::PThreads4W) +Renderive_render_3D_datoviz_configure_target(Renderive_render_3D_datoviz_math) +# CORE/thread:线程模块只依赖线程运行库,不引入 Datoviz 其他 runtime。 +Renderive_render_3D_datoviz_collect_sources(Renderive_render_3D_datoviz_thread_sources "${Renderive_render_3D_datoviz_src_dir}/thread") +add_library(Renderive_render_3D_datoviz_thread OBJECT ${Renderive_render_3D_datoviz_thread_sources}) +target_include_directories(Renderive_render_3D_datoviz_thread PUBLIC "${Renderive_render_3D_datoviz_include_dir}" "${Renderive_render_3D_datoviz_src_dir}/common") +target_link_libraries(Renderive_render_3D_datoviz_thread PUBLIC PThreads4W::PThreads4W) +Renderive_render_3D_datoviz_configure_target(Renderive_render_3D_datoviz_thread) +# CONTROLLER/input:先保留 Datoviz 输入数据结构,不接 window/glfw。 +Renderive_render_3D_datoviz_collect_sources(Renderive_render_3D_datoviz_input_sources "${Renderive_render_3D_datoviz_src_dir}/input") +add_library(Renderive_render_3D_datoviz_input OBJECT ${Renderive_render_3D_datoviz_input_sources}) +target_include_directories(Renderive_render_3D_datoviz_input PUBLIC "${Renderive_render_3D_datoviz_include_dir}" "${Renderive_render_3D_datoviz_src_dir}/common") +Renderive_render_3D_datoviz_configure_target(Renderive_render_3D_datoviz_input) +# CONTROLLER/controller:保持 input -> math -> cglm 的原模块关系。 +Renderive_render_3D_datoviz_collect_sources(Renderive_render_3D_datoviz_controller_sources "${Renderive_render_3D_datoviz_src_dir}/controller") +add_library(Renderive_render_3D_datoviz_controller OBJECT ${Renderive_render_3D_datoviz_controller_sources}) +target_include_directories(Renderive_render_3D_datoviz_controller PUBLIC "${Renderive_render_3D_datoviz_include_dir}" "${Renderive_render_3D_datoviz_src_dir}/common" "${Renderive_render_3D_datoviz_src_dir}/controller") +target_link_libraries(Renderive_render_3D_datoviz_controller PUBLIC Renderive_render_3D_datoviz_input Renderive_render_3D_datoviz_math cglm::cglm) +Renderive_render_3D_datoviz_configure_target(Renderive_render_3D_datoviz_controller) +# VK/vk:直接使用工程安装的 volk、VMA 和 Vulkan Headers;不编译 Datoviz 自带第三方库。 +Renderive_render_3D_datoviz_collect_sources(Renderive_render_3D_datoviz_vk_sources "${Renderive_render_3D_datoviz_src_dir}/vk") +list(APPEND Renderive_render_3D_datoviz_vk_sources "${Renderive_render_3D_datoviz_external_dir}/vk_mem_alloc.cpp") +add_library(Renderive_render_3D_datoviz_vk OBJECT ${Renderive_render_3D_datoviz_vk_sources}) +target_include_directories(Renderive_render_3D_datoviz_vk PUBLIC "${Renderive_render_3D_datoviz_include_dir}" "${Renderive_render_3D_datoviz_src_dir}/common") +target_link_libraries(Renderive_render_3D_datoviz_vk PUBLIC volk::volk GPUOpen::VulkanMemoryAllocator ${Renderive_render_3D_datoviz_vulkan_target}) +Renderive_render_3D_datoviz_configure_target(Renderive_render_3D_datoviz_vk) +# VK/vklite:保持 Datoviz 的轻量 Vulkan abstraction,GPU 入口由 vk/volk 提供。 +Renderive_render_3D_datoviz_collect_sources(Renderive_render_3D_datoviz_vklite_sources "${Renderive_render_3D_datoviz_src_dir}/vklite") +add_library(Renderive_render_3D_datoviz_vklite OBJECT ${Renderive_render_3D_datoviz_vklite_sources}) +target_include_directories(Renderive_render_3D_datoviz_vklite PUBLIC "${Renderive_render_3D_datoviz_include_dir}" "${Renderive_render_3D_datoviz_src_dir}/common" PRIVATE "${Renderive_render_3D_datoviz_src_dir}/vklite") +target_link_libraries(Renderive_render_3D_datoviz_vklite PUBLIC Renderive_render_3D_datoviz_vk cglm::cglm) +Renderive_render_3D_datoviz_configure_target(Renderive_render_3D_datoviz_vklite) +# DRP2:保留 packet/recording/backend 这一层,后续真实源码迁入时仍由 vklite 执行 Vulkan backend。 +Renderive_render_3D_datoviz_collect_sources(Renderive_render_3D_datoviz_drp2_sources "${Renderive_render_3D_datoviz_src_dir}/drp2") +add_library(Renderive_render_3D_datoviz_drp2 OBJECT ${Renderive_render_3D_datoviz_drp2_sources}) +target_include_directories(Renderive_render_3D_datoviz_drp2 PUBLIC "${Renderive_render_3D_datoviz_include_dir}" "${Renderive_render_3D_datoviz_src_dir}/common" "${Renderive_render_3D_datoviz_external_dir}") +target_compile_definitions(Renderive_render_3D_datoviz_drp2 PUBLIC DVZ_DRP2_HAS_VKLITE=1 DVZ_HAS_SHADERC=0) +target_link_libraries(Renderive_render_3D_datoviz_drp2 PUBLIC Renderive_render_3D_datoviz_vklite) +Renderive_render_3D_datoviz_configure_target(Renderive_render_3D_datoviz_drp2) +# SCENE:目录完整保留 Datoviz scene 子模块;当前关闭 shader/font 生成,避免在占位阶段依赖尚未迁入的资源文件。 +file(GLOB_RECURSE Renderive_render_3D_datoviz_scene_sources CONFIGURE_DEPENDS + "${Renderive_render_3D_datoviz_src_dir}/scene/*.c" + "${Renderive_render_3D_datoviz_src_dir}/scene/*.cc" + "${Renderive_render_3D_datoviz_src_dir}/scene/*.cpp" + "${Renderive_render_3D_datoviz_src_dir}/scene/*.cxx" +) +add_library(Renderive_render_3D_datoviz_scene OBJECT ${Renderive_render_3D_datoviz_scene_sources}) +target_include_directories(Renderive_render_3D_datoviz_scene PUBLIC + "${Renderive_render_3D_datoviz_include_dir}" + "${Renderive_render_3D_datoviz_src_dir}/common" + "${Renderive_render_3D_datoviz_external_dir}" + "${Renderive_render_3D_datoviz_external_dir}/cimgui" + "${Renderive_render_3D_datoviz_src_dir}/scene" + "${Renderive_render_3D_datoviz_src_dir}/scene/annotation" + "${Renderive_render_3D_datoviz_src_dir}/scene/color" + "${Renderive_render_3D_datoviz_src_dir}/scene/core" + "${Renderive_render_3D_datoviz_src_dir}/scene/domain" + "${Renderive_render_3D_datoviz_src_dir}/scene/frame_plan" + "${Renderive_render_3D_datoviz_src_dir}/scene/frame_plan/graph" + "${Renderive_render_3D_datoviz_src_dir}/scene/interaction" + "${Renderive_render_3D_datoviz_src_dir}/scene/plot" + "${Renderive_render_3D_datoviz_src_dir}/scene/render_contract" + "${Renderive_render_3D_datoviz_src_dir}/scene/runtime" + "${Renderive_render_3D_datoviz_src_dir}/scene/scene_emit" + "${Renderive_render_3D_datoviz_src_dir}/scene/shaders" + "${Renderive_render_3D_datoviz_src_dir}/scene/techniques" + "${Renderive_render_3D_datoviz_src_dir}/scene/text" + "${Renderive_render_3D_datoviz_src_dir}/scene/visuals" +) +target_compile_definitions(Renderive_render_3D_datoviz_scene PUBLIC + DVZ_HAS_PRECOMPILED_SHADERS=0 + DVZ_HAS_GLSL_SHADERS=0 + DVZ_HAS_WGSL_SHADERS=0 + DVZ_HAS_EMBEDDED_FONTS=0 + DVZ_HAS_FREETYPE=1 + DVZ_HAS_MSDF_ATLAS=1 + DVZ_HAS_MSDF_SVG=1 + DVZ_DRP2_HAS_VKLITE=1 +) +target_link_libraries(Renderive_render_3D_datoviz_scene PUBLIC + Renderive_render_3D_datoviz_geom + Renderive_render_3D_datoviz_controller + Renderive_render_3D_datoviz_drp2 + cglm::cglm + Freetype::Freetype + msdfgen::msdfgen + msdf-atlas-gen::msdf-atlas-gen + tinyxml2::tinyxml2 + ZLIB::ZLIB +) +Renderive_render_3D_datoviz_configure_target(Renderive_render_3D_datoviz_scene) +# 只把需要的 Datoviz 模块交给 Render_3D;canvas/window/stream/video/app/gui/qtbridge/wasm 不进入目标。 +set(Renderive_render_3D_datoviz_targets + Renderive_render_3D_datoviz_common + Renderive_render_3D_datoviz_fileio + Renderive_render_3D_datoviz_geom + Renderive_render_3D_datoviz_math + Renderive_render_3D_datoviz_thread + Renderive_render_3D_datoviz_input + Renderive_render_3D_datoviz_controller + Renderive_render_3D_datoviz_vk + Renderive_render_3D_datoviz_vklite + Renderive_render_3D_datoviz_drp2 + Renderive_render_3D_datoviz_scene + PARENT_SCOPE +) diff --git a/render_3D/datoviz/cmake/.keep b/render_3D/datoviz/cmake/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/data/assets/fonts/.keep b/render_3D/datoviz/data/assets/fonts/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/external/cimgui/imgui/imstb_truetype.h b/render_3D/datoviz/external/cimgui/imgui/imstb_truetype.h new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/external/earcut.hpp b/render_3D/datoviz/external/earcut.hpp new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/external/fpng.cpp b/render_3D/datoviz/external/fpng.cpp new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/external/fpng.h b/render_3D/datoviz/external/fpng.h new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/external/stb_image.h b/render_3D/datoviz/external/stb_image.h new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/external/vk_mem_alloc.cpp b/render_3D/datoviz/external/vk_mem_alloc.cpp new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/external/vk_mem_alloc.h b/render_3D/datoviz/external/vk_mem_alloc.h new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/include/datoviz/.keep b/render_3D/datoviz/include/datoviz/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/include/datoviz/common/.keep b/render_3D/datoviz/include/datoviz/common/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/include/datoviz/controller/.keep b/render_3D/datoviz/include/datoviz/controller/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/include/datoviz/drp2/.keep b/render_3D/datoviz/include/datoviz/drp2/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/include/datoviz/fileio/.keep b/render_3D/datoviz/include/datoviz/fileio/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/include/datoviz/geom/.keep b/render_3D/datoviz/include/datoviz/geom/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/include/datoviz/gpu/.keep b/render_3D/datoviz/include/datoviz/gpu/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/include/datoviz/input/.keep b/render_3D/datoviz/include/datoviz/input/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/include/datoviz/math/.keep b/render_3D/datoviz/include/datoviz/math/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/include/datoviz/scene/.keep b/render_3D/datoviz/include/datoviz/scene/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/include/datoviz/text/.keep b/render_3D/datoviz/include/datoviz/text/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/common/empty.c b/render_3D/datoviz/src/common/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/controller/empty.c b/render_3D/datoviz/src/controller/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/drp2/empty.c b/render_3D/datoviz/src/drp2/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/fileio/empty.c b/render_3D/datoviz/src/fileio/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/geom/empty.c b/render_3D/datoviz/src/geom/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/input/empty.c b/render_3D/datoviz/src/input/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/math/empty.c b/render_3D/datoviz/src/math/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/annotation/empty.c b/render_3D/datoviz/src/scene/annotation/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/color/empty.c b/render_3D/datoviz/src/scene/color/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/core/empty.c b/render_3D/datoviz/src/scene/core/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/domain/empty.c b/render_3D/datoviz/src/scene/domain/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/empty.c b/render_3D/datoviz/src/scene/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/frame_plan/empty.c b/render_3D/datoviz/src/scene/frame_plan/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/frame_plan/graph/empty.c b/render_3D/datoviz/src/scene/frame_plan/graph/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/interaction/empty.c b/render_3D/datoviz/src/scene/interaction/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/plot/empty.c b/render_3D/datoviz/src/scene/plot/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/query/empty.c b/render_3D/datoviz/src/scene/query/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/render_contract/empty.c b/render_3D/datoviz/src/scene/render_contract/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/runtime/empty.c b/render_3D/datoviz/src/scene/runtime/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/scene_emit/empty.c b/render_3D/datoviz/src/scene/scene_emit/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/shaders/empty.c b/render_3D/datoviz/src/scene/shaders/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/shaders/glsl/.keep b/render_3D/datoviz/src/scene/shaders/glsl/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/techniques/empty.c b/render_3D/datoviz/src/scene/techniques/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/text/empty.c b/render_3D/datoviz/src/scene/text/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/empty.c b/render_3D/datoviz/src/scene/visuals/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/glyph/.keep b/render_3D/datoviz/src/scene/visuals/glyph/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/image/.keep b/render_3D/datoviz/src/scene/visuals/image/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/labels/.keep b/render_3D/datoviz/src/scene/visuals/labels/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/marker/.keep b/render_3D/datoviz/src/scene/visuals/marker/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/mesh/.keep b/render_3D/datoviz/src/scene/visuals/mesh/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/path/.keep b/render_3D/datoviz/src/scene/visuals/path/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/pixel/.keep b/render_3D/datoviz/src/scene/visuals/pixel/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/point/.keep b/render_3D/datoviz/src/scene/visuals/point/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/primitive/.keep b/render_3D/datoviz/src/scene/visuals/primitive/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/registry/.keep b/render_3D/datoviz/src/scene/visuals/registry/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/segment/.keep b/render_3D/datoviz/src/scene/visuals/segment/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/sphere/.keep b/render_3D/datoviz/src/scene/visuals/sphere/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/splat/.keep b/render_3D/datoviz/src/scene/visuals/splat/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/stroke/.keep b/render_3D/datoviz/src/scene/visuals/stroke/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/text/.keep b/render_3D/datoviz/src/scene/visuals/text/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/vector/.keep b/render_3D/datoviz/src/scene/visuals/vector/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/scene/visuals/volume/.keep b/render_3D/datoviz/src/scene/visuals/volume/.keep new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/thread/empty.c b/render_3D/datoviz/src/thread/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/vk/empty.c b/render_3D/datoviz/src/vk/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/src/vklite/empty.c b/render_3D/datoviz/src/vklite/empty.c new file mode 100644 index 0000000..e69de29 diff --git a/render_3D/datoviz/tools/.keep b/render_3D/datoviz/tools/.keep new file mode 100644 index 0000000..e69de29