High performance rendering of implicit surfaces presented in blobtree view. Use Vulkan(NVVK) as backend.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

139 lines
5.9 KiB

cmake_minimum_required(VERSION 3.15)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
project(eval_def_generator)
add_executable(${PROJECT_NAME})
target_link_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_sources(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src/evalDefGenerator.cpp)
set_target_properties(${PROJECT_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin_x64/${CMAKE_BUILD_TYPE}
CXX_STANDARD 17) # std-c++=20 will give error when executing binary, this is weird...
add_custom_command(
TARGET ${PROJECT_NAME}
POST_BUILD
COMMAND echo ${PROJECT_NAME} -o ${CMAKE_CURRENT_SOURCE_DIR}/src/shader/evaluation/eval_defs.glsl
COMMAND ./${PROJECT_NAME} -o ${CMAKE_CURRENT_SOURCE_DIR}/src/shader/evaluation/eval_defs.glsl
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin_x64/${CMAKE_BUILD_TYPE}
)
project(implicit_conversion_rendering)
add_executable(${PROJECT_NAME})
include(cmake/Graphnode.cmake)
if(NOT BASE_DIRECTORY)
set(BASE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty)
endif()
if(EXISTS ${BASE_DIRECTORY}/nvpro_core/cmake/setup.cmake)
include(3rdparty/nvpro_core/cmake/setup.cmake)
include(3rdparty/nvpro_core/cmake/utilities.cmake)
endif()
set(OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/bin_${ARCH})
message(STATUS "-------------------------------")
#find_package(Torch REQUIRED)
# message(STATUS "--> using package LibTorch along with CUDA & CuDNN")
find_package(OpenMP REQUIRED)
message(STATUS "--> using package OpenMP")
find_package(Graphviz REQUIRED)
message(STATUS "--> using package Graphviz")
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${TORCH_CXX_FLAGS})
# library for graphics rendering
message(STATUS "-------------------------------")
_add_package_GLM()
_add_package_VMA()
_add_package_VulkanSDK()
_add_package_ImGUI()
message(STATUS "--> using package ImGUI::GraphNode")
#add_subdirectory(${BASE_DIRECTORY}/imgui-graphnode)
_add_nvpro_core_lib()
_add_project_definitions(${PROJECT_NAME})
# compile all GLSL shader to Spirv
set(GLSL_COMPILE_FLAGS)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
list(APPEND GLSL_COMPILE_FLAGS -DDEBUG_MODE)
endif()
if(NOT EXISTS ${OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/shaders)
file(MAKE_DIRECTORY ${OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/shaders)
endif()
compile_glsl_directory(
SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/shader"
DST "${OUTPUT_PATH}/${CMAKE_BUILD_TYPE}/shaders"
VULKAN_TARGET "vulkan1.3"
DEPENDENCY ${VULKAN_BUILD_DEPENDENCIES}
FLAGS ${GLSL_COMPILE_FLAGS}
)
file(GLOB SOURCE_FILES src/*.cpp src/*.hpp)
list(REMOVE_ITEM SOURCE_FILES ${CMAKE_CURRENT_SOURCE_DIR}/src/evalDefGenerator.cpp)
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src)
target_include_directories(${PROJECT_NAME} PUBLIC ${Graphviz_INCLUDE_DIRECTORIES})
source_group("shader files" FILES ${GLSL_SOURCES})
source_group("source files" FILES ${SOURCE_FILES})
target_sources(${PROJECT_NAME} PUBLIC ${SOURCE_FILES})
target_sources(${PROJECT_NAME} PUBLIC ${COMMON_SOURCE_FILES})
target_sources(${PROJECT_NAME} PUBLIC ${PACKAGE_SOURCE_FILES})
target_sources(${PROJECT_NAME} PUBLIC ${GLSL_SOURCES} ${GLSL_HEADERS})
target_link_libraries(${PROJECT_NAME} PUBLIC ${TORCH_LIBRARIES} ${MKL_LIBRARIES} OpenMP::OpenMP_CXX)
target_link_libraries(${PROJECT_NAME} PUBLIC ${PLATFORM_LIBRARIES} nvpro_core) # link nvpro_core libraries
target_link_libraries(${PROJECT_NAME} PUBLIC Graphviz::Graphviz)
add_dependencies(${PROJECT_NAME} eval_def_generator)
#foreach(DEBUGLIB ${LIBRARIES_DEBUG})
# target_link_libraries(${PROJECT_NAME} debug ${DEBUGLIB})
#endforeach(DEBUGLIB)
#foreach(RELEASELIB ${LIBRARIES_OPTIMIZED})
# target_link_libraries(${PROJECT_NAME} optimized ${RELEASELIB})
#endforeach(RELEASELIB)
_finalize_target(${PROJECT_NAME})
# The following code block is suggested to be used on Windows.
# According to https://github.com/pytorch/pytorch/issues/25457,
# the DLLs need to be copied to avoid memory errors.
set(LIBRARIES_COPIED 1)
if(NOT LIBRARIES_COPIED)
if(WIN32)
if(MSVC)
file(GLOB TORCH_DLLS "${TORCH_INSTALL_PREFIX}/lib/*.dll")
add_custom_command(TARGET ${PROJECT_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${TORCH_DLLS}
$<TARGET_FILE_DIR:${PROJECT_NAME}>)
endif()
endif()
set(LIBRARIES_COPIED 1)
endif()
# install(FILES ${SPV_OUTPUT} CONFIGURATIONS Debug DESTINATION bin_${ARCH}_Debug/shaders)
project(test_tracing_in_obj_space)
add_executable(${PROJECT_NAME})
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/test ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/nvpro_core/nvmath)
target_sources(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/test/test_tracing_in_obj_space.cpp)
set_target_properties(${PROJECT_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin_x64/${CMAKE_BUILD_TYPE})
project(test_projection)
add_executable(${PROJECT_NAME})
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/test ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/nvpro_core/nvmath)
target_sources(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/test/test_projection.cpp)
set_target_properties(${PROJECT_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin_x64/${CMAKE_BUILD_TYPE})
project(test_cal_bounding_analytical)
add_executable(${PROJECT_NAME})
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/test ${CMAKE_CURRENT_SOURCE_DIR}/3rdparty/nvpro_core/nvmath)
target_sources(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/test/test_cal_bounding_analytical.cpp)
set_target_properties(${PROJECT_NAME} PROPERTIES
RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin_x64/${CMAKE_BUILD_TYPE})