Skip to content

Commit

Permalink
v4.1.0:
Browse files Browse the repository at this point in the history
HIGHLIGHTS:
- SH denoisers: SH (spherical harmonics) resolve replaced with a higher quality & specular-compatible SG (spherical gaussian) resolve
- SH denoisers: introduced re-jittering after denoising which is essential for upscaling techniques
- NRD: significantly reduced shader compilation & code linkage times
- NRD: usability improvements
- RELAX: added SH denoisers
- REBLUR: bug fixes

DETAILS:
- SH denoisers: SH (spherical harmonics) resolve replaced with a higher quality & specular-compatible SG (spherical gaussian) resolve
- SH denoisers: introduced re-jittering after denoising which is essential for upscaling techniques
- NRD: introduced "ShaderMake"
- NRD: usability improvement: removed "NRD_HEADER_ONLY" (added "NRD_INTERNAL" macro on the NRD side)
- NRD: usability improvement: for internal compilation matrix packing is set to "column_major", to override possible "-Zpr" setting in the compiler command line
- RELAX: added SH denoisers
- RELAX: fixed regression for specular surface history weight
- REBLUR: improved reprojection on surfaces with variadic roughness
- REBLUR: fixed a resolution scale related bug in TS
- REBLUR: slightly increased "lobeAngleFraction"
- REBLUR: fixed smb-based accumulation for very high roughness
- fixed VK validation errors after migrating to VK v1.3.239
- fixes for Linux
- Cmake improvements
- updated scripts
- updated dependencies
- updated README & UPDATE
- refactoring
  • Loading branch information
dzhdanNV committed Mar 21, 2023
1 parent 2d842e2 commit df3573e
Show file tree
Hide file tree
Showing 296 changed files with 7,010 additions and 3,444 deletions.
5 changes: 5 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,8 @@
url = https://github.com/NVIDIAGameWorks/MathLib.git
branch = main
update = merge
[submodule "External/ShaderMake"]
path = External/ShaderMake
url = https://github.com/NVIDIAGameWorks/ShaderMake.git
branch = main
update = merge
2 changes: 1 addition & 1 deletion 1-Deploy.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,5 @@ git submodule update --init --recursive
mkdir -p "_Compiler"

cd "_Compiler"
cmake .. -A x64
cmake ..
cd ..
4 changes: 2 additions & 2 deletions 2-Build.bat
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
@echo off

cd "_Compiler"
cmake --build . --config Release
cmake --build . --config Debug
cmake --build . --config Release -j 4
cmake --build . --config Debug -j 4
cd ..
4 changes: 2 additions & 2 deletions 2-Build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@ mkdir -p "_Compiler"

cd "_Compiler"
cmake ..
cmake --build . --config Release
cmake --build . --config Debug
cmake --build . --config Release -j 4
cmake --build . --config Debug -j 4
cd ..
1 change: 1 addition & 0 deletions 4-Clean.bat
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ if exist "build" rd /q /s "build"

if exist "_Build" rd /q /s "_Build"
if exist "_Compiler" rd /q /s "_Compiler"
if exist "_Shaders" rd /q /s "_Shaders"
if exist "_NRD_SDK" rd /q /s "_NRD_SDK"
1 change: 1 addition & 0 deletions 4-Clean.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ rm -rf "build"

rm -rf "_Build"
rm -rf "_Compiler"
rm -rf "_Shaders"
rm -rf "_NRD_SDK"
328 changes: 190 additions & 138 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,160 +1,212 @@
cmake_minimum_required(VERSION 3.15)
cmake_minimum_required (VERSION 3.15)

# Options
option(NRD_DISABLE_SHADER_COMPILATION "Disable shader compilation" OFF)
option(NRD_USE_PRECOMPILED_SHADERS "Use precompiled (embedded) shaders" ON)
option(NRD_STATIC_LIBRARY "Build static library" OFF)
option (NRD_DISABLE_SHADER_COMPILATION "Disable shader compilation" OFF)
option (NRD_USE_PRECOMPILED_SHADERS "Use precompiled (embedded) shaders" ON)
option (NRD_STATIC_LIBRARY "Build static library" OFF)

