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
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})
|