1
1
#
2
2
# Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved.
3
- #
3
+ #
4
4
# NVIDIA CORPORATION and its licensors retain all intellectual property
5
5
# and proprietary rights in and to this software, related documentation
6
6
# and any modifications thereto. Any use, reproduction, disclosure or
7
7
# distribution of this software and related documentation without an express
8
8
# license agreement from NVIDIA CORPORATION is strictly prohibited.
9
9
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
11
15
12
16
project (RTXPathTracing)
13
17
14
18
set (CMAKE_CXX_STANDARD 20)
15
19
set (CMAKE_CXX_STANDARD_REQUIRED ON )
16
20
set (CMAKE_CXX_EXTENSIONS ON )
17
21
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
+
18
46
set (CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "" FORCE)
19
47
20
48
set (RTXPT_LOCAL_CONFIG_ID "NONAME" CACHE STRING "Local user initials for user-specific settings" )
21
49
add_definitions ( -DRTXPT_LOCAL_CONFIG_ID_STRING=std::string \(\"${RTXPT_LOCAL_CONFIG_ID} \"\) )
22
50
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
+ #----------------------------------------------------------------------------------------------------------------------
26
74
27
- option (STREAMLINE_INTEGRATION "Enable Streamline integration (Required for DLSS3.0 and etc.)" ON )
28
75
29
76
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" )
32
79
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" )
34
81
set (DXC_PATH "${DXC_CUSTOM_PATH} /dxc.exe" CACHE STRING "Path to embedded dxc file for DX12" )
35
82
set (DXC_DXIL_EXECUTABLE "${DXC_CUSTOM_PATH} /dxc.exe" CACHE STRING "Path to embedded dxc file for DX12" )
36
83
#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
37
84
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 )
41
86
42
87
# option(USE_RAY_TRACING_DENOISER "Include NRD as part of the sample." ON)
43
- option (DONUT_WITH_ASSIMP "" OFF )
44
88
45
89
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR} /bin" )
46
90
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} " )
47
91
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} " )
48
92
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} " )
49
93
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} " )
50
94
set (DONUT_SHADERS_OUTPUT_DIR "${CMAKE_RUNTIME_OUTPUT_DIRECTORY} /shaders/framework" )
95
+ option (DONUT_WITH_LZ4 "Include LZ4" OFF )
51
96
52
- add_subdirectory (donut )
97
+ add_subdirectory ("External" )
53
98
54
99
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 )
57
102
endif ()
58
103
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
+ #----------------------------------------------------------------------------------------------------------------------
0 commit comments