# Cached
set(NRD_DXC_CUSTOM_PATH "custom/path/to/dxc" CACHE STRING "Custom DXC to use if Vulkan SDK is not installed")
set(NRD_SHADERS_PATH "" CACHE STRING "Shader output path override")
set(NRD_NORMAL_ENCODING "2" CACHE STRING "Normal encoding variant (0-4, matches nrd::NormalEncoding)")
set(NRD_ROUGHNESS_ENCODING "1" CACHE STRING "Roughness encoding variant (0-2, matches nrd::RoughnessEncoding)")
set(GLOBAL_BIN_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/_Build" CACHE STRING "")
set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "")

# Create project
file(READ "Include/NRD.h" ver_h)
string(REGEX MATCH "VERSION_MAJOR ([0-9]*)" _ ${ver_h})
set(VERSION_MAJOR ${CMAKE_MATCH_1})
string(REGEX MATCH "VERSION_MINOR ([0-9]*)" _ ${ver_h})
set(VERSION_MINOR ${CMAKE_MATCH_1})
string(REGEX MATCH "VERSION_BUILD ([0-9]*)" _ ${ver_h})
set(VERSION_BUILD ${CMAKE_MATCH_1})

message("NRD v${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}")
project(NRD LANGUAGES CXX)

# Generate "NRDEncoding.hlsli"
file(WRITE Shaders/Include/NRDEncoding.hlsli
"// This file is auto-generated during project deployment. Do not modify!\n"
"#define NRD_NORMAL_ENCODING ${NRD_NORMAL_ENCODING}\n"
"#define NRD_ROUGHNESS_ENCODING ${NRD_ROUGHNESS_ENCODING}\n")

message("NRD encoding: NRD_NORMAL_ENCODING = ${NRD_NORMAL_ENCODING}; NRD_ROUGHNESS_ENCODING = ${NRD_ROUGHNESS_ENCODING}")

# Globals?
set_property(GLOBAL PROPERTY USE_FOLDERS ON)

set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
set(CMAKE_POSITION_INDEPENDENT_BINARIES ON)
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)

if(MSVC)
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
# Is submodule?
if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
set(IS_SUBMODULE OFF)
else()
set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} -static-libstdc++ -static-libgcc")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++ -static-libgcc")
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc")
set(IS_SUBMODULE ON)
endif()

