Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
2b5636a
Updated INSTRUCTION.md
YVin3D Sep 18, 2018
956abc8
Update CMake and project setup
shehzan10 Sep 17, 2019
1663b39
Update deadline
shehzan10 Sep 17, 2019
2b9e11c
Updated instructions with new slides and denoiser extra credit
YVin3D Sep 17, 2019
b3864ff
Merged instructions update
YVin3D Sep 17, 2019
f14aed0
Typo fixes in INSTRUCTION.md
shehzan10 Sep 17, 2019
9bdc3f9
Update INSTRUCTION.md
Sep 17, 2019
187f245
Update INSTRUCTION.md
Sep 17, 2019
aa1883b
Add missing libraries
shehzan10 Sep 18, 2019
f75c7b6
Update instructions for Fall 2020
shehzan10 Sep 22, 2020
75b8c6f
multiply box intersection normal by invTranspose instead of transform
likangning93 Sep 23, 2020
8da8dd7
Update description for "re-startable path tracing"
likangning93 Sep 23, 2020
7547dc7
update gpu gems links
likangning93 Sep 25, 2020
abf09f1
Remove unused freeglut copyrights
shehzan10 Jan 16, 2021
39089c2
Update CUDA Computes List
shehzan10 Sep 10, 2021
a48b15f
Retab
shehzan10 Sep 10, 2021
0a40d8f
Update instructions for Fall 2021
shehzan10 Sep 18, 2021
098dc94
Add vulkan option
shehzan10 Sep 18, 2021
b6c6cd8
Add sample readmes for inspiration
shehzan10 Sep 19, 2021
8474371
Merge pull request #1 from CIS565-Fall-2021/update-instructions-2021
shehzan10 Sep 21, 2021
614c77c
Added Imgui Integration Files
codeplay9800 Sep 19, 2022
d3d272c
Updated Instruction.md
codeplay9800 Sep 19, 2022
58f5a4b
Update Instruction.md
codeplay9800 Sep 19, 2022
684ebcf
Merge branch 'main' into Integrate_Imgui
codeplay9800 Sep 19, 2022
e9a589b
Imgui Integrated
codeplay9800 Sep 20, 2022
61f425f
Added GUIDataContainer Class
codeplay9800 Sep 20, 2022
1918ff2
Removed ImGUI Cmake
codeplay9800 Sep 21, 2022
e5e7e1c
Update INSTRUCTION.md
shehzan10 Sep 21, 2022
a16d884
Fix a bug that causes MouseOverImGuiWindow() to not work
dw218192 Sep 22, 2022
15e6477
Merge pull request #1 from dw218192/patch-1
codeplay9800 Sep 22, 2022
709f82d
Update INSTRUCTION.md
HummaWhite Sep 16, 2023
1d83363
Added a section for optimization
wayne-wu Sep 18, 2023
61f0ca7
Update INSTRUCTION.md
HummaWhite Sep 19, 2023
66e3e6f
Update 2024
bdwhst Sep 6, 2024
a56a32e
added separate compilation
bdwhst Sep 15, 2024
aa72ea9
update instructions
AdityaGupta1 Sep 16, 2024
fc674ae
fix formatting
AdityaGupta1 Sep 17, 2024
27dfcae
add instructions for submodule clone
AdityaGupta1 Sep 17, 2024
0e8cb07
Update to modern CMake
shehzan10 Sep 17, 2024
db084b8
revert c++17 to c++11
bdwhst Sep 17, 2024
7f943af
update instructions
bdwhst Sep 17, 2024
2acbf99
russian roulette
AdityaGupta1 Sep 17, 2024
ca967a7
revert c++17 to c++11
bdwhst Sep 17, 2024
862bc9a
update instructions
bdwhst Sep 17, 2024
5698ecc
cleanup
AdityaGupta1 Sep 17, 2024
b9039f6
update late day instructions and cornell box warning
AdityaGupta1 Sep 18, 2024
e99618a
Update INSTRUCTION.md - OpenImage Denoiser
shehzan10 Sep 19, 2024
7c8569d
remove .obj from gitignore
AdityaGupta1 Nov 4, 2024
a7c88a8
Merge commit '6126b5fcf5f39441dc71b5e2085ef5808598066b'
shehzan10 Sep 10, 2025
dacd5a1
Update project and instructions for 2025
shehzan10 Sep 10, 2025
f6d4755
Compilation fixes and code cleanup
shehzan10 Sep 10, 2025
8348b7e
Retab
shehzan10 Sep 10, 2025
58b7b4f
Update INSTRUCTION.md
shehzan10 Sep 16, 2025
705d7e7
finish part1
rmurdock41 Sep 28, 2025
9e6cfba
finish glTF+BVH+Russian Roulette
rmurdock41 Oct 6, 2025
199efaf
fix perfect specular
rmurdock41 Oct 6, 2025
4000815
edit part of readme
rmurdock41 Oct 7, 2025
0ba06cf
Add Colored Glass(extra feature for README visuals, does not affect g…
rmurdock41 Oct 8, 2025
d4fe8fc
update readme
rmurdock41 Oct 8, 2025
19300f6
update readme
rmurdock41 Oct 8, 2025
72211a4
Update README.md
rmurdock41 Oct 8, 2025
d96518d
Update README.md
rmurdock41 Oct 8, 2025
5e8f158
Update README.md
rmurdock41 Oct 8, 2025
096ab11
Update README.md
rmurdock41 Oct 8, 2025
1a5e400
Update README.md
rmurdock41 Oct 8, 2025
109c20b
fix BVH bug
rmurdock41 Mar 22, 2026
baae832
remove large zip file
rmurdock41 Mar 22, 2026
f37cb3b
add texture and envMap system
rmurdock41 Apr 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,120 changes: 560 additions & 560 deletions .gitignore

Large diffs are not rendered by default.

208 changes: 124 additions & 84 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,95 +1,135 @@
cmake_minimum_required(VERSION 3.0)
cmake_minimum_required(VERSION 3.24)
project(cis565_path_tracer LANGUAGES CUDA CXX)

project(cis565_path_tracer)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" ${CMAKE_MODULE_PATH})

# Set up include and lib paths
set(EXTERNAL "external")
include_directories("${EXTERNAL}")
include_directories("${EXTERNAL}/include")
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(EXTERNAL_LIB_PATH "${EXTERNAL}/lib/osx")
elseif(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set(EXTERNAL_LIB_PATH "${EXTERNAL}/lib/linux" "/usr/lib64")
elseif(WIN32)
set(EXTERNAL_LIB_PATH "${EXTERNAL}/lib/win")
endif()
link_directories(${EXTERNAL_LIB_PATH})
list(APPEND CMAKE_LIBRARY_PATH "${EXTERNAL_LIB_PATH}")


# Find up and set up core dependency libs

set(GLFW_INCLUDE_DIR "${EXTERNAL}/include")
set(GLFW_LIBRARY_DIR "${CMAKE_LIBRARY_PATH}")
find_library(GLFW_LIBRARY "glfw3" HINTS "${GLFW_LIBRARY_DIR}")

set(GLEW_INCLUDE_DIR "${EXTERNAL}/include")
set(GLEW_LIBRARY_DIR "${CMAKE_LIBRARY_PATH}")
add_definitions(-DGLEW_STATIC)
find_package(GLEW)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)

find_package(OpenGL)
# Enable C++17 for host code
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CUDA_STANDARD 17)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)

