Changed CMakeLists.txt to set the C standard to C11. Added multiple binary image files for new visual assets. Added several new image files to enhance rendering capabilities. Changed stb_image.h to improve support for various image formats. Changed ray tracing engine to enhance ray creation and intersection. Changed triangle structure to use a vertex array for better attribute handling. Changed scene initialization to accommodate new texture management.
76 lines
2.2 KiB
CMake
76 lines
2.2 KiB
CMake
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
cmake_minimum_required(VERSION 3.10)
|
|
|
|
set(CMAKE_C_STANDARD 11)
|
|
set(PROJECT_NAME SimpleRayTracer)
|
|
|
|
project(${PROJECT_NAME} LANGUAGES C)
|
|
|
|
find_package(OpenMP REQUIRED)
|
|
|
|
set(EXTERNAL_DIR "${CMAKE_SOURCE_DIR}/external")
|
|
set(SOURCE_DIR "${CMAKE_SOURCE_DIR}/source")
|
|
set(HEADER_DIR "${CMAKE_SOURCE_DIR}/header")
|
|
set(LIBRARY_PATH "${CMAKE_SOURCE_DIR}/lib")
|
|
|
|
# Recursively find all .c files in the Sources directory
|
|
file(GLOB_RECURSE SOURCES "${SOURCE_DIR}/*.c")
|
|
|
|
add_executable(${PROJECT_NAME} WIN32 ${SOURCES})
|
|
|
|
# Include directories
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${EXTERNAL_DIR})
|
|
target_include_directories(${PROJECT_NAME} PRIVATE ${HEADER_DIR})
|
|
|
|
# Define imported target for cglm
|
|
add_library(cglm_shared SHARED IMPORTED)
|
|
set_target_properties(cglm_shared PROPERTIES
|
|
IMPORTED_LOCATION "${LIBRARY_PATH}/cglm.dll"
|
|
IMPORTED_IMPLIB "${LIBRARY_PATH}/cglm.lib"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${EXTERNAL_DIR}/cglm"
|
|
)
|
|
|
|
# Define imported target for assimp
|
|
add_library(assimp_shared SHARED IMPORTED)
|
|
set_target_properties(assimp_shared PROPERTIES
|
|
IMPORTED_LOCATION "${LIBRARY_PATH}/assimp-vc143-mt.dll"
|
|
IMPORTED_IMPLIB "${LIBRARY_PATH}/assimp-vc143-mt.lib"
|
|
INTERFACE_INCLUDE_DIRECTORIES "${EXTERNAL_DIR}/assimp"
|
|
)
|
|
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE
|
|
cglm_shared
|
|
assimp_shared
|
|
)
|
|
|
|
# target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBRARY_PATH}/cglm.lib)
|
|
# target_link_libraries(${PROJECT_NAME} PRIVATE ${LIBRARY_PATH}/assimp-vc143-mt.lib)
|
|
|
|
if(OpenMP_C_FOUND)
|
|
target_link_libraries(${PROJECT_NAME} PRIVATE OpenMP::OpenMP_C)
|
|
endif()
|
|
|
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
|
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
|
|
)
|
|
|
|
if(WIN32)
|
|
add_custom_command(
|
|
TARGET ${PROJECT_NAME} POST_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy
|
|
$<TARGET_RUNTIME_DLLS:${PROJECT_NAME}>
|
|
$<TARGET_FILE_DIR:${PROJECT_NAME}>
|
|
VERBATIM
|
|
COMMAND_EXPAND_LISTS
|
|
)
|
|
endif()
|
|
|
|
add_custom_command(
|
|
TARGET ${PROJECT_NAME} PRE_BUILD
|
|
COMMAND ${CMAKE_COMMAND} -E copy_directory
|
|
${CMAKE_SOURCE_DIR}/assets
|
|
$<TARGET_FILE_DIR:${PROJECT_NAME}>/assets
|
|
)
|
|
|
|
file(COPY ${CMAKE_SOURCE_DIR}/assets DESTINATION ${CMAKE_BINARY_DIR})
|