3D 第一版

This commit is contained in:
2026-08-13 19:47:37 +08:00
parent 432c3afe6c
commit d99da004d0
26 changed files with 2141 additions and 297 deletions
+59 -12
View File
@@ -1,14 +1,32 @@
include_guard(GLOBAL)
if (WIN32 AND (NOT DEFINED ENV{VULKAN_SDK} OR NOT EXISTS "$ENV{VULKAN_SDK}/Include/vulkan/vulkan.h"))
file(GLOB _renderive_vulkan_sdk_candidates LIST_DIRECTORIES TRUE "C:/VulkanSDK/*")
list(SORT _renderive_vulkan_sdk_candidates COMPARE NATURAL ORDER DESCENDING)
foreach (_renderive_vulkan_sdk_candidate IN LISTS _renderive_vulkan_sdk_candidates)
if (EXISTS "${_renderive_vulkan_sdk_candidate}/Include/vulkan/vulkan.h" AND
EXISTS "${_renderive_vulkan_sdk_candidate}/Bin/glslc.exe")
set(ENV{VULKAN_SDK} "${_renderive_vulkan_sdk_candidate}")
break()
endif ()
endforeach ()
unset(_renderive_vulkan_sdk_candidate)
unset(_renderive_vulkan_sdk_candidates)
endif ()
block()
set(datoviz_opts
-DBUILD_SHARED_LIBS=OFF
"-DCMAKE_C_FLAGS=-utf-8"
"-DCMAKE_CXX_FLAGS=-utf-8"
-DDVZ_BUILD_CORE=ON
-DDVZ_BUILD_CONTROLLER=ON
-DDVZ_BUILD_VK=ON
-DDVZ_BUILD_CANVAS=ON
-DDVZ_BUILD_CANVAS=OFF
-DDVZ_BUILD_DRP2=ON
-DDVZ_BUILD_WEBGPU=OFF
-DDVZ_BUILD_SCENE=ON
-DDVZ_BUILD_APP=ON
-DDVZ_BUILD_APP=OFF
-DDVZ_BUILD_GUI=OFF
-DDVZ_BUILD_TESTING=OFF
-DDVZ_BUILD_EXAMPLES=OFF
@@ -17,35 +35,64 @@ block()
-DDVZ_ENABLE_CUDA=OFF
-DDVZ_ENABLE_KVAZAAR=OFF
-DDVZ_ENABLE_QT_BRIDGE=OFF
-DDVZ_ENABLE_SHADERC=OFF
-DDVZ_ENABLE_SHADERC=ON
-DDVZ_WITH_FREETYPE=OFF
-DDVZ_WITH_MSDF_ATLAS=OFF
-DDVZ_WITH_MSDF_SVG=OFF
-DDVZ_WITH_ZLIB=OFF
-DDVZ_WITH_GLFW=ON
-DDVZ_WITH_GLFW=OFF
-DDVZ_USE_MIMALLOC_RELEASE_DEFAULT=OFF
)
_register_git_cmake_library(renderive::datoviz
if (WIN32)
set(DATOVIZ_VULKAN_SDK "$ENV{VULKAN_SDK}")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(DATOVIZ_SHADERC_RUNTIME "${DATOVIZ_VULKAN_SDK}/Bin/shaderc_sharedd.dll")
set(DATOVIZ_SHADERC_LIBRARY "${DATOVIZ_VULKAN_SDK}/Lib/shaderc_sharedd.lib")
else ()
set(DATOVIZ_SHADERC_RUNTIME "${DATOVIZ_VULKAN_SDK}/Bin/shaderc_shared.dll")
set(DATOVIZ_SHADERC_LIBRARY "${DATOVIZ_VULKAN_SDK}/Lib/shaderc_shared.lib")
endif ()
if (NOT EXISTS "${DATOVIZ_VULKAN_SDK}/Include/vulkan/vulkan.h" OR
NOT EXISTS "${DATOVIZ_VULKAN_SDK}/Bin/glslc.exe" OR
NOT EXISTS "${DATOVIZ_SHADERC_LIBRARY}" OR
NOT EXISTS "${DATOVIZ_SHADERC_RUNTIME}")
message(FATAL_ERROR "Render_3D requires a Vulkan SDK with glslc and shared shaderc")
endif ()
list(APPEND datoviz_opts
"-DGLSLC_PATH=${DATOVIZ_VULKAN_SDK}/Bin"
"-DDVZ_SHADERC_INCLUDE_DIR=${DATOVIZ_VULKAN_SDK}/Include"
"-DDVZ_SHADERC_LIBRARY=${DATOVIZ_SHADERC_LIBRARY}"
"-DDVZ_SHADERC_RUNTIME_LIBRARY=${DATOVIZ_SHADERC_RUNTIME}"
)
endif ()
_register_git_cmake_library(render_3D::datoviz
"https://github.com/datoviz/datoviz.git"
"v0.4.0rc2"
)
rcl_cmake_library_set_cmake_options(renderive::datoviz ${datoviz_opts})
if (WIN32 AND NOT MINGW)
rcl_cmake_library_set_deps(renderive::datoviz renderive::pthreads4w)
rcl_get_effective_install_dir(render_3D::PThreads4W PTHREADS4W_ROOT)
set(PTHREADS4W_CONFIG_DIR "${CMAKE_CURRENT_LIST_DIR}/../render_3D/cmake/package/PThreads4W")
rcl_cmake_library_set_deps(render_3D::datoviz render_3D::PThreads4W)
list(APPEND datoviz_opts
"-DPTHREADS4W_ROOT=${PTHREADS4W_ROOT}"
"-DPThreads4W_DIR=${PTHREADS4W_CONFIG_DIR}"
)
endif ()
rcl_get_effective_install_dir(renderive::datoviz DATOVIZ_ROOT)
rcl_cmake_library_set_cmake_options(render_3D::datoviz ${datoviz_opts})
rcl_get_effective_install_dir(render_3D::datoviz DATOVIZ_ROOT)
set(DATOVIZ_CMAKE_DIR "${DATOVIZ_ROOT}/lib/cmake/datoviz")
rcl_cmake_library_set_other_use_opt(renderive::datoviz
rcl_cmake_library_set_other_use_opt(render_3D::datoviz
"-Ddatoviz_DIR=\"${DATOVIZ_CMAKE_DIR}\""
"-DDatoviz_DIR=\"${DATOVIZ_CMAKE_DIR}\""
)
rcl_cmake_library_set_init_script(renderive::datoviz
rcl_cmake_library_set_init_script(render_3D::datoviz
"set(DATOVIZ_ROOT \"${DATOVIZ_ROOT}\")"
"set(datoviz_DIR \"${DATOVIZ_CMAKE_DIR}\")"
"set(Datoviz_DIR \"${DATOVIZ_CMAKE_DIR}\")"
)
rcl_cmake_library_set_clear_script(renderive::datoviz
rcl_cmake_library_set_clear_script(render_3D::datoviz
"unset(DATOVIZ_ROOT)"
"unset(datoviz_DIR)"
"unset(Datoviz_DIR)"
)
endblock()
endblock()