Skip to content

Commit

Permalink
fixed optix compile
Browse files Browse the repository at this point in the history
  • Loading branch information
gralkapk committed Jul 5, 2024
1 parent 988e572 commit 7813359
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 11 deletions.
79 changes: 69 additions & 10 deletions plugins/optix_hpg/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -34,23 +34,82 @@ if (optix_hpg_PLUGIN_ENABLED)
find_package(CUDAToolkit)
include(configure_optix)

get_target_property(GLM_INCLUDES glm::glm INTERFACE_INCLUDE_DIRECTORIES)
#get_target_property(GLM_INCLUDES glm::glm INTERFACE_INCLUDE_DIRECTORIES)

# Collect source files
file(GLOB_RECURSE cuda_resource_include_files RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}" "cuda_resources/*.h" "cuda_resources/*.cuh")

#include_directories(${GLM_INCLUDES} "${CMAKE_CURRENT_SOURCE_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}/cuda_resources")
embed_ptx(OUTPUT_TARGET embedded_raygen_programs SOURCES cuda_resources/raygen.cu)
embed_ptx(OUTPUT_TARGET embedded_miss_programs SOURCES cuda_resources/miss.cu)
embed_ptx(OUTPUT_TARGET embedded_miss_occlusion_programs SOURCES cuda_resources/miss_occlusion.cu)
embed_ptx(OUTPUT_TARGET embedded_sphere_programs SOURCES cuda_resources/sphere.cu)
embed_ptx(OUTPUT_TARGET embedded_sphere_occlusion_programs SOURCES cuda_resources/sphere_occlusion.cu)
embed_ptx(OUTPUT_TARGET embedded_mesh_programs SOURCES cuda_resources/mesh.cu)
embed_ptx(OUTPUT_TARGET embedded_transitioncalculator_programs SOURCES cuda_resources/transitioncalculator.cu)
set(ptx_include_dirs "${CMAKE_CURRENT_SOURCE_DIR}/src" "${CMAKE_CURRENT_SOURCE_DIR}/cuda_resources" "${OptiX_INCLUDE}")
embed_ptx(
OUTPUT_TARGET
embedded_raygen_programs
PTX_LINK_LIBRARIES
glm::glm
PTX_INCLUDE_DIRECTORIES
${ptx_include_dirs}
SOURCES
cuda_resources/raygen.cu)
embed_ptx(
OUTPUT_TARGET
embedded_miss_programs
PTX_LINK_LIBRARIES
glm::glm
PTX_INCLUDE_DIRECTORIES
${ptx_include_dirs}
SOURCES
cuda_resources/miss.cu)
embed_ptx(
OUTPUT_TARGET
embedded_miss_occlusion_programs
PTX_LINK_LIBRARIES
glm::glm
PTX_INCLUDE_DIRECTORIES
${ptx_include_dirs}
SOURCES
cuda_resources/miss_occlusion.cu)
embed_ptx(
OUTPUT_TARGET
embedded_sphere_programs
PTX_LINK_LIBRARIES
glm::glm
PTX_INCLUDE_DIRECTORIES
${ptx_include_dirs}
SOURCES
cuda_resources/sphere.cu)
embed_ptx(
OUTPUT_TARGET
embedded_sphere_occlusion_programs
PTX_LINK_LIBRARIES
glm::glm
PTX_INCLUDE_DIRECTORIES
${ptx_include_dirs}
SOURCES
cuda_resources/sphere_occlusion.cu)
embed_ptx(
OUTPUT_TARGET
embedded_mesh_programs
PTX_LINK_LIBRARIES
glm::glm
PTX_INCLUDE_DIRECTORIES
${ptx_include_dirs}
SOURCES
cuda_resources/mesh.cu)
embed_ptx(
OUTPUT_TARGET
embedded_transitioncalculator_programs
PTX_LINK_LIBRARIES
glm::glm
PTX_INCLUDE_DIRECTORIES
${ptx_include_dirs}
SOURCES
cuda_resources/transitioncalculator.cu)

target_sources(optix_hpg PRIVATE ${cuda_resource_include_files} ${embedded_raygen_programs} ${embedded_miss_programs} ${embedded_miss_occlusion_programs} ${embedded_sphere_programs} ${embedded_sphere_occlusion_programs} ${embedded_mesh_programs} ${embedded_transitioncalculator_programs})
target_sources(optix_hpg PRIVATE ${cuda_resource_include_files})
#target_sources(optix_hpg PRIVATE ${cuda_resource_include_files} ${embedded_raygen_programs} ${embedded_miss_programs} ${embedded_miss_occlusion_programs} ${embedded_sphere_programs} ${embedded_sphere_occlusion_programs} ${embedded_mesh_programs} ${embedded_transitioncalculator_programs})
target_link_libraries(optix_hpg PRIVATE $<TARGET_OBJECTS:embedded_raygen_programs> $<TARGET_OBJECTS:embedded_miss_programs> $<TARGET_OBJECTS:embedded_miss_occlusion_programs> $<TARGET_OBJECTS:embedded_sphere_programs> $<TARGET_OBJECTS:embedded_sphere_occlusion_programs> $<TARGET_OBJECTS:embedded_mesh_programs> $<TARGET_OBJECTS:embedded_transitioncalculator_programs>)

target_include_directories(optix_hpg PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/cuda_resources/")
target_include_directories(optix_hpg PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/cuda_resources/" "${OptiX_INCLUDE}")
target_link_libraries(optix_hpg PRIVATE CUDA::cuda_driver)
if (MEGAMOL_USE_OPENGL)
target_link_libraries(optix_hpg PRIVATE mmstd_gl)
Expand Down
4 changes: 3 additions & 1 deletion plugins/optix_hpg/cmake/configure_optix.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ find_program(BIN2C bin2c
## SPDX-License-Identifier: Apache-2.0
function(embed_ptx)
set(oneArgs OUTPUT_TARGET)
set(multiArgs PTX_LINK_LIBRARIES SOURCES)
set(multiArgs PTX_LINK_LIBRARIES PTX_INCLUDE_DIRECTORIES SOURCES)
cmake_parse_arguments(EMBED_PTX "" "${oneArgs}" "${multiArgs}" ${ARGN})

if (NOT ${NUM_SOURCES} EQUAL 1)
Expand All @@ -52,8 +52,10 @@ function(embed_ptx)
add_library(${PTX_TARGET} OBJECT)
target_sources(${PTX_TARGET} PRIVATE ${EMBED_PTX_SOURCES})
target_link_libraries(${PTX_TARGET} PRIVATE ${EMBED_PTX_PTX_LINK_LIBRARIES})
target_include_directories(${PTX_TARGET} PRIVATE ${EMBED_PTX_PTX_INCLUDE_DIRECTORIES})
set_property(TARGET ${PTX_TARGET} PROPERTY CUDA_PTX_COMPILATION ON)
set_property(TARGET ${PTX_TARGET} PROPERTY CUDA_ARCHITECTURES OFF)
set_property(TARGET ${PTX_TARGET} PROPERTY CXX_STANDARD 17)

set(EMBED_PTX_C_FILE ${CMAKE_CURRENT_BINARY_DIR}/${EMBED_PTX_OUTPUT_TARGET}.c)
get_filename_component(OUTPUT_FILE_NAME ${EMBED_PTX_C_FILE} NAME)
Expand Down

0 comments on commit 7813359

Please sign in to comment.