diff --git a/.gitignore b/.gitignore index 88c351e..e55cf91 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ /Kernel/Renderive_线程问题审计.md /webapp_gallery/node_modules/ /webapp_gallery/dist/ +/third_party/datoviz/ diff --git a/CMakeLists.txt b/CMakeLists.txt index df54a8e..bc4bd3e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,16 +6,13 @@ option(RENDERIVE_BUILD_2D "Build 2D renderer" ON) option(RENDERIVE_BUILD_QT "Build Qt integration" ON) option(RENDERIVE_BUILD_WEB "Build Web integration" ON) option(RENDERIVE_BUILD_TESTS "Build tests" ON) -option(RENDERIVE_BUILD_3D "Build 3D renderer" OFF) +option(RENDERIVE_BUILD_3D "Build 3D renderer" ON) if (RENDERIVE_BUILD_QT AND NOT RENDERIVE_BUILD_2D) message(FATAL_ERROR "RENDERIVE_BUILD_QT requires RENDERIVE_BUILD_2D") endif () if (RENDERIVE_BUILD_WEB AND NOT RENDERIVE_BUILD_2D) message(FATAL_ERROR "RENDERIVE_BUILD_WEB requires RENDERIVE_BUILD_2D") endif () -if (RENDERIVE_BUILD_3D) - message(FATAL_ERROR "RENDERIVE_BUILD_3D is reserved; the 3D renderer is not implemented") -endif () include("${CMAKE_CURRENT_LIST_DIR}/third_party/build_infra/start.cmake") if (RENDERIVE_BUILD_TESTS) enable_testing() @@ -24,6 +21,9 @@ add_subdirectory(Kernel) if (RENDERIVE_BUILD_2D) add_subdirectory(render_2D) endif () +if (RENDERIVE_BUILD_3D) + add_subdirectory(render_3D) +endif () if (RENDERIVE_BUILD_QT) add_subdirectory(Qt) endif () diff --git a/Kernel/CMakeLists.txt b/Kernel/CMakeLists.txt index b4650cc..c6805ac 100644 --- a/Kernel/CMakeLists.txt +++ b/Kernel/CMakeLists.txt @@ -1,38 +1,38 @@ set(Renderive_Kernel_dependencies global::taskflow) -if(RENDERIVE_BUILD_TESTS) +if (RENDERIVE_BUILD_TESTS) list(APPEND Renderive_Kernel_dependencies global::GTest) -endif() +endif () rcl_add_dependency_action_targets(Renderive_Kernel_env ${Renderive_Kernel_dependencies}) set_target_properties(Renderive_Kernel_env PROPERTIES FOLDER Renderive_Kernel) library_is_installed_with_rely(Renderive_Kernel_dependencies_installed ${Renderive_Kernel_dependencies}) -if(NOT Renderive_Kernel_dependencies_installed) - rcl_log_append("[FATAL_ERROR] Renderive_Kernel dependencies are not installed. Build Renderive_Kernel_env first") +if (NOT Renderive_Kernel_dependencies_installed) + rcl_log_append(${CMAKE_CURRENT_LIST_LINE} "[FATAL_ERROR] Renderive_Kernel dependencies are not installed. Build Renderive_Kernel_env first") return() -endif() +endif () rcl_load_dependency_environment(${Renderive_Kernel_dependencies}) find_package(Taskflow CONFIG REQUIRED) find_package(Threads REQUIRED) -if(RENDERIVE_BUILD_TESTS) +if (RENDERIVE_BUILD_TESTS) find_package(GTest CONFIG REQUIRED) -endif() +endif () set(Renderive_Kernel_source_dir "${CMAKE_CURRENT_LIST_DIR}/src") append_glob_source(Renderive_Kernel_sources "${Renderive_Kernel_source_dir}") add_library(Renderive_Kernel STATIC ${Renderive_Kernel_sources}) target_include_directories(Renderive_Kernel PUBLIC - "$" + "$" ) target_compile_features(Renderive_Kernel PUBLIC cxx_std_20) target_link_libraries(Renderive_Kernel PRIVATE Taskflow::Taskflow Threads::Threads) -if(MSVC) +if (MSVC) target_compile_options(Renderive_Kernel PRIVATE /utf-8) -endif() -if(RENDERIVE_BUILD_TESTS) +endif () +if (RENDERIVE_BUILD_TESTS) set(Renderive_Kernel_test_dir "${CMAKE_CURRENT_LIST_DIR}/tests") append_glob_source(Renderive_Kernel_test_sources "${Renderive_Kernel_test_dir}") - foreach(Renderive_Kernel_test_source IN LISTS Renderive_Kernel_test_sources) - if(NOT Renderive_Kernel_test_source MATCHES "\\.(c|cc|cpp|cxx)$") + foreach (Renderive_Kernel_test_source IN LISTS Renderive_Kernel_test_sources) + if (NOT Renderive_Kernel_test_source MATCHES "\\.(c|cc|cpp|cxx)$") continue() - endif() + endif () file(RELATIVE_PATH Renderive_Kernel_test_name "${Renderive_Kernel_test_dir}" "${Renderive_Kernel_test_source}") string(MD5 Renderive_Kernel_test_hash "${Renderive_Kernel_test_name}") string(SUBSTRING "${Renderive_Kernel_test_hash}" 0 8 Renderive_Kernel_test_hash) @@ -41,9 +41,9 @@ if(RENDERIVE_BUILD_TESTS) set(Renderive_Kernel_test_target "Renderive_Kernel_${Renderive_Kernel_test_name}_${Renderive_Kernel_test_hash}") add_executable("${Renderive_Kernel_test_target}" "${Renderive_Kernel_test_source}") target_include_directories("${Renderive_Kernel_test_target}" PRIVATE - "${Renderive_Kernel_test_dir}" + "${Renderive_Kernel_test_dir}" ) target_link_libraries("${Renderive_Kernel_test_target}" PRIVATE Renderive_Kernel GTest::gtest_main) add_test(NAME "${Renderive_Kernel_test_target}" COMMAND "${Renderive_Kernel_test_target}") - endforeach() -endif() + endforeach () +endif () diff --git a/Qt/CMakeLists.txt b/Qt/CMakeLists.txt index 2b6275a..8b6264e 100644 --- a/Qt/CMakeLists.txt +++ b/Qt/CMakeLists.txt @@ -6,7 +6,7 @@ rcl_add_dependency_action_targets(Renderive_Qt_env ${Renderive_Qt_dependencies}) set_target_properties(Renderive_Qt_env PROPERTIES FOLDER Renderive_Qt) library_is_installed_with_rely(Renderive_Qt_dependencies_installed ${Renderive_Qt_dependencies}) if(NOT Renderive_Qt_dependencies_installed) - rcl_log_append("[FATAL_ERROR] Renderive_Qt dependencies are not installed. Build Renderive_Qt_env first") + rcl_log_append(${CMAKE_CURRENT_LIST_LINE} "[FATAL_ERROR] Renderive_Qt dependencies are not installed. Build Renderive_Qt_env first") return() endif() if(Renderive_Qt_dependencies) @@ -17,7 +17,7 @@ if(RENDERIVE_BUILD_TESTS) find_package(GTest CONFIG REQUIRED) endif() if(NOT TARGET Renderive_render_2D) - rcl_log_append("[FATAL_ERROR] Renderive_Qt requires Renderive_render_2D") + rcl_log_append(${CMAKE_CURRENT_LIST_LINE} "[FATAL_ERROR] Renderive_Qt requires Renderive_render_2D") return() endif() set(Renderive_Qt_source_dir "${CMAKE_CURRENT_LIST_DIR}") diff --git a/Qt/plot/Plot.h b/Qt/plot/Plot.h index f5cca64..b5856ef 100644 --- a/Qt/plot/Plot.h +++ b/Qt/plot/Plot.h @@ -1,5 +1,5 @@ #pragma once -#include "render_2D/export.h" +#include "../../render_2D/src/export.h" #include #include #include diff --git a/cmake/pthreads4w.cmake b/cmake/pthreads4w.cmake deleted file mode 100644 index 02876f5..0000000 --- a/cmake/pthreads4w.cmake +++ /dev/null @@ -1,36 +0,0 @@ -include_guard(GLOBAL) -block() - _register_git_cmake_library(renderive::pthreads4w - "https://github.com/GerHobbelt/pthread-win32.git" - "v3.0.3.1" - ) - rcl_get_effective_install_dir(renderive::pthreads4w PTHREADS4W_ROOT) - set(PTHREADS4W_INCLUDE_DIR "${PTHREADS4W_ROOT}/include") - if (CMAKE_BUILD_TYPE STREQUAL "Debug") - set(PTHREADS4W_LIBRARY "${PTHREADS4W_ROOT}/lib/libpthreadVC3d.lib") - else () - set(PTHREADS4W_LIBRARY "${PTHREADS4W_ROOT}/lib/libpthreadVC3.lib") - endif () - set(PTHREADS4W_CONFIG_DIR "${CMAKE_CURRENT_LIST_DIR}/pthreads4w_config") - set(pthreads4w_opts - -DENABLE_TESTS=OFF - "-DDLLDEST=${PTHREADS4W_ROOT}/bin" - "-DLIBDEST=${PTHREADS4W_ROOT}/lib" - "-DHDRDEST=${PTHREADS4W_ROOT}/include" - ) - rcl_cmake_library_set_cmake_options(renderive::pthreads4w ${pthreads4w_opts}) - rcl_cmake_library_set_other_use_opt(renderive::pthreads4w - "-DPThreads4W_DIR=\"${PTHREADS4W_CONFIG_DIR}\"" - "-DPThreads4W_INCLUDE_DIR=\"${PTHREADS4W_INCLUDE_DIR}\"" - "-DPThreads4W_LIBRARY=\"${PTHREADS4W_LIBRARY}\"" - ) - rcl_cmake_library_set_init_script(renderive::pthreads4w - "set(PThreads4W_DIR \"${PTHREADS4W_CONFIG_DIR}\")" - "set(PThreads4W_INCLUDE_DIR \"${PTHREADS4W_INCLUDE_DIR}\")" - ) - rcl_cmake_library_set_clear_script(renderive::pthreads4w - "unset(PThreads4W_DIR)" - "unset(PThreads4W_INCLUDE_DIR)" - "unset(PThreads4W_LIBRARY)" - ) -endblock() \ No newline at end of file diff --git a/render_2D/CMakeLists.txt b/render_2D/CMakeLists.txt index 21857e5..0017135 100644 --- a/render_2D/CMakeLists.txt +++ b/render_2D/CMakeLists.txt @@ -1,42 +1,42 @@ set(Renderive_render_2D_dependencies global::blend2d) -if(RENDERIVE_BUILD_TESTS) +if (RENDERIVE_BUILD_TESTS) list(APPEND Renderive_render_2D_dependencies global::GTest) -endif() +endif () rcl_add_dependency_action_targets(Renderive_render_2D_env ${Renderive_render_2D_dependencies}) set_target_properties(Renderive_render_2D_env PROPERTIES FOLDER Renderive_render_2D) library_is_installed_with_rely(Renderive_render_2D_dependencies_installed ${Renderive_render_2D_dependencies}) -if(NOT Renderive_render_2D_dependencies_installed) - rcl_log_append("[FATAL_ERROR] Renderive_render_2D dependencies are not installed. Build Renderive_render_2D_env first") +if (NOT Renderive_render_2D_dependencies_installed) + rcl_log_append(${CMAKE_CURRENT_LIST_LINE} "[FATAL_ERROR] Renderive_render_2D dependencies are not installed. Build Renderive_render_2D_env first") return() -endif() +endif () rcl_load_dependency_environment(${Renderive_render_2D_dependencies}) find_package(blend2d CONFIG REQUIRED) -if(RENDERIVE_BUILD_TESTS) +if (RENDERIVE_BUILD_TESTS) find_package(GTest CONFIG REQUIRED) -endif() -if(NOT TARGET Renderive_Kernel) - rcl_log_append("[FATAL_ERROR] Renderive_render_2D requires Renderive_Kernel") +endif () +if (NOT TARGET Renderive_Kernel) + rcl_log_append(${CMAKE_CURRENT_LIST_LINE} "[FATAL_ERROR] Renderive_render_2D requires Renderive_Kernel") return() -endif() +endif () set(Renderive_render_2D_source_dir "${CMAKE_CURRENT_LIST_DIR}") append_glob_source(Renderive_render_2D_sources "${Renderive_render_2D_source_dir}") list(FILTER Renderive_render_2D_sources EXCLUDE REGEX "/tests/") add_library(Renderive_render_2D STATIC ${Renderive_render_2D_sources}) target_include_directories(Renderive_render_2D PUBLIC - "$" + "$" ) target_compile_features(Renderive_render_2D PUBLIC cxx_std_20) target_link_libraries(Renderive_render_2D PUBLIC Renderive_Kernel blend2d::blend2d) -if(MSVC) +if (MSVC) target_compile_options(Renderive_render_2D PRIVATE /utf-8) -endif() -if(RENDERIVE_BUILD_TESTS) +endif () +if (RENDERIVE_BUILD_TESTS) set(Renderive_render_2D_test_dir "${CMAKE_CURRENT_LIST_DIR}/tests") append_glob_source(Renderive_render_2D_test_sources "${Renderive_render_2D_test_dir}") - foreach(Renderive_render_2D_test_source IN LISTS Renderive_render_2D_test_sources) - if(NOT Renderive_render_2D_test_source MATCHES "\\.(c|cc|cpp|cxx)$") + foreach (Renderive_render_2D_test_source IN LISTS Renderive_render_2D_test_sources) + if (NOT Renderive_render_2D_test_source MATCHES "\\.(c|cc|cpp|cxx)$") continue() - endif() + endif () file(RELATIVE_PATH Renderive_render_2D_test_name "${Renderive_render_2D_test_dir}" "${Renderive_render_2D_test_source}") string(MD5 Renderive_render_2D_test_hash "${Renderive_render_2D_test_name}") string(SUBSTRING "${Renderive_render_2D_test_hash}" 0 8 Renderive_render_2D_test_hash) @@ -46,5 +46,5 @@ if(RENDERIVE_BUILD_TESTS) add_executable("${Renderive_render_2D_test_target}" "${Renderive_render_2D_test_source}") target_link_libraries("${Renderive_render_2D_test_target}" PRIVATE Renderive_render_2D GTest::gtest_main) add_test(NAME "${Renderive_render_2D_test_target}" COMMAND "${Renderive_render_2D_test_target}") - endforeach() -endif() + endforeach () +endif () diff --git a/render_2D/axis/Abs_Axis.cpp b/render_2D/render_2D/axis/Abs_Axis.cpp similarity index 100% rename from render_2D/axis/Abs_Axis.cpp rename to render_2D/render_2D/axis/Abs_Axis.cpp diff --git a/render_2D/axis/Abs_Axis.h b/render_2D/render_2D/axis/Abs_Axis.h similarity index 100% rename from render_2D/axis/Abs_Axis.h rename to render_2D/render_2D/axis/Abs_Axis.h diff --git a/render_2D/axis/Axis.h b/render_2D/render_2D/axis/Axis.h similarity index 100% rename from render_2D/axis/Axis.h rename to render_2D/render_2D/axis/Axis.h diff --git a/render_2D/axis/Axis_Builder.h b/render_2D/render_2D/axis/Axis_Builder.h similarity index 100% rename from render_2D/axis/Axis_Builder.h rename to render_2D/render_2D/axis/Axis_Builder.h diff --git a/render_2D/axis/Axis_Format.cpp b/render_2D/render_2D/axis/Axis_Format.cpp similarity index 100% rename from render_2D/axis/Axis_Format.cpp rename to render_2D/render_2D/axis/Axis_Format.cpp diff --git a/render_2D/axis/Axis_Format.h b/render_2D/render_2D/axis/Axis_Format.h similarity index 100% rename from render_2D/axis/Axis_Format.h rename to render_2D/render_2D/axis/Axis_Format.h diff --git a/render_2D/axis/Axis_State_Strategy.hpp b/render_2D/render_2D/axis/Axis_State_Strategy.hpp similarity index 100% rename from render_2D/axis/Axis_State_Strategy.hpp rename to render_2D/render_2D/axis/Axis_State_Strategy.hpp diff --git a/render_2D/axis/Axis_Types.h b/render_2D/render_2D/axis/Axis_Types.h similarity index 100% rename from render_2D/axis/Axis_Types.h rename to render_2D/render_2D/axis/Axis_Types.h diff --git a/render_2D/axis/Frequency_Axis.cpp b/render_2D/render_2D/axis/Frequency_Axis.cpp similarity index 100% rename from render_2D/axis/Frequency_Axis.cpp rename to render_2D/render_2D/axis/Frequency_Axis.cpp diff --git a/render_2D/axis/Frequency_Axis.h b/render_2D/render_2D/axis/Frequency_Axis.h similarity index 100% rename from render_2D/axis/Frequency_Axis.h rename to render_2D/render_2D/axis/Frequency_Axis.h diff --git a/render_2D/axis/Numeric_Axis.cpp b/render_2D/render_2D/axis/Numeric_Axis.cpp similarity index 100% rename from render_2D/axis/Numeric_Axis.cpp rename to render_2D/render_2D/axis/Numeric_Axis.cpp diff --git a/render_2D/axis/Numeric_Axis.h b/render_2D/render_2D/axis/Numeric_Axis.h similarity index 100% rename from render_2D/axis/Numeric_Axis.h rename to render_2D/render_2D/axis/Numeric_Axis.h diff --git a/render_2D/axis/Time_Axis.cpp b/render_2D/render_2D/axis/Time_Axis.cpp similarity index 100% rename from render_2D/axis/Time_Axis.cpp rename to render_2D/render_2D/axis/Time_Axis.cpp diff --git a/render_2D/axis/Time_Axis.h b/render_2D/render_2D/axis/Time_Axis.h similarity index 100% rename from render_2D/axis/Time_Axis.h rename to render_2D/render_2D/axis/Time_Axis.h diff --git a/render_2D/base/Types.cpp b/render_2D/render_2D/base/Types.cpp similarity index 100% rename from render_2D/base/Types.cpp rename to render_2D/render_2D/base/Types.cpp diff --git a/render_2D/base/Types.h b/render_2D/render_2D/base/Types.h similarity index 100% rename from render_2D/base/Types.h rename to render_2D/render_2D/base/Types.h diff --git a/render_2D/event/Event.h b/render_2D/render_2D/event/Event.h similarity index 100% rename from render_2D/event/Event.h rename to render_2D/render_2D/event/Event.h diff --git a/render_2D/export.h b/render_2D/render_2D/export.h similarity index 100% rename from render_2D/export.h rename to render_2D/render_2D/export.h diff --git a/render_2D/plottable/Afterglow.cpp b/render_2D/render_2D/plottable/Afterglow.cpp similarity index 100% rename from render_2D/plottable/Afterglow.cpp rename to render_2D/render_2D/plottable/Afterglow.cpp diff --git a/render_2D/plottable/Afterglow.h b/render_2D/render_2D/plottable/Afterglow.h similarity index 100% rename from render_2D/plottable/Afterglow.h rename to render_2D/render_2D/plottable/Afterglow.h diff --git a/render_2D/plottable/Constellation_Diagram.cpp b/render_2D/render_2D/plottable/Constellation_Diagram.cpp similarity index 100% rename from render_2D/plottable/Constellation_Diagram.cpp rename to render_2D/render_2D/plottable/Constellation_Diagram.cpp diff --git a/render_2D/plottable/Constellation_Diagram.h b/render_2D/render_2D/plottable/Constellation_Diagram.h similarity index 100% rename from render_2D/plottable/Constellation_Diagram.h rename to render_2D/render_2D/plottable/Constellation_Diagram.h diff --git a/render_2D/plottable/Curve_Sampling.h b/render_2D/render_2D/plottable/Curve_Sampling.h similarity index 100% rename from render_2D/plottable/Curve_Sampling.h rename to render_2D/render_2D/plottable/Curve_Sampling.h diff --git a/render_2D/plottable/Frequency_Trace.cpp b/render_2D/render_2D/plottable/Frequency_Trace.cpp similarity index 100% rename from render_2D/plottable/Frequency_Trace.cpp rename to render_2D/render_2D/plottable/Frequency_Trace.cpp diff --git a/render_2D/plottable/Frequency_Trace.h b/render_2D/render_2D/plottable/Frequency_Trace.h similarity index 100% rename from render_2D/plottable/Frequency_Trace.h rename to render_2D/render_2D/plottable/Frequency_Trace.h diff --git a/render_2D/plottable/Heatmap_Utils.h b/render_2D/render_2D/plottable/Heatmap_Utils.h similarity index 100% rename from render_2D/plottable/Heatmap_Utils.h rename to render_2D/render_2D/plottable/Heatmap_Utils.h diff --git a/render_2D/plottable/Hover_Tooltip.h b/render_2D/render_2D/plottable/Hover_Tooltip.h similarity index 100% rename from render_2D/plottable/Hover_Tooltip.h rename to render_2D/render_2D/plottable/Hover_Tooltip.h diff --git a/render_2D/plottable/Performance_Overlay.cpp b/render_2D/render_2D/plottable/Performance_Overlay.cpp similarity index 100% rename from render_2D/plottable/Performance_Overlay.cpp rename to render_2D/render_2D/plottable/Performance_Overlay.cpp diff --git a/render_2D/plottable/Performance_Overlay.h b/render_2D/render_2D/plottable/Performance_Overlay.h similarity index 100% rename from render_2D/plottable/Performance_Overlay.h rename to render_2D/render_2D/plottable/Performance_Overlay.h diff --git a/render_2D/plottable/Plottable.h b/render_2D/render_2D/plottable/Plottable.h similarity index 100% rename from render_2D/plottable/Plottable.h rename to render_2D/render_2D/plottable/Plottable.h diff --git a/render_2D/plottable/Plottable_Real_Time_Data.h b/render_2D/render_2D/plottable/Plottable_Real_Time_Data.h similarity index 100% rename from render_2D/plottable/Plottable_Real_Time_Data.h rename to render_2D/render_2D/plottable/Plottable_Real_Time_Data.h diff --git a/render_2D/plottable/Plottables.h b/render_2D/render_2D/plottable/Plottables.h similarity index 100% rename from render_2D/plottable/Plottables.h rename to render_2D/render_2D/plottable/Plottables.h diff --git a/render_2D/plottable/Selection_Rectangle_Overlay.cpp b/render_2D/render_2D/plottable/Selection_Rectangle_Overlay.cpp similarity index 100% rename from render_2D/plottable/Selection_Rectangle_Overlay.cpp rename to render_2D/render_2D/plottable/Selection_Rectangle_Overlay.cpp diff --git a/render_2D/plottable/Selection_Rectangle_Overlay.h b/render_2D/render_2D/plottable/Selection_Rectangle_Overlay.h similarity index 100% rename from render_2D/plottable/Selection_Rectangle_Overlay.h rename to render_2D/render_2D/plottable/Selection_Rectangle_Overlay.h diff --git a/render_2D/plottable/Spectrum.cpp b/render_2D/render_2D/plottable/Spectrum.cpp similarity index 100% rename from render_2D/plottable/Spectrum.cpp rename to render_2D/render_2D/plottable/Spectrum.cpp diff --git a/render_2D/plottable/Spectrum.h b/render_2D/render_2D/plottable/Spectrum.h similarity index 100% rename from render_2D/plottable/Spectrum.h rename to render_2D/render_2D/plottable/Spectrum.h diff --git a/render_2D/plottable/Sweep_Spectrum.cpp b/render_2D/render_2D/plottable/Sweep_Spectrum.cpp similarity index 100% rename from render_2D/plottable/Sweep_Spectrum.cpp rename to render_2D/render_2D/plottable/Sweep_Spectrum.cpp diff --git a/render_2D/plottable/Sweep_Spectrum.h b/render_2D/render_2D/plottable/Sweep_Spectrum.h similarity index 100% rename from render_2D/plottable/Sweep_Spectrum.h rename to render_2D/render_2D/plottable/Sweep_Spectrum.h diff --git a/render_2D/plottable/Waterfall.cpp b/render_2D/render_2D/plottable/Waterfall.cpp similarity index 100% rename from render_2D/plottable/Waterfall.cpp rename to render_2D/render_2D/plottable/Waterfall.cpp diff --git a/render_2D/plottable/Waterfall.h b/render_2D/render_2D/plottable/Waterfall.h similarity index 100% rename from render_2D/plottable/Waterfall.h rename to render_2D/render_2D/plottable/Waterfall.h diff --git a/render_2D/render/Blend2D_Cache.cpp b/render_2D/render_2D/render/Blend2D_Cache.cpp similarity index 100% rename from render_2D/render/Blend2D_Cache.cpp rename to render_2D/render_2D/render/Blend2D_Cache.cpp diff --git a/render_2D/render/Blend2D_Cache.h b/render_2D/render_2D/render/Blend2D_Cache.h similarity index 100% rename from render_2D/render/Blend2D_Cache.h rename to render_2D/render_2D/render/Blend2D_Cache.h diff --git a/render_2D/renderable/Render_Partition.h b/render_2D/render_2D/renderable/Render_Partition.h similarity index 100% rename from render_2D/renderable/Render_Partition.h rename to render_2D/render_2D/renderable/Render_Partition.h diff --git a/render_2D/renderable/Renderable.cpp b/render_2D/render_2D/renderable/Renderable.cpp similarity index 100% rename from render_2D/renderable/Renderable.cpp rename to render_2D/render_2D/renderable/Renderable.cpp diff --git a/render_2D/renderable/Renderable.h b/render_2D/render_2D/renderable/Renderable.h similarity index 100% rename from render_2D/renderable/Renderable.h rename to render_2D/render_2D/renderable/Renderable.h diff --git a/render_2D/renderable/Renderable_Builder.h b/render_2D/render_2D/renderable/Renderable_Builder.h similarity index 100% rename from render_2D/renderable/Renderable_Builder.h rename to render_2D/render_2D/renderable/Renderable_Builder.h diff --git a/render_2D/renderable/Renderable_p.h b/render_2D/render_2D/renderable/Renderable_p.h similarity index 100% rename from render_2D/renderable/Renderable_p.h rename to render_2D/render_2D/renderable/Renderable_p.h diff --git a/render_2D/scene/Scene.cpp b/render_2D/render_2D/scene/Scene.cpp similarity index 100% rename from render_2D/scene/Scene.cpp rename to render_2D/render_2D/scene/Scene.cpp diff --git a/render_2D/scene/Scene.h b/render_2D/render_2D/scene/Scene.h similarity index 100% rename from render_2D/scene/Scene.h rename to render_2D/render_2D/scene/Scene.h diff --git a/render_2D/tests/render_2D_Frame_Pipeline_Tests.cpp b/render_2D/tests/render_2D_Frame_Pipeline_Tests.cpp index 06e07b5..cc4977f 100644 --- a/render_2D/tests/render_2D_Frame_Pipeline_Tests.cpp +++ b/render_2D/tests/render_2D_Frame_Pipeline_Tests.cpp @@ -1,4 +1,4 @@ -#include "render_2D/export.h" +#include "../src/export.h" #include #include #include diff --git a/render_2D/tests/render_2D_Integration_Tests.cpp b/render_2D/tests/render_2D_Integration_Tests.cpp index b29c38b..3ab21cc 100644 --- a/render_2D/tests/render_2D_Integration_Tests.cpp +++ b/render_2D/tests/render_2D_Integration_Tests.cpp @@ -1,4 +1,4 @@ -#include "render_2D/export.h" +#include "../src/export.h" #include "render_2D/plottable/Curve_Sampling.h" #include "render_2D/render/Blend2D_Cache.h" #include diff --git a/render_3D/CMakeLists.txt b/render_3D/CMakeLists.txt new file mode 100644 index 0000000..2ca6579 --- /dev/null +++ b/render_3D/CMakeLists.txt @@ -0,0 +1,56 @@ +# 加载 datoviz的依赖库 +include(${CMAKE_CURRENT_LIST_DIR}/cmake/export.cmake) +set(Renderive_render_3D_dependencies render_3D::pthreads4w render_3D::cglm) +if (RENDERIVE_BUILD_TESTS) + list(APPEND Renderive_render_3D_dependencies global::GTest) +endif () +rcl_add_dependency_action_targets(Renderive_render_3D_env ${Renderive_render_3D_dependencies}) +set_target_properties(Renderive_render_3D_env PROPERTIES FOLDER Renderive_render_3D) +library_is_installed_with_rely(Renderive_render_3D_dependencies_installed ${Renderive_render_3D_dependencies}) +if (NOT Renderive_render_3D_dependencies_installed) + rcl_log_append(${CMAKE_CURRENT_LIST_LINE} "[FATAL_ERROR] Renderive_render_3D dependencies are not installed. Build Renderive_render_3D_env first") + return() +endif () +rcl_load_dependency_environment(${Renderive_render_3D_dependencies}) +# 官网下载安装 https://vulkan.lunarg.com/sdk/home +set(ENV{VULKAN_SDK} "C:/VulkanSDK/1.4.357.0") +find_package(Vulkan REQUIRED) +message(STATUS "${B}Vulkan_VERSION=${Vulkan_VERSION}${E}") +find_package(PThreads4W REQUIRED) +find_package(cglm CONFIG REQUIRED) +if (RENDERIVE_BUILD_TESTS) + find_package(GTest CONFIG REQUIRED) +endif () +if (NOT TARGET Renderive_Kernel) + rcl_log_append(${CMAKE_CURRENT_LIST_LINE} "[FATAL_ERROR] Renderive_render_3D requires Renderive_Kernel") + return() +endif () +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/") +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) +if (MSVC) + target_compile_options(Renderive_render_3D PRIVATE /utf-8) +endif () +if (RENDERIVE_BUILD_TESTS) + set(Renderive_render_3D_test_dir "${CMAKE_CURRENT_LIST_DIR}/tests") + append_glob_source(Renderive_render_3D_test_sources "${Renderive_render_3D_test_dir}") + foreach (Renderive_render_3D_test_source IN LISTS Renderive_render_3D_test_sources) + if (NOT Renderive_render_3D_test_source MATCHES "\\.(c|cc|cpp|cxx)$") + continue() + endif () + file(RELATIVE_PATH Renderive_render_3D_test_name "${Renderive_render_3D_test_dir}" "${Renderive_render_3D_test_source}") + string(MD5 Renderive_render_3D_test_hash "${Renderive_render_3D_test_name}") + string(SUBSTRING "${Renderive_render_3D_test_hash}" 0 8 Renderive_render_3D_test_hash) + get_filename_component(Renderive_render_3D_test_name "${Renderive_render_3D_test_source}" NAME_WE) + string(MAKE_C_IDENTIFIER "${Renderive_render_3D_test_name}" Renderive_render_3D_test_name) + set(Renderive_render_3D_test_target "Renderive_render_3D_${Renderive_render_3D_test_name}_${Renderive_render_3D_test_hash}") + add_executable("${Renderive_render_3D_test_target}" "${Renderive_render_3D_test_source}") + target_link_libraries("${Renderive_render_3D_test_target}" PRIVATE Renderive_render_3D GTest::gtest_main) + add_test(NAME "${Renderive_render_3D_test_target}" COMMAND "${Renderive_render_3D_test_target}") + endforeach () +endif () diff --git a/render_3D/cmake/cglm.cmake b/render_3D/cmake/cglm.cmake new file mode 100644 index 0000000..51a40d0 --- /dev/null +++ b/render_3D/cmake/cglm.cmake @@ -0,0 +1,24 @@ +include_guard(GLOBAL) +block() + _register_git_cmake_library(render_3D::cglm + "https://github.com/recp/cglm.git" + "v0.9.6" + ) + rcl_get_effective_install_dir(render_3D::cglm CGLM_ROOT) + set(CGLM_CONFIG_DIR "${CGLM_ROOT}/lib/cmake/cglm") + set(cglm_opts + -DCGLM_SHARED=OFF + -DCGLM_STATIC=ON + -DCGLM_USE_TEST=OFF + ) + rcl_cmake_library_set_cmake_options(render_3D::cglm ${cglm_opts}) + rcl_cmake_library_set_other_use_opt(render_3D::cglm + "-Dcglm_DIR=\"${CGLM_CONFIG_DIR}\"" + ) + rcl_cmake_library_set_init_script(render_3D::cglm + "set(cglm_DIR \"${CGLM_CONFIG_DIR}\")" + ) + rcl_cmake_library_set_clear_script(render_3D::cglm + "unset(cglm_DIR)" + ) +endblock() \ No newline at end of file diff --git a/render_3D/cmake/export.cmake b/render_3D/cmake/export.cmake new file mode 100644 index 0000000..e628799 --- /dev/null +++ b/render_3D/cmake/export.cmake @@ -0,0 +1,4 @@ +rcl_init(render_3D) +include(${CMAKE_CURRENT_LIST_DIR}/pthreads4w.cmake) +include(${CMAKE_CURRENT_LIST_DIR}/cglm.cmake) +list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/module") \ No newline at end of file diff --git a/render_3D/cmake/module/FindPThreads4W.cmake b/render_3D/cmake/module/FindPThreads4W.cmake new file mode 100644 index 0000000..9e883d2 --- /dev/null +++ b/render_3D/cmake/module/FindPThreads4W.cmake @@ -0,0 +1,25 @@ +include_guard(GLOBAL) +rcl_get_effective_install_dir(render_3D::pthreads4w PTHREADS4W_ROOT) +set(PThreads4W_INCLUDE_DIR "${PTHREADS4W_ROOT}/include") +if (CMAKE_BUILD_TYPE STREQUAL "Debug") + set(PThreads4W_LIBRARY "${PTHREADS4W_ROOT}/lib/pthreadVC3d.lib") +else () + set(PThreads4W_LIBRARY "${PTHREADS4W_ROOT}/lib/pthreadVC3.lib") +endif () +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(PThreads4W + REQUIRED_VARS + PThreads4W_INCLUDE_DIR + PThreads4W_LIBRARY +) +if (PThreads4W_FOUND AND NOT TARGET PThreads4W::PThreads4W) + add_library(PThreads4W::PThreads4W UNKNOWN IMPORTED) + set_target_properties(PThreads4W::PThreads4W PROPERTIES + IMPORTED_LOCATION "${PThreads4W_LIBRARY}" + INTERFACE_INCLUDE_DIRECTORIES "${PThreads4W_INCLUDE_DIR}" + ) +endif () +mark_as_advanced( + PThreads4W_INCLUDE_DIR + PThreads4W_LIBRARY +) \ No newline at end of file diff --git a/render_3D/cmake/pthreads4w.cmake b/render_3D/cmake/pthreads4w.cmake new file mode 100644 index 0000000..8603cb5 --- /dev/null +++ b/render_3D/cmake/pthreads4w.cmake @@ -0,0 +1,37 @@ +include_guard(GLOBAL) +block() + if (WIN32) + _register_git_cmake_library(render_3D::pthreads4w + "https://github.com/GerHobbelt/pthread-win32.git" + "v3.0.3.1" + ) + rcl_get_effective_install_dir(render_3D::pthreads4w PTHREADS4W_ROOT) + set(PTHREADS4W_INCLUDE_DIR "${PTHREADS4W_ROOT}/include") + if (CMAKE_BUILD_TYPE STREQUAL "Debug") + set(PTHREADS4W_LIBRARY "${PTHREADS4W_ROOT}/lib/pthreadVC3d.lib") + else () + set(PTHREADS4W_LIBRARY "${PTHREADS4W_ROOT}/lib/pthreadVC3.lib") + endif () + set(pthreads4w_opts + -DENABLE_TESTS=OFF + "-DCMAKE_C_FLAGS=-D_WINDLL" + "-DCMAKE_CXX_FLAGS=-D_WINDLL" + "-DDLLDEST=${PTHREADS4W_ROOT}/bin" + "-DLIBDEST=${PTHREADS4W_ROOT}/lib" + "-DHDRDEST=${PTHREADS4W_ROOT}/include" + ) + rcl_cmake_library_set_cmake_options(render_3D::pthreads4w ${pthreads4w_opts}) + rcl_cmake_library_set_other_use_opt(render_3D::pthreads4w + "-DPThreads4W_INCLUDE_DIR=\"${PTHREADS4W_INCLUDE_DIR}\"" + "-DPThreads4W_LIBRARY=\"${PTHREADS4W_LIBRARY}\"" + ) + rcl_cmake_library_set_init_script(render_3D::pthreads4w + "set(PThreads4W_INCLUDE_DIR \"${PTHREADS4W_INCLUDE_DIR}\")" + "set(PThreads4W_LIBRARY \"${PTHREADS4W_LIBRARY}\")" + ) + rcl_cmake_library_set_clear_script(render_3D::pthreads4w + "unset(PThreads4W_INCLUDE_DIR)" + "unset(PThreads4W_LIBRARY)" + ) + endif () +endblock() \ No newline at end of file diff --git a/render_3D/render_3D/main.cpp b/render_3D/render_3D/main.cpp new file mode 100644 index 0000000..e69de29 diff --git a/web_server/CMakeLists.txt b/web_server/CMakeLists.txt index 243de3f..43cbb7e 100644 --- a/web_server/CMakeLists.txt +++ b/web_server/CMakeLists.txt @@ -88,7 +88,7 @@ add_custom_target(Renderive_Web_Assets ) library_is_installed_with_rely(Renderive_Web_dependencies_installed ${Renderive_Web_dependencies}) if (NOT Renderive_Web_dependencies_installed) - rcl_log_append("[FATAL_ERROR] Renderive_Web dependencies are not installed. Build Renderive_Web_env first") + rcl_log_append(${CMAKE_CURRENT_LIST_LINE} "[FATAL_ERROR] Renderive_Web dependencies are not installed. Build Renderive_Web_env first") return() endif () function(renderive_find_web_dependencies) @@ -105,7 +105,7 @@ function(renderive_find_web_dependencies) endfunction() renderive_find_web_dependencies() if (NOT TARGET Renderive_render_2D) - rcl_log_append("[FATAL_ERROR] Renderive_Web requires Renderive_render_2D") + rcl_log_append(${CMAKE_CURRENT_LIST_LINE} "[FATAL_ERROR] Renderive_Web requires Renderive_render_2D") return() endif () if (NOT TARGET Adminive::Nlohmann)