Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
a3c48e1
feat: implement diffuse mat and stream compaction
jackypark9852 Sep 19, 2025
db80a37
feat: add material type field and improve material loading
jackypark9852 Sep 19, 2025
df54937
feat: simplify assignment of indexOfRefraction in material loading
jackypark9852 Sep 19, 2025
da13e7c
feat: add transmissive material support to path tracer
jackypark9852 Sep 19, 2025
7a45b20
feat: add settings for stream compaction and material sorting
jackypark9852 Sep 19, 2025
dbf6142
sanitize
jackypark9852 Sep 20, 2025
2c027cd
untested: add material type sorting in path tracer
jackypark9852 Sep 20, 2025
ed0680d
refactor: material shading and sorting kernels
jackypark9852 Sep 21, 2025
d465a8d
feat: refactor Material struct and add PBR support
jackypark9852 Sep 21, 2025
b1ee77b
refactor: PBR material to metallic and dielectric types
jackypark9852 Sep 21, 2025
c2e293a
feat: add pbr debug scene
jackypark9852 Sep 21, 2025
f664944
feat: new test scene for metallic and dielectric
jackypark9852 Sep 21, 2025
7ba7917
untested: texture class
jackypark9852 Sep 22, 2025
3b52164
feat: fix environment map loading
jackypark9852 Sep 22, 2025
6e3b93f
feat: add environment map material and shading support
jackypark9852 Sep 23, 2025
6d2e5ff
refactor: consolidate metallic and dielectric workflow to one kernel
jackypark9852 Sep 23, 2025
dd3d356
feat: PBR shading logic in shadePbr_impl
jackypark9852 Sep 23, 2025
a60502a
refactor: shading kernels and add BSDF utilities
jackypark9852 Sep 23, 2025
f1991d1
broken: spec refl
jackypark9852 Sep 26, 2025
104de0f
feat: add ms compensation
jackypark9852 Sep 26, 2025
e759638
feat: add multiple scattering compensation image
jackypark9852 Sep 26, 2025
b541470
broken: dielectric
jackypark9852 Sep 27, 2025
ce9eeb4
feat: glass
jackypark9852 Sep 27, 2025
fe34edf
add pbr result image
jackypark9852 Sep 27, 2025
32c5bfb
feat: add stochastic anti aliasing
jackypark9852 Sep 27, 2025
4be12df
fix: camera jitter and view vector initialization
jackypark9852 Sep 28, 2025
933eb98
feat: load gltf geom data to host
jackypark9852 Sep 29, 2025
cd64081
feat: scaffold for gltf host to device upload
jackypark9852 Sep 30, 2025
c23fdac
untested: upload gltf data
jackypark9852 Sep 30, 2025
6d153ae
refactor: UploadGltfData returns DeviceGltfScene
jackypark9852 Sep 30, 2025
39e84c9
untested: naive triangle intersection
jackypark9852 Sep 30, 2025
0dab41b
feat: scaffolding for material loading
jackypark9852 Oct 1, 2025
541bcee
feat: gltf material loading helpers
jackypark9852 Oct 1, 2025
175d588
feat: basic material import
jackypark9852 Oct 1, 2025
28d8e7f
feat: texture loading
jackypark9852 Oct 1, 2025
376e44a
feat: pass texture handles to device
jackypark9852 Oct 1, 2025
c500245
feat: host-side uv loading
jackypark9852 Oct 1, 2025
85bfe86
feat: basecolor texture sampling
jackypark9852 Oct 2, 2025
8bc1ffa
fix: wrong default texture index
jackypark9852 Oct 2, 2025
26eabc3
refactor: move gltf structs to its own folder
jackypark9852 Oct 2, 2025
b2de8f2
feat: generate sequential indices if not indexed
jackypark9852 Oct 2, 2025
0620f9e
feat: generate centroids
jackypark9852 Oct 2, 2025
232afa5
untested: naive bvh
jackypark9852 Oct 2, 2025
20cbcc6
untested: bvh data uploading
jackypark9852 Oct 2, 2025
991cad7
refactor: move naive traversal into its own function
jackypark9852 Oct 2, 2025
0c4c548
feat: bvh naive
jackypark9852 Oct 3, 2025
b6cc27e
feat: add cornell cesium scene
jackypark9852 Oct 3, 2025
aa96131
feat: normal shading
jackypark9852 Oct 3, 2025
5684c2e
update cmake
jackypark9852 Oct 3, 2025
faf5d3d
untested: optix denoiser helpers
jackypark9852 Oct 3, 2025
3dcfe47
feat: basic denoiser
jackypark9852 Oct 3, 2025
5b291a3
feat: aces tone mapping and gamma correction
jackypark9852 Oct 3, 2025
4dad4da
feat: aov passes
jackypark9852 Oct 4, 2025
55223f0
feat: remove albedo avg
jackypark9852 Oct 4, 2025
6700555
feat: sampled material vals
jackypark9852 Oct 4, 2025
485155e
feat: use albedo map in denoising
jackypark9852 Oct 4, 2025
e60f31c
feat: fix wrong channel read for metallic
jackypark9852 Oct 4, 2025
43b725e
feat: texture mapping for normals
jackypark9852 Oct 4, 2025
ec345f8
feat: aces tonemapping and gamma correction before pbo
jackypark9852 Oct 4, 2025
b42937c
feat: microfacet glass
jackypark9852 Oct 4, 2025
fd54b22
fix: random crash due to bad allocation size
jackypark9852 Oct 5, 2025
451e019
feat: add snowglobe
jackypark9852 Oct 5, 2025
897bd11
feat: transmission test scene
jackypark9852 Oct 5, 2025
591775c
refactor: split metallic and dielectric paths
jackypark9852 Oct 5, 2025
20ba9c1
feat: medievala scene
jackypark9852 Oct 5, 2025
a2b0e06
untested: EvaluateSAH
jackypark9852 Oct 5, 2025
47f15f5
feat: binned SAH
jackypark9852 Oct 5, 2025
f5146e1
feat: early out on worse split
jackypark9852 Oct 5, 2025
2e853d1
feat: return length in ray intersection
jackypark9852 Oct 5, 2025
57e8e66
feat: ordered bvh traversal
jackypark9852 Oct 5, 2025
306b72a
feat: minor performance improvement
jackypark9852 Oct 5, 2025
0a93d4b
feat: free y axis
jackypark9852 Oct 5, 2025
7afc1cf
refactor: split derived values from camera
jackypark9852 Oct 6, 2025
9e85e33
feat: dof!
jackypark9852 Oct 6, 2025
9089aec
fix: dof not using focal point
jackypark9852 Oct 6, 2025
beca256
fix: typos
jackypark9852 Oct 6, 2025
e31fea9
feat: remove cuda check errs
jackypark9852 Oct 7, 2025
0990ded
Update magnemite.json
jackypark9852 Oct 7, 2025
6b82dad
fix: geoms not showing up
jackypark9852 Oct 8, 2025
8a5c806
feat: add timers
jackypark9852 Oct 8, 2025
52ecfcd
feat: rocket
jackypark9852 Oct 8, 2025
3fd0cd3
feat: update readme
jackypark9852 Oct 9, 2025
338c6ec
feat: some updates
jackypark9852 Oct 9, 2025
70ddec3
Merge branch 'main' of https://github.com/jackypark9852/CUDA-Path-Tracer
jackypark9852 Oct 9, 2025
448745d
feat: update readme
jackypark9852 Oct 9, 2025
d2d69e9
Update README.md
jackypark9852 Oct 9, 2025
04f7cc7
feat: add aovs
jackypark9852 Oct 9, 2025
5386410
Update README.md
jackypark9852 Oct 9, 2025
8878e83
Update README.md
jackypark9852 Oct 9, 2025
16571e8
Update README.md
jackypark9852 Oct 9, 2025
33e9eb6
Update README.md
jackypark9852 Oct 9, 2025
a70d138
update readme
jackypark9852 Oct 9, 2025
0ba9144
Update README.md
jackypark9852 Oct 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
56 changes: 44 additions & 12 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,26 +9,28 @@ 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)

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

