Skip to content

Commit 62a5efa

Browse files
authored
Fstrugar/1.5.0 staging (#32)
Update to 1.5.0; major refactor and upgrades
1 parent 0902bd8 commit 62a5efa

File tree

1,850 files changed

+29655
-473611
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,850 files changed

+29655
-473611
lines changed

.gitignore

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
bin/
22
build*/
33
.vs
4-
nrd.cfg
5-
omm.cfg
4+
Nrd.cfg
5+
Omm.cfg
66
tests/output/*
7+
.vscode/
78

89
# local project files for shader development outside of VS
910
*.sublime-*

.gitlab-ci.yml

-31
This file was deleted.

.gitmodules

+25-25
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,30 @@
1-
[submodule "external/RayTracingDenoiser"]
2-
path = external/RayTracingDenoiser
1+
[submodule "External/RayTracingDenoiser"]
2+
path = External/Nrd
33
url = https://github.com/NVIDIA-RTX/NRD
4-
[submodule "external/Opacity-MicroMap-SDK"]
5-
path = external/Opacity-MicroMap-SDK
6-
url = https://github.com/NVIDIA-RTX/OMM
4+
[submodule "External/Opacity-MicroMap-SDK"]
5+
path = External/Omm
6+
url = https://github.com/NVIDIA-RTX/OMM.git
77
branch = main-minimal
8-
[submodule "donut/nvrhi"]
9-
path = donut/nvrhi
10-
url = https://github.com/NVIDIA-RTX/NVRHI
11-
[submodule "external/RTXDI"]
12-
path = external/RTXDI
13-
url = https://github.com/NVIDIAGameWorks/RTXDI
14-
branch = sdk-only
15-
[submodule "media"]
16-
path = media
17-
url = https://github.com/NVIDIAGameWorks/Path-Tracing-SDK-Media
18-
[submodule "external/Streamline"]
19-
path = external/Streamline
20-
url = https://github.com/NVIDIAGameWorks/Streamline.git
21-
[submodule "external/NVAPI"]
22-
path = external/NVAPI
8+
[submodule "External/NVAPI"]
9+
path = External/NVAPI
2310
url = https://github.com/NVIDIA/nvapi.git
2411
branch = 530
25-
[submodule "external/cxxopts"]
26-
path = external/cxxopts
12+
[submodule "External/cxxopts"]
13+
path = External/cxxopts
2714
url = https://github.com/jarro2783/cxxopts.git
28-
[submodule "donut/ShaderMake"]
29-
path = donut/ShaderMake
30-
url = https://github.com/NVIDIA-RTX/ShaderMake
15+
[submodule "External/rtxdi-runtime"]
16+
path = External/Rtxdi
17+
url = https://github.com/NVIDIA-RTX/RTXDI-Library.git
18+
[submodule "External/donut"]
19+
path = External/Donut
20+
url = https://github.com/NVIDIA-RTX/Donut
21+
branch = main
22+
[submodule "Assets"]
23+
path = Assets
24+
url = https://github.com/NVIDIA-RTX/RTXPT-Assets.git
25+
[submodule "External/Streamline"]
26+
path = External/Streamline
27+
url = https://github.com/NVIDIAGameWorks/Streamline.git
28+
[submodule "External/Rtxtf"]
29+
path = External/Rtxtf
30+
url = https://github.com/NVIDIA-RTX/RTXTF-Library

Assets

Submodule Assets added at aafbf25

CMakeLists.txt

+72-17
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,114 @@
11
#
22
# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
3-
#
3+
#
44
# NVIDIA CORPORATION and its licensors retain all intellectual property
55
# and proprietary rights in and to this software, related documentation
66
# and any modifications thereto. Any use, reproduction, disclosure or
77
# distribution of this software and related documentation without an express
88
# license agreement from NVIDIA CORPORATION is strictly prohibited.
99

10-
cmake_minimum_required(VERSION 3.10)
10+
cmake_minimum_required(VERSION 3.18)
11+
set(CMAKE_WARN_DEPRECATED OFF CACHE BOOL "" FORCE)
12+
set(CMAKE_POLICY_DEFAULT_CMP0077 NEW)
13+
set(CMAKE_POLICY_DEFAULT_CMP0091 NEW)
14+
set(CMAKE_POLICY_DEFAULT_CMP0175 OLD) # streamline error
1115

1216
project(RTXPathTracing)
1317

1418
set(CMAKE_CXX_STANDARD 20)
1519
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1620
set(CMAKE_CXX_EXTENSIONS ON)
1721

22+
set(CMAKE_COMPILE_WARNING_AS_ERROR ON)
23+
24+
if (MSVC)
25+
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
26+
27+
# Workaround for a Microsoft "fix" to std::mutex that happened in VS2022 v17.10.
28+
# Using std::mutex with a DLL version of MSVCRT that is older than that VS version will lead to a crash.
29+
# See https://developercommunity.visualstudio.com/t/Access-violation-with-std::mutex::lock-a/10664660
30+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR")
31+
32+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
33+
34+
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /D_ITERATOR_DEBUG_LEVEL=1")
35+
endif()
36+
37+
# we can't run with DX11
38+
option(DONUT_WITH_DX11 OFF)
39+
40+
# default VULKAN to OFF
41+
option(DONUT_WITH_VULKAN OFF "Enable the Vulkan version of Donut")
42+
43+
# we want shader PDBs always embedded
44+
option(DONUT_EMBED_SHADER_PDBS "" ON)
45+
1846
set (CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
1947

2048
set(RTXPT_LOCAL_CONFIG_ID "NONAME" CACHE STRING "Local user initials for user-specific settings")
2149
add_definitions( -DRTXPT_LOCAL_CONFIG_ID_STRING=std::string\(\"${RTXPT_LOCAL_CONFIG_ID}\"\) )
2250

23-
#if (NOT EXISTS "${CMAKE_SOURCE_DIR}/external/NVAPI" OR NOT EXISTS "${CMAKE_SOURCE_DIR}/media")
24-
# message(FATAL_ERROR "${CMAKE_SOURCE_DIR}/external/NVAPI and/or ${CMAKE_SOURCE_DIR}/media folders not present: \n!!!! please run update_dependencies.bat first !!!! ")
25-
#endif()
51+
#----------------------------------------------------------------------------------------------------------------------
52+
# Streamline config
53+
#set(FETCHCONTENT_QUIET OFF) <- use for a lot more detailed info from FetchContent
54+
option(DONUT_WITH_STREAMLINE "Enable streamline, separate package required" ON)
55+
set(STREAMLINE_DOWNLOAD_PATH "${CMAKE_SOURCE_DIR}/External/Streamline")
56+
57+
# Use this to optionally download Streamline (and not as a submodule)
58+
#set(DONUT_STREAMLINE_FETCH_URL "https://github.com/NVIDIAGameWorks/Streamline.git" CACHE STRING "")
59+
#set(DONUT_STREAMLINE_FETCH_TAG "v2.7.2" CACHE STRING "")
60+
#set(DONUT_STREAMLINE_FETCH_DIR ${STREAMLINE_DOWNLOAD_PATH} CACHE STRING "Directory to fetch streamline to, empty uses build directory default")
61+
set(DONUT_STREAMLINE_SEARCH_PATHS ${STREAMLINE_DOWNLOAD_PATH} CACHE STRING "Search paths for streamline package")
62+
63+
option(STREAMLINE_FEATURE_DLSS_SR "Include DLSS-SR dll" ON )
64+
option(STREAMLINE_FEATURE_DLSS_RR "Include DLSS-RR dll" ON )
65+
option(STREAMLINE_FEATURE_NRD "Include NRD dll" OFF )
66+
option(STREAMLINE_FEATURE_IMGUI "Include Imgui dll" ON )
67+
option(STREAMLINE_FEATURE_NVPERF "Include NSight Perf SDK dll" OFF )
68+
option(STREAMLINE_FEATURE_REFLEX "Include Reflex dll" ON )
69+
option(STREAMLINE_FEATURE_NIS "Include NIS dll" OFF )
70+
option(STREAMLINE_FEATURE_DLSS_FG "Include DLSS-FG dll" ON )
71+
option(STREAMLINE_FEATURE_DEEPDVC "Include DEEPDVC dll" OFF )
72+
option(STREAMLINE_FEATURE_DIRECTSR "Include DirectSR dll" OFF )
73+
#----------------------------------------------------------------------------------------------------------------------
2674

27-
option(STREAMLINE_INTEGRATION "Enable Streamline integration (Required for DLSS3.0 and etc.)" ON)
2875

2976
option(NVRHI_WITH_NVAPI "Include NVAPI support (requires NVAPI SDK)" ON)
30-
set(NVAPI_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/external/nvapi/" CACHE STRING "Path to NVAPI include headers/shaders" )
31-
set(NVAPI_LIBRARY "${CMAKE_SOURCE_DIR}/external/nvapi/amd64/nvapi64.lib" CACHE STRING "Path to NVAPI .lib file")
77+
set(NVAPI_INCLUDE_DIR "${CMAKE_SOURCE_DIR}/External/nvapi/" CACHE STRING "Path to NVAPI include headers/shaders" )
78+
set(NVAPI_LIBRARY "${CMAKE_SOURCE_DIR}/External/nvapi/amd64/nvapi64.lib" CACHE STRING "Path to NVAPI .lib file")
3279

33-
set(DXC_CUSTOM_PATH "${CMAKE_SOURCE_DIR}/external/dxc/bin/x64/" CACHE STRING "Path to embedded dxc")
80+
set(DXC_CUSTOM_PATH "${CMAKE_SOURCE_DIR}/External/dxc/bin/x64/" CACHE STRING "Path to embedded dxc")
3481
set(DXC_PATH "${DXC_CUSTOM_PATH}/dxc.exe" CACHE STRING "Path to embedded dxc file for DX12")
3582
set(DXC_DXIL_EXECUTABLE "${DXC_CUSTOM_PATH}/dxc.exe" CACHE STRING "Path to embedded dxc file for DX12")
3683
#set(DXC_SPIRV_EXECUTABLE "${DXC_CUSTOM_PATH}/dxc.exe" CACHE STRING "Path to embedded dxc file for SPIRV") # default to using dxc from the Vulkan SDK; remove this to use embedded .dxc
3784

38-
if (MSVC)
39-
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /D_ITERATOR_DEBUG_LEVEL=1")
40-
endif()
85+
option (SHADERMAKE_FIND_DXC_SPIRV "Toggles whether to search for DXC for SPIR-V" ON)
4186

4287
# option(USE_RAY_TRACING_DENOISER "Include NRD as part of the sample." ON)
43-
option(DONUT_WITH_ASSIMP "" OFF)
4488

4589
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/bin")
4690
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
4791
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
4892
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
4993
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
5094
set(DONUT_SHADERS_OUTPUT_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/shaders/framework")
95+
option(DONUT_WITH_LZ4 "Include LZ4" OFF)
5196

52-
add_subdirectory(donut)
97+
add_subdirectory("External")
5398

5499
if (NVRHI_WITH_VULKAN OR NVRHI_WITH_DX12)
55-
add_subdirectory(RTXPT)
56-
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT RTXPT)
100+
add_subdirectory(Rtxpt)
101+
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT rtxpt)
57102
endif()
58103

59-
add_subdirectory("external")
104+
105+
#----------------------------------------------------------------------------------------------------------------------
106+
# Alternative way of obtaining assets (we're currently relying on git submodule but this is an option as well)
107+
#include(FetchContent)
108+
#set(RTXPT_ASSETS_FETCH_URL "https://gitlab-master.nvidia.com/rtx/path-tracing-sdk-assets")
109+
#set(RTXPT_ASSETS_FETCH_TAG "main")
110+
#set(RTXPT_ASSETS_FETCH_DIR "${CMAKE_SOURCE_DIR}/Assets")
111+
#message(STATUS "Updating assets from " ${RTXPT_ASSETS_FETCH_URL} ", tag " ${RTXPT_ASSETS_FETCH_TAG} ", into folder " ${RTXPT_ASSETS_FETCH_DIR} )
112+
#FetchContent_Declare(assets_download GIT_REPOSITORY ${RTXPT_ASSETS_FETCH_URL} GIT_TAG ${RTXPT_ASSETS_FETCH_TAG} SOURCE_DIR ${RTXPT_ASSETS_FETCH_DIR} GIT_PROGRESS TRUE)
113+
#FetchContent_MakeAvailable(assets_download)
114+
#----------------------------------------------------------------------------------------------------------------------
File renamed without changes.
File renamed without changes.

External/CMakeLists.txt

+136
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
#
2+
# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
3+
#
4+
# NVIDIA CORPORATION and its licensors retain all intellectual property
5+
# and proprietary rights in and to this software, related documentation
6+
# and any modifications thereto. Any use, reproduction, disclosure or
7+
# distribution of this software and related documentation without an express
8+
# license agreement from NVIDIA CORPORATION is strictly prohibited.
9+
10+
##########################################################################
11+
################################ Donut ####################################
12+
##########################################################################
13+
14+
include(Donut/compileshaders.cmake)
15+
add_subdirectory(Donut)
16+
17+
##########################################################################
18+
################################ UTIL ####################################
19+
##########################################################################
20+
function(util_get_shader_profile_from_name FILE_NAME DXC_PROFILE)
21+
get_filename_component(EXTENSION ${FILE_NAME} EXT)
22+
if ("${EXTENSION}" STREQUAL ".cs.hlsl")
23+
set(DXC_PROFILE "cs" PARENT_SCOPE)
24+
endif()
25+
if ("${EXTENSION}" STREQUAL ".vs.hlsl")
26+
set(DXC_PROFILE "vs" PARENT_SCOPE)
27+
endif()
28+
if ("${EXTENSION}" STREQUAL ".gs.hlsl")
29+
set(DXC_PROFILE "gs" PARENT_SCOPE)
30+
endif()
31+
if ("${EXTENSION}" STREQUAL ".ps.hlsl")
32+
set(DXC_PROFILE "ps" PARENT_SCOPE)
33+
endif()
34+
endfunction()
35+
36+
function(util_generate_shader_config_file OUT_FILE_NAME DIR DEFINES)
37+
file(GLOB_RECURSE HLSL_FILES "${CMAKE_CURRENT_SOURCE_DIR}/${DIR}/*.hlsl")
38+
39+
set(out_content "")
40+
foreach(FILE_NAME ${HLSL_FILES})
41+
get_filename_component(NAME_ONLY ${FILE_NAME} NAME)
42+
set(DXC_PROFILE "")
43+
util_get_shader_profile_from_name(${FILE_NAME} DXC_PROFILE)
44+
set(out_content "${out_content}${DIR}/${NAME_ONLY} -T ${DXC_PROFILE} -E main ${DEFINES}\n")
45+
endforeach()
46+
47+
file(WRITE ${OUT_FILE_NAME} ${out_content})
48+
endfunction()
49+
50+
##########################################################################
51+
########################### Nrd ###########################
52+
##########################################################################
53+
54+
# see https://github.com/NVIDIA-RTX/NRD?tab=readme-ov-file#how-to-build
55+
# set(NRD_DXC_CUSTOM_PATH ${DXC_CUSTOM_PATH})
56+
set(NRD_DXC_PATH "${DXC_DXIL_EXECUTABLE}" CACHE STRING "DXC shader compiler path for NRD")
57+
set(NRD_SHADER_OUTPUT_PATH "${SHADER_OUTPUT_PATH}" CACHE STRING "")
58+
set(NRD_PROJECT_FOLDER "External/Nrd")
59+
set(NRD_NORMAL_ENCODING "2" CACHE STRING "Normal encoding variant (0-4, matches nrd::NormalEncoding)")
60+
set(NRD_ROUGHNESS_ENCODING "1" CACHE STRING "Roughness encoding variant (0-2, matches nrd::RoughnessEncoding)")
61+
set(NRD_IS_SUBMODULE ON)
62+
# NRD uses a custom output path for some reason
63+
set(GLOBAL_BIN_OUTPUT_PATH ${CMAKE_BINARY_DIR} CACHE STRING "")
64+
set(NRD_SHADERS_PATH "${CMAKE_BINARY_DIR}/NRDShaders" CACHE STRING "")
65+
option(NRD_EMBEDS_SPIRV_SHADERS "NRD embeds SPIRV shaders" OFF)
66+
option(NRD_EMBEDS_DXIL_SHADERS "NRD embeds DXIL shaders" OFF)
67+
option(NRD_EMBEDS_DXBC_SHADERS "NRD embeds DXBC shaders" OFF)
68+
option(NRD_DISABLE_SHADER_COMPILATION "" ON)
69+
option(NRD_USE_PRECOMPILED_SHADERS "" OFF)
70+
71+
add_subdirectory("Nrd")
72+
73+
# Let CMake generate the nrd_shaders.cfg file
74+
util_generate_shader_config_file(
75+
"Nrd.cfg"
76+
"Nrd/Shaders/Source"
77+
"-D NRD_COMPILER_DXC=1 -D NRD_NORMAL_ENCODING=${NRD_NORMAL_ENCODING} -D NRD_ROUGHNESS_ENCODING=${NRD_ROUGHNESS_ENCODING}"
78+
)
79+
80+
# Compile all shaders in nrd_shaders.cfg
81+
donut_compile_shaders(
82+
TARGET nrd_shaders
83+
CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/Nrd.cfg
84+
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Nrd/Shaders/Include
85+
FOLDER "NRD"
86+
DXIL ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/shaders/nrd/dxil
87+
SPIRV_DXC ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/shaders/nrd/spirv
88+
CFLAGS "-WX -O3 -enable-16bit-types -all_resources_bound"
89+
INCLUDES ${CMAKE_BINARY_DIR}/_deps/mathlib-src ${CMAKE_CURRENT_SOURCE_DIR}/Nrd/Shaders/Include ${CMAKE_CURRENT_SOURCE_DIR}/Nrd/Shaders/Resources
90+
)
91+
92+
##########################################################################
93+
########################### Opacity Micro-Map SDK ########################
94+
##########################################################################
95+
96+
option(OMM_INTEGRATION_LAYER_NVRHI "" ON)
97+
option(OMM_ENABLE_PRECOMPILED_SHADERS_DXIL "" OFF)
98+
option(OMM_ENABLE_PRECOMPILED_SHADERS_SPIRV "" OFF)
99+
option(OMM_ENABLE_BENCHMARK "" OFF)
100+
option(OMM_ENABLE_TESTS "" OFF)
101+
102+
set(OMM_PROJECT_FOLDER "Omm")
103+
add_subdirectory("Omm")
104+
105+
# Let CMake generate the omm_shaders.cfg file
106+
util_generate_shader_config_file(
107+
"Omm.cfg"
108+
"Omm/libraries/omm-lib/shaders"
109+
"-D COMPILER_DXC=1"
110+
)
111+
112+
# Compile all shaders in omm.cfg
113+
donut_compile_shaders(
114+
TARGET omm_shaders
115+
CONFIG ${CMAKE_CURRENT_SOURCE_DIR}/Omm.cfg
116+
SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/Omm/libraries/omm-lib/include
117+
FOLDER "Opacity Micro-Map SDK"
118+
DXIL ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/shaders/omm/dxil
119+
SPIRV_DXC ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/shaders/omm/spirv
120+
)
121+
122+
##########################################################################
123+
################################ RTXDI SDK ###############################
124+
##########################################################################
125+
126+
set(RTXDI_SKIP_SHADER_VALIDATION ON CACHE STRING "Skip RTXDI shader validation")
127+
128+
add_subdirectory("Rtxdi")
129+
130+
##########################################################################
131+
################################ cxxopts ###############################
132+
##########################################################################
133+
134+
if (NOT TARGET cxxopts)
135+
add_subdirectory("cxxopts")
136+
endif()

External/Donut

Submodule Donut added at da1cf20

External/NVAPI

Submodule NVAPI added at 4ba3384

External/Nrd

Submodule Nrd added at 5dc2daa

External/Omm

Submodule Omm added at 52cd6bc

External/Rtxdi

Submodule Rtxdi added at 26a6c71

External/Rtxtf

Submodule Rtxtf added at 2fe3b7c

External/Streamline

Submodule Streamline added at fbe73ba

External/cxxopts

Submodule cxxopts added at 573ec27
File renamed without changes.
File renamed without changes.
File renamed without changes.

External/dxc/bin/arm64/dxc.exe

1.19 MB
Binary file not shown.

External/dxc/bin/arm64/dxcompiler.dll

21.1 MB
Binary file not shown.

External/dxc/bin/arm64/dxil.dll

1.62 MB
Binary file not shown.

External/dxc/bin/x64/dxc.exe

1.15 MB
Binary file not shown.

External/dxc/bin/x64/dxcompiler.dll

17.1 MB
Binary file not shown.

External/dxc/bin/x64/dxil.dll

1.39 MB
Binary file not shown.
File renamed without changes.

0 commit comments

Comments
 (0)