set(CORELIBS
"${GLFW_LIBRARY}"
"${OPENGL_LIBRARY}"
"${GLEW_LIBRARY}"
)

# Enable C++11 for host code
set(CMAKE_CXX_STANDARD 11)

# Enable CUDA debug info in debug mode builds
list(APPEND CUDA_NVCC_FLAGS_DEBUG -G -g)

# OSX-specific hacks/fixes
if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
list(APPEND CORELIBS "-framework IOKit")
list(APPEND CORELIBS "-framework Cocoa")
list(APPEND CORELIBS "-framework CoreVideo")
# Set a default build type if none was specified
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
SET_PROPERTY(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
endif()

# Linux-specific hacks/fixes
if(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
list(APPEND CMAKE_EXE_LINKER_FLAGS "-lX11 -lXxf86vm -lXrandr -lXi")
endif()

if (WIN32)
list(APPEND CORELIBS legacy_stdio_definitions.lib)
endif()

# Crucial magic for CUDA linking
find_package(Threads REQUIRED)
find_package(CUDA 8.0 REQUIRED)

set(CUDA_ATTACH_VS_BUILD_RULE_TO_CUDA_FILE ON)
set(CUDA_SEPARABLE_COMPILATION ON)

if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set(CUDA_PROPAGATE_HOST_FLAGS OFF)
endif()
find_package(OpenGL REQUIRED)
find_package(CUDAToolkit REQUIRED)

if(UNIX)
include_directories("${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}")
find_package(glfw3 REQUIRED)
find_package(GLEW REQUIRED)
set(GL_LIBRARIES glfw ${GLEW_LIBRARIES} ${OPENGL_LIBRARIES})
else(UNIX)
include_directories("${CUDAToolkit_INCLUDE_DIRS}")
set(EXTERNAL "${CMAKE_SOURCE_DIR}/external")

set(GLFW_ROOT_DIR ${EXTERNAL})
set(GLFW_USE_STATIC_LIBS ON)
find_package(GLFW REQUIRED)

set(GLEW_ROOT_DIR ${EXTERNAL})
set(GLEW_USE_STATIC_LIBS ON)
find_package(GLEW REQUIRED)

add_definitions(${GLEW_DEFINITIONS})
include_directories(${GLEW_INCLUDE_DIR} ${GLFW_INCLUDE_DIR})
set(GL_LIBRARIES ${GLEW_LIBRARY} ${GLFW_LIBRARY} ${OPENGL_LIBRARY})
endif(UNIX)

set(GLM_ROOT_DIR "${CMAKE_SOURCE_DIR}/external")
find_package(GLM REQUIRED)
include_directories(${GLM_INCLUDE_DIRS})



set(TINYGLTF_DIR ${CMAKE_SOURCE_DIR}/external/tinygltf)

add_library(tinygltf_impl STATIC
${CMAKE_SOURCE_DIR}/src/third_party/tinygltf_impl.cpp
)
target_include_directories(tinygltf_impl PUBLIC ${TINYGLTF_DIR})

set(headers
src/image.h
src/interactions.h
src/intersections.h
src/glslUtility.hpp
src/pathtrace.h
src/scene.h
src/sceneStructs.h
src/utilities.h
)

set(sources
src/main.cpp
src/stb.cpp
src/image.cpp
src/glslUtility.cpp
src/pathtrace.cu
src/intersections.cu
src/interactions.cu
src/scene.cpp
src/utilities.cpp
)

set(imgui_headers
src/ImGui/imconfig.h
src/ImGui/imgui.h
src/ImGui/imgui_impl_glfw.h
src/ImGui/imgui_impl_opengl3.h
src/ImGui/imgui_impl_opengl3_loader.h
src/ImGui/imgui_internal.h
src/ImGui/imstb_rectpack.h
src/ImGui/imstb_textedit.h
src/ImGui/imstb_truetype.h
)

set(imgui_sources
src/ImGui/imgui.cpp
src/ImGui/imgui_demo.cpp
src/ImGui/imgui_draw.cpp
src/ImGui/imgui_impl_glfw.cpp
src/ImGui/imgui_impl_opengl3.cpp
src/ImGui/imgui_tables.cpp
src/ImGui/imgui_widgets.cpp
)

list(SORT headers)
list(SORT sources)
list(SORT imgui_headers)
list(SORT imgui_sources)

source_group("Headers" FILES ${headers})
source_group("Sources" FILES ${sources})
source_group("ImGui\\Headers" FILES ${imgui_headers})
source_group("ImGui\\Sources" FILES ${imgui_sources})

#add_subdirectory(src/ImGui)
add_subdirectory(stream_compaction) # TODO: uncomment if using your stream compaction

add_executable(${CMAKE_PROJECT_NAME} ${sources} ${headers} ${imgui_sources} ${imgui_headers} "src/mesh_loader.h" "src/mesh_loader.cpp")
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${TINYGLTF_DIR})
target_link_libraries(${CMAKE_PROJECT_NAME}
PRIVATE
${GL_LIBRARIES}
stream_compaction
tinygltf_impl
)
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES CUDA_ARCHITECTURES native)