# Compile options
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(COMPILE_OPTIONS -Wextra -msse4.1)
elseif(CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set(COMPILE_OPTIONS -Wextra -msse4.1)
elseif(MSVC)
set(COMPILE_OPTIONS /W4 /WX)
else()
message(WARNING "Unknown compiler!")
# Cached
if (NOT IS_SUBMODULE)
set (CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STRING "")
endif()

# Compile definitions
set(COMPILE_DEFINITIONS NRD_NORMAL_ENCODING=${NRD_NORMAL_ENCODING} NRD_ROUGHNESS_ENCODING=${NRD_ROUGHNESS_ENCODING})
if(WIN32)
set(COMPILE_DEFINITIONS ${COMPILE_DEFINITIONS} WIN32_LEAN_AND_MEAN NOMINMAX _CRT_SECURE_NO_WARNINGS _UNICODE UNICODE _ENFORCE_MATCHING_ALLOCATORS=0)
else()
set(COMPILE_DEFINITIONS ${COMPILE_DEFINITIONS} NRD_ONLY_SPIRV_SHADERS_AVAILABLE=1)
endif()
set (NRD_DXC_CUSTOM_PATH "custom/path/to/dxc" CACHE STRING "Custom DXC to use if Vulkan SDK is not installed")
set (NRD_SHADERS_PATH "" CACHE STRING "Shader output path override")
set (NRD_NORMAL_ENCODING "2" CACHE STRING "Normal encoding variant (0-4, matches nrd::NormalEncoding)")
set (NRD_ROUGHNESS_ENCODING "1" CACHE STRING "Roughness encoding variant (0-2, matches nrd::RoughnessEncoding)")
set (GLOBAL_BIN_OUTPUT_PATH "${CMAKE_SOURCE_DIR}/_Build" CACHE STRING "")

# Shaders
if("${NRD_SHADERS_PATH}" STREQUAL "")
set(NRD_SHADERS_PATH "${PROJECT_BINARY_DIR}/Shaders")
endif()
message("NRD shaders output path: '${NRD_SHADERS_PATH}'")
# Create project
file (READ "Include/NRD.h" ver_h)
string (REGEX MATCH "VERSION_MAJOR ([0-9]*)" _ ${ver_h})
set (VERSION_MAJOR ${CMAKE_MATCH_1})
string (REGEX MATCH "VERSION_MINOR ([0-9]*)" _ ${ver_h})
set (VERSION_MINOR ${CMAKE_MATCH_1})
string (REGEX MATCH "VERSION_BUILD ([0-9]*)" _ ${ver_h})
set (VERSION_BUILD ${CMAKE_MATCH_1})
message ("NRD v${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_BUILD}")

project (NRD LANGUAGES C CXX)
message ("NRD encoding: NRD_NORMAL_ENCODING = ${NRD_NORMAL_ENCODING}; NRD_ROUGHNESS_ENCODING = ${NRD_ROUGHNESS_ENCODING}")

if(NOT NRD_DISABLE_SHADER_COMPILATION)
# Create output directory
file(MAKE_DIRECTORY ${NRD_SHADERS_PATH})
# Generate "NRDEncoding.hlsli"
file (WRITE Shaders/Include/NRDEncoding.hlsli
"// This file is auto-generated during project deployment. Do not modify!\n"
"#define NRD_NORMAL_ENCODING ${NRD_NORMAL_ENCODING}\n"
"#define NRD_ROUGHNESS_ENCODING ${NRD_ROUGHNESS_ENCODING}\n")

# External include needed for ShaderCompilation.cmake
set(MATHLIB_INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/External/MathLib")
# Globals?
set_property (GLOBAL PROPERTY USE_FOLDERS ON)

# Gather "hlsl/hlsli" files
file(GLOB MATHLIB_HLSLI "${MATHLIB_INCLUDE_PATH}/*.hlsli")
file(GLOB_RECURSE HLSLI "Shaders/*.hlsli" )
file(GLOB_RECURSE HLSL "Shaders/*.hlsl")
file(GLOB_RECURSE RESOURCES_HLSLI "Shaders/*.resources.hlsli")
set (CMAKE_CXX_STANDARD 17)
set (CMAKE_CXX_STANDARD_REQUIRED ON)
set (CMAKE_C_STANDARD 99)

# Define build rules
include(ShaderCompilation.cmake)
if (MSVC)
set (CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
endif ()

list_hlsl_headers("${HLSL}" HEADER_FILES)
list_hlsl_headers("${MATHLIB_HLSLI}" HEADER_FILES)
list_hlsl_headers("${HLSLI}" HEADER_FILES)
list_hlsl_shaders("${HLSL}" "${HEADER_FILES}" SHADER_FILES)
# Compile options
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set (COMPILE_OPTIONS -msse4.1 -Wextra)
elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
set (COMPILE_OPTIONS -msse4.1 -Wextra)
elseif (MSVC)
set (COMPILE_OPTIONS /W4 /WX /wd4324)
else ()
message (WARNING "Unknown compiler!")
endif ()

source_group("MathLib" FILES ${MATHLIB_HLSLI})
source_group("Source" FILES ${HLSL})
source_group("Resources" FILES ${RESOURCES_HLSLI})
# Compile definitions
set (COMPILE_DEFINITIONS NRD_NORMAL_ENCODING=${NRD_NORMAL_ENCODING} NRD_ROUGHNESS_ENCODING=${NRD_ROUGHNESS_ENCODING})

add_custom_target(${PROJECT_NAME}_Shaders ALL DEPENDS ${SHADER_FILES} SOURCES "${HEADER_FILES}")
set_property(TARGET ${PROJECT_NAME}_Shaders PROPERTY FOLDER "${PROJECT_NAME}")
endif()
if (WIN32)
set (COMPILE_DEFINITIONS ${COMPILE_DEFINITIONS} WIN32_LEAN_AND_MEAN NOMINMAX _CRT_SECURE_NO_WARNINGS _UNICODE UNICODE _ENFORCE_MATCHING_ALLOCATORS=0)
else ()
set (COMPILE_DEFINITIONS ${COMPILE_DEFINITIONS} NRD_ONLY_SPIRV_SHADERS_AVAILABLE=1)
endif ()

# External/MathLib
file(READ "External/MathLib/MathLib.h" ver_h)
string(REGEX MATCH "MATHLIB_VERSION_MAJOR ([0-9]*)" _ ${ver_h})
set(MATHLIB_VERSION_MAJOR ${CMAKE_MATCH_1})
string(REGEX MATCH "MATHLIB_VERSION_MINOR ([0-9]*)" _ ${ver_h})
set(MATHLIB_VERSION_MINOR ${CMAKE_MATCH_1})
message("MathLib v${MATHLIB_VERSION_MAJOR}.${MATHLIB_VERSION_MINOR}")
file (READ "External/MathLib/MathLib.h" ver_h)
string (REGEX MATCH "MATHLIB_VERSION_MAJOR ([0-9]*)" _ ${ver_h})
set (MATHLIB_VERSION_MAJOR ${CMAKE_MATCH_1})
string (REGEX MATCH "MATHLIB_VERSION_MINOR ([0-9]*)" _ ${ver_h})
set (MATHLIB_VERSION_MINOR ${CMAKE_MATCH_1})
message ("MathLib v${MATHLIB_VERSION_MAJOR}.${MATHLIB_VERSION_MINOR}")

file(GLOB MATHLIB_FILES "External/MathLib/*.h" "External/MathLib/*.hpp")
source_group("MathLib" FILES ${MATHLIB_FILES})
file (GLOB MATHLIB_FILES "External/MathLib/*.h" "External/MathLib/*.hpp")
source_group ("MathLib" FILES ${MATHLIB_FILES})

# NRD
file(GLOB GLOB_INCUDE "Include/*")
source_group("Include" FILES ${GLOB_INCUDE})
file(GLOB GLOB_SOURCE "Source/*.cpp" "Source/*.h" "Source/*.hpp")
source_group("Source" FILES ${GLOB_SOURCE})
file(GLOB GLOB_METHODS "Source/Methods/*.cpp" "Source/Methods/*.h" "Source/Methods/*.hpp")
source_group("Methods" FILES ${GLOB_METHODS})
file(GLOB GLOB_RESOURCES "Resources/*")
source_group("Resources" FILES ${GLOB_RESOURCES})

if(NRD_STATIC_LIBRARY)
add_library(${PROJECT_NAME} STATIC ${GLOB_SOURCE} ${GLOB_METHODS} ${MATHLIB_FILES} ${GLOB_RESOURCES} ${GLOB_INCUDE})
else()
add_library(${PROJECT_NAME} SHARED ${GLOB_SOURCE} ${GLOB_METHODS} ${MATHLIB_FILES} ${GLOB_RESOURCES} ${GLOB_INCUDE})

if(WIN32)
target_compile_definitions(${PROJECT_NAME} PRIVATE "NRD_API=extern \"C\" __declspec(dllexport)")
else()
target_compile_definitions(${PROJECT_NAME} PRIVATE "NRD_API=extern \"C\" __attribute__((visibility(\"default\")))")
endif()
endif()

target_include_directories(${PROJECT_NAME} PRIVATE "Include" "External")
if(NRD_USE_PRECOMPILED_SHADERS)
target_include_directories(${PROJECT_NAME} PRIVATE "${NRD_SHADERS_PATH}")
target_compile_definitions(${PROJECT_NAME} PRIVATE NRD_USE_PRECOMPILED_SHADERS)
endif()

target_compile_definitions(${PROJECT_NAME} PRIVATE ${COMPILE_DEFINITIONS})
target_compile_options(${PROJECT_NAME} PRIVATE ${COMPILE_OPTIONS})
file (GLOB GLOB_INCUDE "Include/*")
source_group ("Include" FILES ${GLOB_INCUDE})
file (GLOB GLOB_SOURCE "Source/*.cpp" "Source/*.h" "Source/*.hpp")
source_group ("Source" FILES ${GLOB_SOURCE})
file (GLOB GLOB_METHODS "Source/Methods/*.cpp" "Source/Methods/*.h" "Source/Methods/*.hpp")
source_group ("Methods" FILES ${GLOB_METHODS})
file (GLOB GLOB_RESOURCES "Resources/*")
source_group ("Resources" FILES ${GLOB_RESOURCES})

if (NRD_STATIC_LIBRARY)
add_library (${PROJECT_NAME} STATIC ${GLOB_SOURCE} ${GLOB_METHODS} ${MATHLIB_FILES} ${GLOB_RESOURCES} ${GLOB_INCUDE})
else ()
add_library (${PROJECT_NAME} SHARED ${GLOB_SOURCE} ${GLOB_METHODS} ${MATHLIB_FILES} ${GLOB_RESOURCES} ${GLOB_INCUDE})

if (WIN32)
target_compile_definitions (${PROJECT_NAME} PRIVATE "NRD_API=extern \"C\" __declspec(dllexport)")
else ()
target_compile_definitions (${PROJECT_NAME} PRIVATE "NRD_API=extern \"C\" __attribute__((visibility(\"default\")))")
endif ()
endif ()

if ("${NRD_SHADERS_PATH}" STREQUAL "")
set (NRD_SHADERS_PATH "${CMAKE_CURRENT_SOURCE_DIR}/_Shaders")
else ()
set (NRD_SHADER_BINARIES "--binary")
endif ()

message ("NRD shaders output path: '${NRD_SHADERS_PATH}'")

if (NRD_USE_PRECOMPILED_SHADERS)
target_include_directories (${PROJECT_NAME} PRIVATE "${NRD_SHADERS_PATH}")
target_compile_definitions (${PROJECT_NAME} PRIVATE NRD_USE_PRECOMPILED_SHADERS)
endif ()

target_include_directories (${PROJECT_NAME} PRIVATE "Include" "External")
target_compile_definitions (${PROJECT_NAME} PRIVATE ${COMPILE_DEFINITIONS})
target_compile_options (${PROJECT_NAME} PRIVATE ${COMPILE_OPTIONS})

set_property (TARGET ${PROJECT_NAME} PROPERTY FOLDER "${PROJECT_NAME}")

set_target_properties (${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${GLOBAL_BIN_OUTPUT_PATH}/$<CONFIG>")
set_target_properties (${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${GLOBAL_BIN_OUTPUT_PATH}/$<CONFIG>")
set_target_properties (${PROJECT_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${GLOBAL_BIN_OUTPUT_PATH}/$<CONFIG>")
message ("NRD output path: '${GLOBAL_BIN_OUTPUT_PATH}'")

# External/ShaderMake
if (NOT TARGET ShaderMake)
set (SHADERMAKE_BIN_OUTPUT_PATH ${GLOBAL_BIN_OUTPUT_PATH} CACHE STRING "")
add_subdirectory (External/ShaderMake)
endif ()

set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER "${PROJECT_NAME}")

if(NOT NRD_DISABLE_SHADER_COMPILATION)
add_dependencies(${PROJECT_NAME} ${PROJECT_NAME}_Shaders)
endif()

set_target_properties(${PROJECT_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${GLOBAL_BIN_OUTPUT_PATH}/$<CONFIG>")
set_target_properties(${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${GLOBAL_BIN_OUTPUT_PATH}/$<CONFIG>")
set_target_properties(${PROJECT_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${GLOBAL_BIN_OUTPUT_PATH}/$<CONFIG>")
message("NRD output path: '${GLOBAL_BIN_OUTPUT_PATH}'")
# Shaders
file (GLOB_RECURSE SHADERS "Shaders/*.hlsl" "Shaders/*.hlsli" "External/MathLib/*.hlsli")
set_source_files_properties (${SHADERS} PROPERTIES VS_TOOL_OVERRIDE "None")

if (WIN32)
add_custom_target (${PROJECT_NAME}_Shaders ALL
COMMAND ShaderMake
--header ${NRD_SHADER_BINARIES} --flatten --stripReflection --compiler "${DXC_PATH}"
--sourceDir "Shaders/Source"
--allResourcesBound
-p DXIL --WX
-c Shaders.cfg
-o "${NRD_SHADERS_PATH}"
-I "External/MathLib"
-I "Shaders/Include"
-I "Shaders/Resources"
-D NRD_NORMAL_ENCODING=${NRD_NORMAL_ENCODING}
-D NRD_ROUGHNESS_ENCODING=${NRD_ROUGHNESS_ENCODING}
-D NRD_INTERNAL
COMMAND ShaderMake
--header ${NRD_SHADER_BINARIES} --flatten --stripReflection --compiler "${DXC_SPIRV_PATH}"
--sourceDir "Shaders/Source"
--allResourcesBound
-p SPIRV --WX
-c Shaders.cfg
-o "${NRD_SHADERS_PATH}"
-I "External/MathLib"
-I "Shaders/Include"
-I "Shaders/Resources"
-D NRD_NORMAL_ENCODING=${NRD_NORMAL_ENCODING}
-D NRD_ROUGHNESS_ENCODING=${NRD_ROUGHNESS_ENCODING}
-D NRD_INTERNAL
COMMAND ShaderMake
--header ${NRD_SHADER_BINARIES} --flatten --stripReflection --compiler "${FXC_PATH}"
--sourceDir "Shaders/Source"
--allResourcesBound
-p DXBC --WX
-c Shaders.cfg
-o "${NRD_SHADERS_PATH}"
-I "External/MathLib"
-I "Shaders/Include"
-I "Shaders/Resources"
-D NRD_NORMAL_ENCODING=${NRD_NORMAL_ENCODING}
-D NRD_ROUGHNESS_ENCODING=${NRD_ROUGHNESS_ENCODING}
-D NRD_INTERNAL
DEPENDS ShaderMake
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
VERBATIM
SOURCES ${SHADERS}
)
else ()
add_custom_target (${PROJECT_NAME}_Shaders ALL
COMMAND ShaderMake
--header ${NRD_SHADER_BINARIES} --flatten --stripReflection --compiler "${DXC_SPIRV_PATH}"
--sourceDir "Shaders/Source"
--allResourcesBound
-p SPIRV --WX
-c Shaders.cfg
-o "${NRD_SHADERS_PATH}"
-I "External/MathLib"
-I "Shaders/Include"
-I "Shaders/Resources"
-D NRD_NORMAL_ENCODING=${NRD_NORMAL_ENCODING}
-D NRD_ROUGHNESS_ENCODING=${NRD_ROUGHNESS_ENCODING}
-D NRD_INTERNAL
DEPENDS ShaderMake
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
VERBATIM
SOURCES ${SHADERS}
)
endif ()

set_property (TARGET ${PROJECT_NAME}_Shaders PROPERTY FOLDER ${PROJECT_NAME})
add_dependencies (${PROJECT_NAME} ${PROJECT_NAME}_Shaders)
Loading

0 comments on commit df3573e

Please sign in to comment.