# 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()

find_package(OpenGL REQUIRED)
find_package(CUDAToolkit REQUIRED)


set(OptiX_ROOT "${CMAKE_SOURCE_DIR}/external/OptiX SDK 9.0.0" CACHE PATH "Path to OptiX SDK")
set(OptiX_INCLUDE_DIR "${OptiX_ROOT}/include")

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)
else()
set(EXTERNAL "${CMAKE_SOURCE_DIR}/external")

set(GLFW_ROOT_DIR ${EXTERNAL})
Expand All @@ -42,33 +44,49 @@ else(UNIX)
add_definitions(${GLEW_DEFINITIONS})
include_directories(${GLEW_INCLUDE_DIR} ${GLFW_INCLUDE_DIR})
set(GL_LIBRARIES ${GLEW_LIBRARY} ${GLFW_LIBRARY} ${OPENGL_LIBRARY})
endif(UNIX)
endif()

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

set(headers
src/bvh.h
src/cuda_timing.h
src/denoise_optix.h
src/image.h
src/interactions.h
src/intersections.h
src/glslUtility.hpp
src/gltf_loader.h
src/pathtrace.h
src/scene.h
src/sceneStructs.h
src/utilities.h
src/settings.h
src/texture.h
src/shading/shading_common.cuh
src/shading/shading_bsdf.cuh
src/shading/shading_kernels.cuh
)

set(sources
src/bvh.cpp
src/cuda_timing.cpp
src/denoise_optix.cpp
src/main.cpp
src/stb.cpp
src/image.cpp
src/glslUtility.cpp
src/gltf_loader.cpp
src/pathtrace.cu
src/intersections.cu
src/interactions.cu
src/scene.cpp
src/utilities.cpp
src/settings.cpp
src/texture.cpp
src/shading/shading_kernels.cu
)

set(imgui_headers
Expand Down Expand Up @@ -102,20 +120,34 @@ 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
source_group("Shading\\Headers" FILES
src/shading/shading_common.cuh
src/shading/shading_bsdf.cuh
src/shading/shading_kernels.cuh
)
source_group("Shading\\Sources" FILES
src/shading/shading_kernels.cu
)

add_executable(${CMAKE_PROJECT_NAME} ${sources} ${headers} ${imgui_sources} ${imgui_headers})

# Add CUDA toolkit + OptiX includes to target
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE
${CUDAToolkit_INCLUDE_DIRS}
"${OptiX_INCLUDE_DIR}"
)

target_link_libraries(${CMAKE_PROJECT_NAME}
${GL_LIBRARIES}
#stream_compaction # TODO: uncomment if using your stream compaction
CUDA::cudart
)

set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES
CUDA_SEPARABLE_COMPILATION ON
CUDA_ARCHITECTURES native
)
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
set_target_properties(${CMAKE_PROJECT_NAME} PROPERTIES CUDA_ARCHITECTURES native)

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

set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${CMAKE_PROJECT_NAME})

256 changes: 248 additions & 8 deletions README.md

Large diffs are not rendered by default.

Binary file not shown.
Loading