include_directories(.)
#add_subdirectory(stream_compaction) # TODO: uncomment if using your stream compaction
add_subdirectory(src)
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE "$<$<AND:$<CONFIG:Debug,RelWithDebInfo>,$<COMPILE_LANGUAGE:CUDA>>:-G;-src-in-ptx>")
target_compile_options(${CMAKE_PROJECT_NAME} PRIVATE "$<$<AND:$<CONFIG:Release>,$<COMPILE_LANGUAGE:CUDA>>:-lineinfo;-src-in-ptx>")

cuda_add_executable(${CMAKE_PROJECT_NAME}
"src/main.h"
"src/main.cpp"
)
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${CMAKE_PROJECT_NAME})

target_link_libraries(${CMAKE_PROJECT_NAME}
src
#stream_compaction # TODO: uncomment if using your stream compaction
${CORELIBS}
)

add_custom_command(
TARGET ${CMAKE_PROJECT_NAME}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/shaders
${CMAKE_BINARY_DIR}/shaders
)
27 changes: 27 additions & 0 deletions CMakeSettings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"configurations": [
{
"name": "x64-Debug",
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x64_x64" ],
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": ""
},
{
"name": "x64-Release",
"generator": "Ninja",
"configurationType": "Release",
"buildRoot": "${projectDir}\\out\\build\\${name}",
"installRoot": "${projectDir}\\out\\install\\${name}",
"cmakeCommandArgs": "",
"buildCommandArgs": "",
"ctestCommandArgs": "",
"inheritEnvironments": [ "msvc_x64_x64" ],
"variables": []
}
]
}
Loading