diff --git a/.gitmodules b/.gitmodules index 833db6f5..497a1a63 100644 --- a/.gitmodules +++ b/.gitmodules @@ -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 \ No newline at end of file diff --git a/1-Deploy.sh b/1-Deploy.sh index 0642a574..9445ad57 100644 --- a/1-Deploy.sh +++ b/1-Deploy.sh @@ -9,5 +9,5 @@ git submodule update --init --recursive mkdir -p "_Compiler" cd "_Compiler" -cmake .. -A x64 +cmake .. cd .. diff --git a/2-Build.bat b/2-Build.bat index 41301063..b160ec3c 100644 --- a/2-Build.bat +++ b/2-Build.bat @@ -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 .. diff --git a/2-Build.sh b/2-Build.sh index 079e5297..ae972c48 100644 --- a/2-Build.sh +++ b/2-Build.sh @@ -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 .. diff --git a/4-Clean.bat b/4-Clean.bat index 6ee8cc09..d01f7533 100644 --- a/4-Clean.bat +++ b/4-Clean.bat @@ -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" diff --git a/4-Clean.sh b/4-Clean.sh index 21f054c1..ce455c0e 100644 --- a/4-Clean.sh +++ b/4-Clean.sh @@ -4,4 +4,5 @@ rm -rf "build" rm -rf "_Build" rm -rf "_Compiler" +rm -rf "_Shaders" rm -rf "_NRD_SDK" diff --git a/CMakeLists.txt b/CMakeLists.txt index a9ed6cb7..9bb544f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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$<$: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$<$: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}/$") +set_target_properties (${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${GLOBAL_BIN_OUTPUT_PATH}/$") +set_target_properties (${PROJECT_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${GLOBAL_BIN_OUTPUT_PATH}/$") +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}/$") -set_target_properties(${PROJECT_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY "${GLOBAL_BIN_OUTPUT_PATH}/$") -set_target_properties(${PROJECT_NAME} PROPERTIES ARCHIVE_OUTPUT_DIRECTORY "${GLOBAL_BIN_OUTPUT_PATH}/$") -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) diff --git a/External/MathLib b/External/MathLib index 33763bcb..e6765b3f 160000 --- a/External/MathLib +++ b/External/MathLib @@ -1 +1 @@ -Subproject commit 33763bcbcfe5bc830b427b7cdc9f555bf7f9a01c +Subproject commit e6765b3fae9c0471f3e88c0c88d08ace82fcca56 diff --git a/External/ShaderMake b/External/ShaderMake new file mode 160000 index 00000000..d6b1d48a --- /dev/null +++ b/External/ShaderMake @@ -0,0 +1 @@ +Subproject commit d6b1d48af8fa4d2075beababffc2cd2c0f03080f diff --git a/Images/Resolve.jpg b/Images/Resolve.jpg new file mode 100644 index 00000000..e07a7831 Binary files /dev/null and b/Images/Resolve.jpg differ diff --git a/Include/NRD.h b/Include/NRD.h index 02d03adc..1e4d350a 100644 --- a/Include/NRD.h +++ b/Include/NRD.h @@ -28,9 +28,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #include #define NRD_VERSION_MAJOR 4 -#define NRD_VERSION_MINOR 0 -#define NRD_VERSION_BUILD 2 -#define NRD_VERSION_DATE "23 January 2023" +#define NRD_VERSION_MINOR 1 +#define NRD_VERSION_BUILD 0 +#define NRD_VERSION_DATE "23 March 2023" #if defined(_MSC_VER) #define NRD_CALL __fastcall diff --git a/Include/NRDDescs.h b/Include/NRDDescs.h index f592fe07..295ee051 100644 --- a/Include/NRDDescs.h +++ b/Include/NRDDescs.h @@ -11,7 +11,7 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #pragma once #define NRD_DESCS_VERSION_MAJOR 4 -#define NRD_DESCS_VERSION_MINOR 0 +#define NRD_DESCS_VERSION_MINOR 1 static_assert (NRD_VERSION_MAJOR == NRD_DESCS_VERSION_MAJOR && NRD_VERSION_MINOR == NRD_DESCS_VERSION_MINOR, "Please, update all NRD SDK files"); @@ -98,17 +98,35 @@ namespace nrd // ============================================================================================================================= // INPUTS - IN_MV, IN_NORMAL_ROUGHNESS, IN_VIEWZ, IN_DIFF_RADIANCE_HITDIST + // OPTIONAL INPUTS - IN_DIFF_CONFIDENCE // OUTPUTS - OUT_DIFF_RADIANCE_HITDIST RELAX_DIFFUSE, + // INPUTS - IN_MV, IN_NORMAL_ROUGHNESS, IN_VIEWZ, IN_DIFF_SH0, IN_DIFF_SH1 + // OPTIONAL INPUTS - IN_DIFF_CONFIDENCE + // OUTPUTS - OUT_DIFF_SH0, OUT_DIFF_SH1 + RELAX_DIFFUSE_SH, + // INPUTS - IN_MV, IN_NORMAL_ROUGHNESS, IN_VIEWZ, IN_SPEC_RADIANCE_HITDIST + // OPTIONAL INPUTS - IN_SPEC_CONFIDENCE // OUTPUTS - OUT_SPEC_RADIANCE_HITDIST RELAX_SPECULAR, + // INPUTS - IN_MV, IN_NORMAL_ROUGHNESS, IN_VIEWZ, IN_SPEC_SH0, IN_SPEC_SH1 + // OPTIONAL INPUTS - IN_SPEC_CONFIDENCE + // OUTPUTS - OUT_SPEC_SH0, OUT_SPEC_SH1 + RELAX_SPECULAR_SH, + // INPUTS - IN_MV, IN_NORMAL_ROUGHNESS, IN_VIEWZ, IN_DIFF_RADIANCE_HITDIST, IN_SPEC_RADIANCE_HITDIST + // OPTIONAL INPUTS - IN_DIFF_CONFIDENCE, IN_SPEC_CONFIDENCE // OUTPUTS - OUT_DIFF_RADIANCE_HITDIST, OUT_SPEC_RADIANCE_HITDIST RELAX_DIFFUSE_SPECULAR, + // INPUTS - IN_MV, IN_NORMAL_ROUGHNESS, IN_VIEWZ, IN_DIFF_SH0, IN_DIFF_SH1, IN_SPEC_SH0, IN_SPEC_SH1 + // OPTIONAL INPUTS - IN_DIFF_CONFIDENCE, IN_SPEC_CONFIDENCE + // OUTPUTS - OUT_DIFF_SH0, OUT_DIFF_SH1, OUT_SPEC_SH0, OUT_SPEC_SH1 + RELAX_DIFFUSE_SPECULAR_SH, + // ============================================================================================================================= // REFERENCE // ============================================================================================================================= @@ -169,6 +187,7 @@ namespace nrd // Noisy SH data (2x RGBA16f+) // REBLUR: use "REBLUR_FrontEnd_PackSh" for encoding + // RELAX: use "RELAX_FrontEnd_PackSh" for encoding IN_DIFF_SH0, IN_DIFF_SH1, IN_SPEC_SH0, @@ -214,6 +233,7 @@ namespace nrd // Denoised SH data // REBLUR: use "REBLUR_BackEnd_UnpackSh" for decoding (2x RGBA16f+) + // RELAX: use "RELAX_BackEnd_UnpackSh" for decoding (2x RGBA16f+) OUT_DIFF_SH0, OUT_DIFF_SH1, OUT_SPEC_SH0, diff --git a/Include/NRDSettings.h b/Include/NRDSettings.h index feb0e613..1c9566bb 100644 --- a/Include/NRDSettings.h +++ b/Include/NRDSettings.h @@ -11,7 +11,7 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #pragma once #define NRD_SETTINGS_VERSION_MAJOR 4 -#define NRD_SETTINGS_VERSION_MINOR 0 +#define NRD_SETTINGS_VERSION_MINOR 1 static_assert (NRD_VERSION_MAJOR == NRD_SETTINGS_VERSION_MAJOR && NRD_VERSION_MINOR == NRD_SETTINGS_VERSION_MINOR, "Please, update all NRD SDK files"); @@ -236,7 +236,7 @@ namespace nrd float historyFixStrideBetweenSamples = 14.0f; // (normalized %) - base fraction of diffuse or specular lobe angle used to drive normal based rejection - float lobeAngleFraction = 0.13f; + float lobeAngleFraction = 0.15f; // (normalized %) - base fraction of center roughness used to drive roughness based rejection float roughnessFraction = 0.15f; diff --git a/Integration/NRDIntegration.h b/Integration/NRDIntegration.h index 466080d5..21e24f60 100644 --- a/Integration/NRDIntegration.h +++ b/Integration/NRDIntegration.h @@ -23,8 +23,8 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #include #define NRD_INTEGRATION_MAJOR 1 -#define NRD_INTEGRATION_MINOR 4 -#define NRD_INTEGRATION_DATE "20 December 2022" +#define NRD_INTEGRATION_MINOR 5 +#define NRD_INTEGRATION_DATE "23 March 2022" #define NRD_INTEGRATION 1 #define NRD_INTEGRATION_DEBUG_LOGGING 0 diff --git a/Integration/NRDIntegration.hpp b/Integration/NRDIntegration.hpp index e096b3c4..b3aef942 100644 --- a/Integration/NRDIntegration.hpp +++ b/Integration/NRDIntegration.hpp @@ -11,7 +11,7 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #include "NRDIntegration.h" static_assert(NRD_VERSION_MAJOR >= 4 && NRD_VERSION_MINOR >= 0, "Unsupported NRD version!"); -static_assert(NRI_VERSION_MAJOR >= 1 && NRI_VERSION_MINOR >= 90, "Unsupported NRI version!"); +static_assert(NRI_VERSION_MAJOR >= 1 && NRI_VERSION_MINOR >= 93, "Unsupported NRI version!"); #if _WIN32 #define NRD_INTEGRATION_ALLOCA _alloca diff --git a/README.md b/README.md index 2d3cd7df..0b335e53 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# NVIDIA Real-time Denoisers v4.0.2 (NRD) +# NVIDIA Real-time Denoisers v4.1.0 (NRD) [![Build NRD SDK](https://github.com/NVIDIAGameWorks/RayTracingDenoiser/actions/workflows/build.yml/badge.svg)](https://github.com/NVIDIAGameWorks/RayTracingDenoiser/actions/workflows/build.yml) @@ -22,7 +22,7 @@ Supported signal types: - Diffuse & specular radiance - Diffuse (ambient) & specular occlusion (OCCLUSION variants) - Diffuse (ambient) directional occlusion (DIRECTIONAL_OCCLUSION variant) - - Diffuse & specular radiance in spherical harmonics (SH variants) + - Diffuse & specular radiance in spherical harmonics (spherical gaussians) (SH variants) - *SIGMA*: - Shadows from an infinite light source (sun, moon) - Shadows from a local light source (omni, spot) @@ -185,6 +185,67 @@ NRD sample is a good start to familiarize yourself with input requirements and b See `NRDDescs.h` for more details and descriptions of other inputs and outputs. +# IMPROVING OUTPUT QUALITY + +The temporal part of *NRD* naturally suppresses jitter, which is essential for upscaling techniques. If an *SH* denoiser is in use, a high quality resolve can be applied to the final output to regain back macro details, micro details and per-pixel jittering. As an example, the image below demonstrates the results *after* and *before* resolve with active *DLSS* (quality mode). + +![Resolve](Images/Resolve.jpg) + +The resolve process takes place on the application side and has the following modular structure: +- construct an SG (spherical gaussian) light +- apply diffuse or specular resolve function to reconstruct macro details +- apply re-jittering to reconstruct micro details +- (optionally) or just extract unresolved color (fully matches the output of a corresponding non-SH denoiser) + +Shader code: +```cpp +// Diffuse +float4 diff = gIn_Diff.SampleLevel( gLinearSampler, pixelUv, 0 ); +float4 diff1 = gIn_DiffSh.SampleLevel( gLinearSampler, pixelUv, 0 ); +NRD_SG diffSg = REBLUR_BackEnd_UnpackSh( diff, diff1 ); + +// Specular +float4 spec = gIn_Spec.SampleLevel( gLinearSampler, pixelUv, 0 ); +float4 spec1 = gIn_SpecSh.SampleLevel( gLinearSampler, pixelUv, 0 ); +NRD_SG specSg = REBLUR_BackEnd_UnpackSh( spec, spec1 ); + +// ( Optional ) AO / SO ( available only for REBLUR ) +diff.w = diffSg.normHitDist; +spec.w = specSg.normHitDist; + +if( gResolve ) +{ + // ( Optional ) replace "roughness" with "roughnessAA" + roughness = NRD_SG_ExtractRoughnessAA( specSg ); + + // Regain macro-details + diff.xyz = NRD_SG_ResolveDiffuse( diffSg, N ); // or NRD_SH_ResolveDiffuse( sg, N ) + spec.xyz = NRD_SG_ResolveSpecular( specSg, N, V, roughness ); + + // Regain micro-details & jittering // TODO: preload N and Z into SMEM + float3 Ne = NRD_FrontEnd_UnpackNormalAndRoughness( gIn_Normal_Roughness[ pixelPos + int2( 1, 0 ) ] ).xyz; + float3 Nw = NRD_FrontEnd_UnpackNormalAndRoughness( gIn_Normal_Roughness[ pixelPos + int2( -1, 0 ) ] ).xyz; + float3 Nn = NRD_FrontEnd_UnpackNormalAndRoughness( gIn_Normal_Roughness[ pixelPos + int2( 0, 1 ) ] ).xyz; + float3 Ns = NRD_FrontEnd_UnpackNormalAndRoughness( gIn_Normal_Roughness[ pixelPos + int2( 0, -1 ) ] ).xyz; + + float Ze = gIn_ViewZ[ pixelPos + int2( 1, 0 ) ]; + float Zw = gIn_ViewZ[ pixelPos + int2( -1, 0 ) ]; + float Zn = gIn_ViewZ[ pixelPos + int2( 0, 1 ) ]; + float Zs = gIn_ViewZ[ pixelPos + int2( 0, -1 ) ]; + + float2 scale = NRD_SG_ReJitter( diffSg, specSg, Rf0, V, roughness, viewZ, Ze, Zw, Zn, Zs, N, Ne, Nw, Nn, Ns ); + + diff.xyz *= scale.x; + spec.xyz *= scale.y; +} +else +{ + // ( Optional ) Unresolved color matching the non-SH version of the denoiser + diff.xyz = NRD_SG_ExtractColor( diffSg ); + spec.xyz = NRD_SG_ExtractColor( specSg ); +} +``` + # VALIDATION LAYER ![Validation](Images/Validation.png) @@ -239,8 +300,11 @@ The *Persistent* column (matches *NRD Permanent pool*) indicates how much of the | | SIGMA_SHADOW | 23.38 | 0.00 | 23.38 | | | SIGMA_SHADOW_TRANSLUCENCY | 42.31 | 0.00 | 42.31 | | | RELAX_DIFFUSE | 120.31 | 65.44 | 54.88 | +| | RELAX_DIFFUSE_SH | 204.69 | 99.19 | 105.50 | | | RELAX_SPECULAR | 130.94 | 73.94 | 57.00 | +| | RELAX_SPECULAR_SH | 215.31 | 107.69 | 107.62 | | | RELAX_DIFFUSE_SPECULAR | 215.31 | 107.69 | 107.62 | +| | RELAX_DIFFUSE_SPECULAR_SH | 384.06 | 175.19 | 208.88 | | | REFERENCE | 33.75 | 33.75 | 0.00 | | | | | | | | 1440p | REBLUR_DIFFUSE | 153.75 | 82.50 | 71.25 | @@ -256,8 +320,11 @@ The *Persistent* column (matches *NRD Permanent pool*) indicates how much of the | | SIGMA_SHADOW | 41.38 | 0.00 | 41.38 | | | SIGMA_SHADOW_TRANSLUCENCY | 75.12 | 0.00 | 75.12 | | | RELAX_DIFFUSE | 213.75 | 116.25 | 97.50 | +| | RELAX_DIFFUSE_SH | 363.75 | 176.25 | 187.50 | | | RELAX_SPECULAR | 232.50 | 131.25 | 101.25 | +| | RELAX_SPECULAR_SH | 382.50 | 191.25 | 191.25 | | | RELAX_DIFFUSE_SPECULAR | 382.50 | 191.25 | 191.25 | +| | RELAX_DIFFUSE_SPECULAR_SH | 682.50 | 311.25 | 371.25 | | | REFERENCE | 60.00 | 60.00 | 0.00 | | | | | | | | 2160p | REBLUR_DIFFUSE | 326.75 | 175.31 | 151.44 | @@ -273,8 +340,11 @@ The *Persistent* column (matches *NRD Permanent pool*) indicates how much of the | | SIGMA_SHADOW | 87.94 | 0.00 | 87.94 | | | SIGMA_SHADOW_TRANSLUCENCY | 159.56 | 0.00 | 159.56 | | | RELAX_DIFFUSE | 454.31 | 247.12 | 207.19 | +| | RELAX_DIFFUSE_SH | 773.06 | 374.62 | 398.44 | | | RELAX_SPECULAR | 494.19 | 279.00 | 215.19 | +| | RELAX_SPECULAR_SH | 812.94 | 406.50 | 406.44 | | | RELAX_DIFFUSE_SPECULAR | 812.94 | 406.50 | 406.44 | +| | RELAX_DIFFUSE_SPECULAR_SH | 1450.44 | 661.50 | 788.94 | | | REFERENCE | 127.50 | 127.50 | 0.00 | # INTEGRATION VARIANTS @@ -467,7 +537,6 @@ Shader part: // Or define NRD encoding in Cmake and deliver macro definitions to shader compilation command line #endif -#define NRD_HEADER_ONLY #include "NRD.hlsli" // Call corresponding "front end" function to encode data for NRD (NRD.hlsli indicates which function @@ -613,6 +682,8 @@ maxAccumulatedFrameNum > maxFastAccumulatedFrameNum > historyFixFrameNum **[NRD]** In case of quarter resolution tracing and denoising use `pixelPos / 2` as texture coordinates. Using a "rotated grid" approach (when a pixel gets selected from 2x2 footprint one by one) is not recommended because it significantly bumps entropy of non-noisy inputs, leading to more disocclusions. In case of *REBLUR* it's recommended to increase `sigmaScale` in antilag settings. "Nearest Z" upsampling works best for upscaling of the denoised output. Code, as well as upsampling function, can be found in *NRD sample* releases before 3.10. +**[NRD]** *SH* denoisers can use more relaxed `lobeAngleFraction`. It can help to improve stability, while details will be reconstructed back by *SG* resolve. + **[REBLUR]** In case of *REBLUR* ensure that `enableReferenceAccumulation = true` works properly first. It's not mandatory, but will help to simplify debugging of potential issues by implicitly disabling spatial filtering entirely. **[REBLUR]** If more performance is needed, consider using `enablePerformanceMode = true`. diff --git a/Resources/Version.h b/Resources/Version.h index 4a7e90e0..218c9e66 100644 --- a/Resources/Version.h +++ b/Resources/Version.h @@ -22,8 +22,8 @@ Versioning rules: */ #define VERSION_MAJOR 4 -#define VERSION_MINOR 0 -#define VERSION_BUILD 2 +#define VERSION_MINOR 1 +#define VERSION_BUILD 0 #define VERSION_REVISION 0 #define VERSION_STRING STR(VERSION_MAJOR.VERSION_MINOR.VERSION_BUILD.VERSION_REVISION) diff --git a/ShaderCompilation.cmake b/ShaderCompilation.cmake deleted file mode 100644 index 4d45e789..00000000 --- a/ShaderCompilation.cmake +++ /dev/null @@ -1,149 +0,0 @@ -# DXC on Windows does not like forward slashes -if(WIN32) - string(REPLACE "/" "\\" SHADER_INCLUDE_PATH "${SHADER_FILES}/Include") - - # Needed only for WinSDK before 22000 - string(REPLACE "/" "\\" MATHLIB_INCLUDE_PATH "${MATHLIB_INCLUDE_PATH}") -endif() - -# Find FXC and DXC -if(WIN32) - if(DEFINED CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION) - set(WINDOWS_SDK_VERSION ${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}) - elseif(DEFINED ENV{WindowsSDKLibVersion}) - string(REGEX REPLACE "\\\\$" "" WINDOWS_SDK_VERSION "$ENV{WindowsSDKLibVersion}") - else() - message(FATAL_ERROR "WindowsSDK is not installed.(CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION is not defined; WindowsSDKLibVersion is '$ENV{WindowsSDKLibVersion}')") - endif() - - get_filename_component(WINDOWS_SDK_ROOT - "[HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows Kits\\Installed Roots;KitsRoot10]" ABSOLUTE) - - set(WINDOWS_SDK_BIN "${WINDOWS_SDK_ROOT}/bin/${WINDOWS_SDK_VERSION}/x64") - - # On Windows, FXC and DXC are part of WindowsSDK and there's also DXC in VulkanSDK which supports SPIR-V - find_program(FXC_PATH "${WINDOWS_SDK_BIN}/fxc") - if(NOT FXC_PATH) - message(FATAL_ERROR "Can't find FXC: '${WINDOWS_SDK_BIN}/fxc'") - endif() - - find_program(DXC_PATH "${WINDOWS_SDK_BIN}/dxc") - if(NOT DXC_PATH) - message(FATAL_ERROR "Can't find DXC: '${WINDOWS_SDK_BIN}/dxc'") - endif() - - find_program(DXC_SPIRV_PATH "$ENV{VULKAN_SDK}/Bin/dxc") - if(NOT DXC_SPIRV_PATH) - message("Can't find VulkanSDK DXC: '$ENV{VULKAN_SDK}/Bin/dxc'") - find_program(DXC_SPIRV_PATH "dxc" "${NRD_DXC_CUSTOM_PATH}") - if(NOT DXC_SPIRV_PATH) - message(FATAL_ERROR "Can't find DXC: Specify custom path using 'NRD_DXC_CUSTOM_PATH' parameter or install VulkanSDK") - endif() - endif() -else() - # On Linux, VulkanSDK does not set VULKAN_SDK, but DXC can be called directly - find_program(DXC_SPIRV_PATH "dxc") - if(NOT DXC_SPIRV_PATH) - find_program(DXC_SPIRV_PATH "${NRD_DXC_CUSTOM_PATH}") - if(NOT DXC_SPIRV_PATH) - message(FATAL_ERROR "Can't find DXC: Specify custom path using 'NRD_DXC_CUSTOM_PATH' parameter or install VulkanSDK") - endif() - endif() -endif() - -message("Using FXC path: '${FXC_PATH}'") -message("Using DXC path: '${DXC_PATH}'") -message("Using DXC(for SPIRV) path: '${DXC_SPIRV_PATH}'") - -function(get_shader_profile_from_name FILE_NAME DXC_PROFILE FXC_PROFILE) - get_filename_component(EXTENSION ${FILE_NAME} EXT) - if("${EXTENSION}" STREQUAL ".cs.hlsl") - set(DXC_PROFILE "cs_6_3" PARENT_SCOPE) - set(FXC_PROFILE "cs_5_0" PARENT_SCOPE) - endif() -endfunction() - -macro(list_hlsl_headers HLSL_FILES HEADER_FILES) - foreach(FILE_NAME ${HLSL_FILES}) - set(DXC_PROFILE "") - set(FXC_PROFILE "") - get_shader_profile_from_name(${FILE_NAME} DXC_PROFILE FXC_PROFILE) - if("${DXC_PROFILE}" STREQUAL "" AND "${FXC_PROFILE}" STREQUAL "") - list(APPEND HEADER_FILES ${FILE_NAME}) - set_source_files_properties(${FILE_NAME} PROPERTIES VS_TOOL_OVERRIDE "None") - endif() - endforeach() -endmacro() - -set(VK_S_SHIFT 100) -set(VK_T_SHIFT 200) -set(VK_B_SHIFT 300) -set(VK_U_SHIFT 400) -set(DXC_VK_SHIFTS - -fvk-s-shift ${VK_S_SHIFT} 0 -fvk-s-shift ${VK_S_SHIFT} 1 -fvk-s-shift ${VK_S_SHIFT} 2 - -fvk-t-shift ${VK_T_SHIFT} 0 -fvk-t-shift ${VK_T_SHIFT} 1 -fvk-t-shift ${VK_T_SHIFT} 2 - -fvk-b-shift ${VK_B_SHIFT} 0 -fvk-b-shift ${VK_B_SHIFT} 1 -fvk-b-shift ${VK_B_SHIFT} 2 - -fvk-u-shift ${VK_U_SHIFT} 0 -fvk-u-shift ${VK_U_SHIFT} 1 -fvk-u-shift ${VK_U_SHIFT} 2) - -macro(list_hlsl_shaders HLSL_FILES HEADER_FILES SHADER_FILES) - foreach(FILE_NAME ${HLSL_FILES}) - get_filename_component(NAME_ONLY ${FILE_NAME} NAME) - string(REGEX REPLACE "\\.[^.]*$" "" NAME_ONLY ${NAME_ONLY}) - string(REPLACE "." "_" BYTECODE_ARRAY_NAME "${NAME_ONLY}") - set(DXC_PROFILE "") - set(FXC_PROFILE "") - set(OUTPUT_PATH_DXBC "${NRD_SHADERS_PATH}/${NAME_ONLY}.dxbc") - set(OUTPUT_PATH_DXIL "${NRD_SHADERS_PATH}/${NAME_ONLY}.dxil") - set(OUTPUT_PATH_SPIRV "${NRD_SHADERS_PATH}/${NAME_ONLY}.spirv") - get_shader_profile_from_name(${FILE_NAME} DXC_PROFILE FXC_PROFILE) - - # DXBC - if(NOT "${FXC_PROFILE}" STREQUAL "" AND NOT "${FXC_PATH}" STREQUAL "") - add_custom_command( - OUTPUT ${OUTPUT_PATH_DXBC} ${OUTPUT_PATH_DXBC}.h - COMMAND ${FXC_PATH} /nologo /E main /T ${FXC_PROFILE} /WX /O3 /all_resources_bound - /DNRD_COMPILER_FXC=1 /DNRD_NORMAL_ENCODING=${NRD_NORMAL_ENCODING} /DNRD_ROUGHNESS_ENCODING=${NRD_ROUGHNESS_ENCODING} - /I "${MATHLIB_INCLUDE_PATH}" /I "${SHADER_INCLUDE_PATH}" - "${FILE_NAME}" /Vn g_${BYTECODE_ARRAY_NAME}_dxbc /Fh ${OUTPUT_PATH_DXBC}.h /Fo ${OUTPUT_PATH_DXBC} - MAIN_DEPENDENCY ${FILE_NAME} - DEPENDS ${HEADER_FILES} - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/Shaders" - VERBATIM - ) - list(APPEND SHADER_FILES ${OUTPUT_PATH_DXBC} ${OUTPUT_PATH_DXBC}.h) - endif() - - # DXIL - if(NOT "${DXC_PROFILE}" STREQUAL "" AND NOT "${DXC_PATH}" STREQUAL "") - add_custom_command( - OUTPUT ${OUTPUT_PATH_DXIL} ${OUTPUT_PATH_DXIL}.h - COMMAND ${DXC_PATH} -E main -T ${DXC_PROFILE} -WX -O3 -enable-16bit-types -all_resources_bound - -DNRD_COMPILER_DXC=1 -DNRD_NORMAL_ENCODING=${NRD_NORMAL_ENCODING} -DNRD_ROUGHNESS_ENCODING=${NRD_ROUGHNESS_ENCODING} - -I "${MATHLIB_INCLUDE_PATH}" -I "${SHADER_INCLUDE_PATH}" - "${FILE_NAME}" -Vn g_${BYTECODE_ARRAY_NAME}_dxil -Fh ${OUTPUT_PATH_DXIL}.h -Fo ${OUTPUT_PATH_DXIL} - MAIN_DEPENDENCY ${FILE_NAME} - DEPENDS ${HEADER_FILES} - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/Shaders" - VERBATIM - ) - list(APPEND SHADER_FILES ${OUTPUT_PATH_DXIL} ${OUTPUT_PATH_DXIL}.h) - endif() - - # SPIRV - if(NOT "${DXC_PROFILE}" STREQUAL "" AND NOT "${DXC_SPIRV_PATH}" STREQUAL "") - add_custom_command( - OUTPUT ${OUTPUT_PATH_SPIRV} ${OUTPUT_PATH_SPIRV}.h - COMMAND ${DXC_SPIRV_PATH} -E main -T ${DXC_PROFILE} -WX -O3 -enable-16bit-types -all_resources_bound - -DNRD_COMPILER_DXC=1 -DVULKAN=1 -DNRD_NORMAL_ENCODING=${NRD_NORMAL_ENCODING} -DNRD_ROUGHNESS_ENCODING=${NRD_ROUGHNESS_ENCODING} - -I "${MATHLIB_INCLUDE_PATH}" -I "${SHADER_INCLUDE_PATH}" - "${FILE_NAME}" -Vn g_${BYTECODE_ARRAY_NAME}_spirv -Fh ${OUTPUT_PATH_SPIRV}.h -Fo ${OUTPUT_PATH_SPIRV} ${DXC_VK_SHIFTS} - -spirv - MAIN_DEPENDENCY ${FILE_NAME} - DEPENDS ${HEADER_FILES} - WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/Shaders" - VERBATIM - ) - list(APPEND SHADER_FILES ${OUTPUT_PATH_SPIRV} ${OUTPUT_PATH_SPIRV}.h) - endif() - endforeach() -endmacro() \ No newline at end of file diff --git a/Shaders.cfg b/Shaders.cfg new file mode 100644 index 00000000..d60c2d83 --- /dev/null +++ b/Shaders.cfg @@ -0,0 +1,237 @@ +Clear_f.cs.hlsl -T cs +Clear_ui.cs.hlsl -T cs +REBLUR_DiffuseDirectionalOcclusion_Blur.cs.hlsl -T cs +REBLUR_DiffuseDirectionalOcclusion_HistoryFix.cs.hlsl -T cs +REBLUR_DiffuseDirectionalOcclusion_PostBlur.cs.hlsl -T cs +REBLUR_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_DiffuseDirectionalOcclusion_PrePass.cs.hlsl -T cs +REBLUR_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.hlsl -T cs +REBLUR_DiffuseDirectionalOcclusion_TemporalStabilization.cs.hlsl -T cs +REBLUR_DiffuseOcclusion_Blur.cs.hlsl -T cs +REBLUR_DiffuseOcclusion_HistoryFix.cs.hlsl -T cs +REBLUR_DiffuseOcclusion_HitDistReconstruction.cs.hlsl -T cs +REBLUR_DiffuseOcclusion_HitDistReconstruction_5x5.cs.hlsl -T cs +REBLUR_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_DiffuseOcclusion_PrePass.cs.hlsl -T cs +REBLUR_DiffuseOcclusion_TemporalAccumulation.cs.hlsl -T cs +REBLUR_DiffuseSh_Blur.cs.hlsl -T cs +REBLUR_DiffuseSh_CopyStabilizedHistory.cs.hlsl -T cs +REBLUR_DiffuseSh_HistoryFix.cs.hlsl -T cs +REBLUR_DiffuseSh_PostBlur.cs.hlsl -T cs +REBLUR_DiffuseSh_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_DiffuseSh_PrePass.cs.hlsl -T cs +REBLUR_DiffuseSh_SplitScreen.cs.hlsl -T cs +REBLUR_DiffuseSh_TemporalAccumulation.cs.hlsl -T cs +REBLUR_DiffuseSh_TemporalStabilization.cs.hlsl -T cs +REBLUR_DiffuseSpecularOcclusion_Blur.cs.hlsl -T cs +REBLUR_DiffuseSpecularOcclusion_HistoryFix.cs.hlsl -T cs +REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction.cs.hlsl -T cs +REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl -T cs +REBLUR_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_DiffuseSpecularOcclusion_PrePass.cs.hlsl -T cs +REBLUR_DiffuseSpecularOcclusion_TemporalAccumulation.cs.hlsl -T cs +REBLUR_DiffuseSpecularSh_Blur.cs.hlsl -T cs +REBLUR_DiffuseSpecularSh_CopyStabilizedHistory.cs.hlsl -T cs +REBLUR_DiffuseSpecularSh_HistoryFix.cs.hlsl -T cs +REBLUR_DiffuseSpecularSh_PostBlur.cs.hlsl -T cs +REBLUR_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_DiffuseSpecularSh_PrePass.cs.hlsl -T cs +REBLUR_DiffuseSpecularSh_SplitScreen.cs.hlsl -T cs +REBLUR_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl -T cs +REBLUR_DiffuseSpecularSh_TemporalStabilization.cs.hlsl -T cs +REBLUR_DiffuseSpecular_Blur.cs.hlsl -T cs +REBLUR_DiffuseSpecular_CopyStabilizedHistory.cs.hlsl -T cs +REBLUR_DiffuseSpecular_HistoryFix.cs.hlsl -T cs +REBLUR_DiffuseSpecular_HitDistReconstruction.cs.hlsl -T cs +REBLUR_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl -T cs +REBLUR_DiffuseSpecular_PostBlur.cs.hlsl -T cs +REBLUR_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_DiffuseSpecular_PrePass.cs.hlsl -T cs +REBLUR_DiffuseSpecular_SplitScreen.cs.hlsl -T cs +REBLUR_DiffuseSpecular_TemporalAccumulation.cs.hlsl -T cs +REBLUR_DiffuseSpecular_TemporalStabilization.cs.hlsl -T cs +REBLUR_Diffuse_Blur.cs.hlsl -T cs +REBLUR_Diffuse_CopyStabilizedHistory.cs.hlsl -T cs +REBLUR_Diffuse_HistoryFix.cs.hlsl -T cs +REBLUR_Diffuse_HitDistReconstruction.cs.hlsl -T cs +REBLUR_Diffuse_HitDistReconstruction_5x5.cs.hlsl -T cs +REBLUR_Diffuse_PostBlur.cs.hlsl -T cs +REBLUR_Diffuse_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_Diffuse_PrePass.cs.hlsl -T cs +REBLUR_Diffuse_SplitScreen.cs.hlsl -T cs +REBLUR_Diffuse_TemporalAccumulation.cs.hlsl -T cs +REBLUR_Diffuse_TemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_DiffuseDirectionalOcclusion_Blur.cs.hlsl -T cs +REBLUR_Perf_DiffuseDirectionalOcclusion_HistoryFix.cs.hlsl -T cs +REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur.cs.hlsl -T cs +REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_DiffuseDirectionalOcclusion_PrePass.cs.hlsl -T cs +REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.hlsl -T cs +REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_DiffuseOcclusion_Blur.cs.hlsl -T cs +REBLUR_Perf_DiffuseOcclusion_HistoryFix.cs.hlsl -T cs +REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction.cs.hlsl -T cs +REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction_5x5.cs.hlsl -T cs +REBLUR_Perf_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_DiffuseOcclusion_PrePass.cs.hlsl -T cs +REBLUR_Perf_DiffuseOcclusion_TemporalAccumulation.cs.hlsl -T cs +REBLUR_Perf_DiffuseSh_Blur.cs.hlsl -T cs +REBLUR_Perf_DiffuseSh_HistoryFix.cs.hlsl -T cs +REBLUR_Perf_DiffuseSh_PostBlur.cs.hlsl -T cs +REBLUR_Perf_DiffuseSh_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_DiffuseSh_PrePass.cs.hlsl -T cs +REBLUR_Perf_DiffuseSh_TemporalAccumulation.cs.hlsl -T cs +REBLUR_Perf_DiffuseSh_TemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularOcclusion_Blur.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularOcclusion_HistoryFix.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularOcclusion_PrePass.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularOcclusion_TemporalAccumulation.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularSh_Blur.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularSh_HistoryFix.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularSh_PostBlur.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularSh_PrePass.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecularSh_TemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecular_Blur.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecular_HistoryFix.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecular_HitDistReconstruction.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecular_PostBlur.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecular_PrePass.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecular_TemporalAccumulation.cs.hlsl -T cs +REBLUR_Perf_DiffuseSpecular_TemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_Diffuse_Blur.cs.hlsl -T cs +REBLUR_Perf_Diffuse_HistoryFix.cs.hlsl -T cs +REBLUR_Perf_Diffuse_HitDistReconstruction.cs.hlsl -T cs +REBLUR_Perf_Diffuse_HitDistReconstruction_5x5.cs.hlsl -T cs +REBLUR_Perf_Diffuse_PostBlur.cs.hlsl -T cs +REBLUR_Perf_Diffuse_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_Diffuse_PrePass.cs.hlsl -T cs +REBLUR_Perf_Diffuse_TemporalAccumulation.cs.hlsl -T cs +REBLUR_Perf_Diffuse_TemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_SpecularOcclusion_Blur.cs.hlsl -T cs +REBLUR_Perf_SpecularOcclusion_HistoryFix.cs.hlsl -T cs +REBLUR_Perf_SpecularOcclusion_HitDistReconstruction.cs.hlsl -T cs +REBLUR_Perf_SpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl -T cs +REBLUR_Perf_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_SpecularOcclusion_PrePass.cs.hlsl -T cs +REBLUR_Perf_SpecularOcclusion_TemporalAccumulation.cs.hlsl -T cs +REBLUR_Perf_SpecularSh_Blur.cs.hlsl -T cs +REBLUR_Perf_SpecularSh_HistoryFix.cs.hlsl -T cs +REBLUR_Perf_SpecularSh_PostBlur.cs.hlsl -T cs +REBLUR_Perf_SpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_SpecularSh_PrePass.cs.hlsl -T cs +REBLUR_Perf_SpecularSh_TemporalAccumulation.cs.hlsl -T cs +REBLUR_Perf_SpecularSh_TemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_Specular_Blur.cs.hlsl -T cs +REBLUR_Perf_Specular_HistoryFix.cs.hlsl -T cs +REBLUR_Perf_Specular_HitDistReconstruction.cs.hlsl -T cs +REBLUR_Perf_Specular_HitDistReconstruction_5x5.cs.hlsl -T cs +REBLUR_Perf_Specular_PostBlur.cs.hlsl -T cs +REBLUR_Perf_Specular_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_Perf_Specular_PrePass.cs.hlsl -T cs +REBLUR_Perf_Specular_TemporalAccumulation.cs.hlsl -T cs +REBLUR_Perf_Specular_TemporalStabilization.cs.hlsl -T cs +REBLUR_SpecularOcclusion_Blur.cs.hlsl -T cs +REBLUR_SpecularOcclusion_HistoryFix.cs.hlsl -T cs +REBLUR_SpecularOcclusion_HitDistReconstruction.cs.hlsl -T cs +REBLUR_SpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl -T cs +REBLUR_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_SpecularOcclusion_PrePass.cs.hlsl -T cs +REBLUR_SpecularOcclusion_TemporalAccumulation.cs.hlsl -T cs +REBLUR_SpecularSh_Blur.cs.hlsl -T cs +REBLUR_SpecularSh_CopyStabilizedHistory.cs.hlsl -T cs +REBLUR_SpecularSh_HistoryFix.cs.hlsl -T cs +REBLUR_SpecularSh_PostBlur.cs.hlsl -T cs +REBLUR_SpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_SpecularSh_PrePass.cs.hlsl -T cs +REBLUR_SpecularSh_SplitScreen.cs.hlsl -T cs +REBLUR_SpecularSh_TemporalAccumulation.cs.hlsl -T cs +REBLUR_SpecularSh_TemporalStabilization.cs.hlsl -T cs +REBLUR_Specular_Blur.cs.hlsl -T cs +REBLUR_Specular_CopyStabilizedHistory.cs.hlsl -T cs +REBLUR_Specular_HistoryFix.cs.hlsl -T cs +REBLUR_Specular_HitDistReconstruction.cs.hlsl -T cs +REBLUR_Specular_HitDistReconstruction_5x5.cs.hlsl -T cs +REBLUR_Specular_PostBlur.cs.hlsl -T cs +REBLUR_Specular_PostBlur_NoTemporalStabilization.cs.hlsl -T cs +REBLUR_Specular_PrePass.cs.hlsl -T cs +REBLUR_Specular_SplitScreen.cs.hlsl -T cs +REBLUR_Specular_TemporalAccumulation.cs.hlsl -T cs +REBLUR_Specular_TemporalStabilization.cs.hlsl -T cs +REBLUR_Validation.cs.hlsl -T cs +REFERENCE_SplitScreen.cs.hlsl -T cs +REFERENCE_TemporalAccumulation.cs.hlsl -T cs +RELAX_Diffuse_AntiFirefly.cs.hlsl -T cs +RELAX_Diffuse_Atrous.cs.hlsl -T cs +RELAX_Diffuse_AtrousSmem.cs.hlsl -T cs +RELAX_Diffuse_HistoryClamping.cs.hlsl -T cs +RELAX_Diffuse_HistoryFix.cs.hlsl -T cs +RELAX_Diffuse_HitDistReconstruction.cs.hlsl -T cs +RELAX_Diffuse_HitDistReconstruction_5x5.cs.hlsl -T cs +RELAX_Diffuse_PrePass.cs.hlsl -T cs +RELAX_Diffuse_SplitScreen.cs.hlsl -T cs +RELAX_Diffuse_TemporalAccumulation.cs.hlsl -T cs +RELAX_DiffuseSh_AntiFirefly.cs.hlsl -T cs +RELAX_DiffuseSh_Atrous.cs.hlsl -T cs +RELAX_DiffuseSh_AtrousSmem.cs.hlsl -T cs +RELAX_DiffuseSh_HistoryClamping.cs.hlsl -T cs +RELAX_DiffuseSh_HistoryFix.cs.hlsl -T cs +RELAX_DiffuseSh_PrePass.cs.hlsl -T cs +RELAX_DiffuseSh_SplitScreen.cs.hlsl -T cs +RELAX_DiffuseSh_TemporalAccumulation.cs.hlsl -T cs +RELAX_Specular_AntiFirefly.cs.hlsl -T cs +RELAX_Specular_Atrous.cs.hlsl -T cs +RELAX_Specular_AtrousSmem.cs.hlsl -T cs +RELAX_Specular_HistoryClamping.cs.hlsl -T cs +RELAX_Specular_HistoryFix.cs.hlsl -T cs +RELAX_Specular_HitDistReconstruction.cs.hlsl -T cs +RELAX_Specular_HitDistReconstruction_5x5.cs.hlsl -T cs +RELAX_Specular_PrePass.cs.hlsl -T cs +RELAX_Specular_SplitScreen.cs.hlsl -T cs +RELAX_Specular_TemporalAccumulation.cs.hlsl -T cs +RELAX_SpecularSh_AntiFirefly.cs.hlsl -T cs +RELAX_SpecularSh_Atrous.cs.hlsl -T cs +RELAX_SpecularSh_AtrousSmem.cs.hlsl -T cs +RELAX_SpecularSh_HistoryClamping.cs.hlsl -T cs +RELAX_SpecularSh_HistoryFix.cs.hlsl -T cs +RELAX_SpecularSh_PrePass.cs.hlsl -T cs +RELAX_SpecularSh_SplitScreen.cs.hlsl -T cs +RELAX_SpecularSh_TemporalAccumulation.cs.hlsl -T cs +RELAX_DiffuseSpecular_AntiFirefly.cs.hlsl -T cs +RELAX_DiffuseSpecular_Atrous.cs.hlsl -T cs +RELAX_DiffuseSpecular_AtrousSmem.cs.hlsl -T cs +RELAX_DiffuseSpecular_HistoryClamping.cs.hlsl -T cs +RELAX_DiffuseSpecular_HistoryFix.cs.hlsl -T cs +RELAX_DiffuseSpecular_HitDistReconstruction.cs.hlsl -T cs +RELAX_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl -T cs +RELAX_DiffuseSpecular_PrePass.cs.hlsl -T cs +RELAX_DiffuseSpecular_SplitScreen.cs.hlsl -T cs +RELAX_DiffuseSpecular_TemporalAccumulation.cs.hlsl -T cs +RELAX_DiffuseSpecularSh_AntiFirefly.cs.hlsl -T cs +RELAX_DiffuseSpecularSh_Atrous.cs.hlsl -T cs +RELAX_DiffuseSpecularSh_AtrousSmem.cs.hlsl -T cs +RELAX_DiffuseSpecularSh_HistoryClamping.cs.hlsl -T cs +RELAX_DiffuseSpecularSh_HistoryFix.cs.hlsl -T cs +RELAX_DiffuseSpecularSh_PrePass.cs.hlsl -T cs +RELAX_DiffuseSpecularSh_SplitScreen.cs.hlsl -T cs +RELAX_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl -T cs +RELAX_Validation.cs.hlsl -T cs +SIGMA_ShadowTranslucency_Blur.cs.hlsl -T cs +SIGMA_ShadowTranslucency_ClassifyTiles.cs.hlsl -T cs +SIGMA_ShadowTranslucency_PostBlur.cs.hlsl -T cs +SIGMA_ShadowTranslucency_SplitScreen.cs.hlsl -T cs +SIGMA_ShadowTranslucency_TemporalStabilization.cs.hlsl -T cs +SIGMA_Shadow_Blur.cs.hlsl -T cs +SIGMA_Shadow_ClassifyTiles.cs.hlsl -T cs +SIGMA_Shadow_PostBlur.cs.hlsl -T cs +SIGMA_Shadow_SmoothTiles.cs.hlsl -T cs +SIGMA_Shadow_SplitScreen.cs.hlsl -T cs +SIGMA_Shadow_TemporalStabilization.cs.hlsl -T cs +SpecularDeltaMv_Compute.cs.hlsl -T cs +SpecularReflectionMv_Compute.cs.hlsl -T cs diff --git a/Shaders/Include/Common.hlsli b/Shaders/Include/Common.hlsli index f54ac89e..35ab07fa 100644 --- a/Shaders/Include/Common.hlsli +++ b/Shaders/Include/Common.hlsli @@ -332,6 +332,26 @@ float2 GetHitDistanceWeightParams( float hitDist, float nonLinearAccumSpeed, flo return float2( a, -b ); } +// Weights params + +float2 GetRoughnessWeightParams( float roughness, float fraction ) +{ + float a = rcp( lerp( 0.01, 1.0, saturate( roughness * fraction ) ) ); + float b = roughness * a; + + return float2( a, -b ); +} + +float2 GetRoughnessWeightParamsSq( float roughness, float fraction ) +{ + return GetRoughnessWeightParams( roughness * roughness, fraction ); +} + +float2 GetCoarseRoughnessWeightParams( float roughness ) +{ + return float2( 1.0, -roughness ); +} + // Weights // IMPORTANT: @@ -365,6 +385,11 @@ float GetRoughnessWeight( float2 params, float roughness ) return _ComputeWeight( roughness, params.x, params.y ); } +float GetRoughnessWeightSq( float2 params, float roughness ) +{ + return GetRoughnessWeight( params, roughness * roughness ); +} + float GetHitDistanceWeight( float2 params, float hitDist ) { return _ComputeExponentialWeight( hitDist, params.x, params.y ); diff --git a/Shaders/Include/NRD.hlsli b/Shaders/Include/NRD.hlsli index 9b214041..237be6f4 100644 --- a/Shaders/Include/NRD.hlsli +++ b/Shaders/Include/NRD.hlsli @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -// NRD v4.0 +// NRD v4.1 //================================================================================================================================= // INPUT PARAMETERS @@ -58,85 +58,41 @@ float normHitDist: NOTE: if "roughness" is needed as an input parameter use is as "isDiffuse ? 1 : roughness" */ - // IMPORTANT: DO NOT MODIFY THIS FILE WITHOUT FULL RECOMPILATION OF NRD LIBRARY! +// IMPORTANT: DO NOT MODIFY THIS FILE WITHOUT FULL RECOMPILATION OF NRD LIBRARY! - #ifndef NRD_INCLUDED - #define NRD_INCLUDED - -#if( !defined( NRD_NORMAL_ENCODING ) || !defined( NRD_ROUGHNESS_ENCODING ) ) - #ifdef NRD_HEADER_ONLY - #error "Include 'NRDEncoding.hlsli' file beforehand to get a match with the settings NRD has been compiled with. Or define encoding variants using Cmake parameters." - #else - #error "For NRD project compilation, encoding variants must be set using Cmake parameters." - #endif -#endif +#ifndef NRD_INCLUDED +#define NRD_INCLUDED //================================================================================================================================= -// BINDINGS +// SETTINGS //================================================================================================================================= +// ( Optional ) Register spaces #define NRD_CONSTANT_BUFFER_SPACE_INDEX 0 #define NRD_SAMPLERS_SPACE_INDEX 0 #define NRD_RESOURCES_SPACE_INDEX 0 -#define NRD_MERGE_TOKENS_( _0, _1 ) _0 ## _1 -#define NRD_MERGE_TOKENS( _0, _1 ) NRD_MERGE_TOKENS_( _0, _1 ) - -#if( defined NRD_COMPILER_UNREAL_ENGINE ) - - #ifndef NRD_CS_MAIN - #define NRD_CS_MAIN main - #endif - - #define NRD_EXPORT - - #define NRD_CONSTANTS_START - #define NRD_CONSTANT( constantType, constantName ) constantType constantName; - #define NRD_CONSTANTS_END - - #define NRD_INPUT_TEXTURE_START - #define NRD_INPUT_TEXTURE( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName; - #define NRD_INPUT_TEXTURE_END +// ( Optional ) Entry point +#ifndef NRD_CS_MAIN + #define NRD_CS_MAIN main +#endif - #define NRD_OUTPUT_TEXTURE_START - #define NRD_OUTPUT_TEXTURE( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName; - #define NRD_OUTPUT_TEXTURE_END +//================================================================================================================================= +// BINDINGS +//================================================================================================================================= - #define NRD_SAMPLER_START - #define NRD_SAMPLER( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName; - #define NRD_SAMPLER_END +#ifndef __cplusplus -#elif( defined NRD_COMPILER_FXC ) +#define NRD_MERGE_TOKENS_( _0, _1 ) _0 ## _1 +#define NRD_MERGE_TOKENS( _0, _1 ) NRD_MERGE_TOKENS_( _0, _1 ) - #ifndef NRD_CS_MAIN - #define NRD_CS_MAIN main - #endif +// Custom engine that has already defined all the macros +#if( defined( NRD_INPUT_TEXTURE ) && defined( NRD_OUTPUT_TEXTURE ) && defined( NRD_CONSTANTS_START ) && defined( NRD_CONSTANT ) && defined( NRD_CONSTANTS_END ) ) #define NRD_EXPORT - #define NRD_CONSTANTS_START cbuffer globalConstants : register( b0 ) { - #define NRD_CONSTANT( constantType, constantName ) constantType constantName; - #define NRD_CONSTANTS_END }; - - #define NRD_INPUT_TEXTURE_START - #define NRD_INPUT_TEXTURE( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName : register( regName ## bindingIndex ); - #define NRD_INPUT_TEXTURE_END - - #define NRD_OUTPUT_TEXTURE_START - #define NRD_OUTPUT_TEXTURE( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName : register( regName ## bindingIndex ); - #define NRD_OUTPUT_TEXTURE_END - - #define NRD_SAMPLER_START - #define NRD_SAMPLER( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName : register( regName ## bindingIndex ); - #define NRD_SAMPLER_END - -#elif( defined NRD_COMPILER_DXC ) - - #ifndef NRD_CS_MAIN - #define NRD_CS_MAIN main - #endif - - #define NRD_EXPORT +// DXC +#elif( defined( NRD_COMPILER_DXC ) || defined( __hlsl_dx_compiler ) ) #define NRD_CONSTANTS_START cbuffer globalConstants : register( b0, NRD_MERGE_TOKENS( space, NRD_CONSTANT_BUFFER_SPACE_INDEX ) ) { #define NRD_CONSTANT( constantType, constantName ) constantType constantName; @@ -154,9 +110,11 @@ NOTE: if "roughness" is needed as an input parameter use is as "isDiffuse ? 1 : #define NRD_SAMPLER( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName : register( regName ## bindingIndex, NRD_MERGE_TOKENS( space, NRD_SAMPLERS_SPACE_INDEX ) ); #define NRD_SAMPLER_END -#elif( defined NRD_COMPILER_PSSLC ) + #define NRD_EXPORT + +// PlayStation +#elif( defined( NRD_COMPILER_PSSLC ) || defined( __PSSL__ ) ) - // Helpers #define EXPAND( x ) x #define GET_NTH_MACRO_4_arg( a, b, c, d, NAME, ... ) NAME #define GET_NTH_MACRO_3_arg( a, b, c, NAME, ... ) NAME @@ -167,16 +125,6 @@ NOTE: if "roughness" is needed as an input parameter use is as "isDiffuse ? 1 : #define GatherGreen3( a, b, c ) GatherGreen( ( a ), ( b ), int2( c ) ) #define GatherGreen2( a, b ) GatherGreen( ( a ), ( b ) ) - #ifndef NRD_CS_MAIN - #define NRD_CS_MAIN main - #endif - - #ifdef EXPORT_NAME - #define NRD_EXPORT [ CxxSymbol( EXPORT_NAME ) ] - #else - #define NRD_EXPORT - #endif - #define NRD_CONSTANTS_START ConstantBuffer globalConstants : register( b0 ) { #define NRD_CONSTANT( constantType, constantName ) constantType constantName; #define NRD_CONSTANTS_END }; @@ -211,25 +159,71 @@ NOTE: if "roughness" is needed as an input parameter use is as "isDiffuse ? 1 : #define InterlockedMax( ... ) AtomicMax( __VA_ARGS__ ) #define unorm -#elif( defined( NRD_INPUT_TEXTURE ) && defined( NRD_OUTPUT_TEXTURE ) && defined( NRD_CONSTANTS_START ) && defined( NRD_CONSTANT ) && defined( NRD_CONSTANTS_END ) ) - - #ifndef NRD_CS_MAIN - #define NRD_CS_MAIN main + #ifdef EXPORT_NAME + #define NRD_EXPORT [ CxxSymbol( EXPORT_NAME ) ] + #else + #define NRD_EXPORT #endif +// Unreal Engine +#elif( defined( NRD_COMPILER_UNREAL_ENGINE ) ) // TODO: is there a predefined macro in UE? + + #define NRD_CONSTANTS_START + #define NRD_CONSTANT( constantType, constantName ) constantType constantName; + #define NRD_CONSTANTS_END + + #define NRD_INPUT_TEXTURE_START + #define NRD_INPUT_TEXTURE( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName; + #define NRD_INPUT_TEXTURE_END + + #define NRD_OUTPUT_TEXTURE_START + #define NRD_OUTPUT_TEXTURE( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName; + #define NRD_OUTPUT_TEXTURE_END + + #define NRD_SAMPLER_START + #define NRD_SAMPLER( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName; + #define NRD_SAMPLER_END + #define NRD_EXPORT - // Custom engine that has already defined all the macros +// FXC +#else // TODO: is there a predefined macro in FXC? + + #define NRD_CONSTANTS_START cbuffer globalConstants : register( b0 ) { + #define NRD_CONSTANT( constantType, constantName ) constantType constantName; + #define NRD_CONSTANTS_END }; + + #define NRD_INPUT_TEXTURE_START + #define NRD_INPUT_TEXTURE( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName : register( regName ## bindingIndex ); + #define NRD_INPUT_TEXTURE_END + + #define NRD_OUTPUT_TEXTURE_START + #define NRD_OUTPUT_TEXTURE( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName : register( regName ## bindingIndex ); + #define NRD_OUTPUT_TEXTURE_END + + #define NRD_SAMPLER_START + #define NRD_SAMPLER( resourceType, resourceName, regName, bindingIndex ) resourceType resourceName : register( regName ## bindingIndex ); + #define NRD_SAMPLER_END + + #define NRD_EXPORT -#elif( !defined( NRD_HEADER_ONLY ) ) - #error "Define one of NRD_COMPILER_[FXC/DXC/PSSLC/UNREAL_ENGINE] or add custom bindings (use already defined platforms as a reference). Or define NRD_HEADER_ONLY to use this file as a header file only." #endif //================================================================================================================================= // PRIVATE //================================================================================================================================= -#if !defined(__cplusplus) +#ifdef NRD_INTERNAL + #pragma pack_matrix( column_major ) +#endif + +#if( !defined( NRD_NORMAL_ENCODING ) || !defined( NRD_ROUGHNESS_ENCODING ) ) + #ifdef NRD_INTERNAL + #error "For NRD project compilation, encoding variants must be set using Cmake parameters." + #else + #error "Include 'NRDEncoding.hlsli' file beforehand to get a match with the settings NRD has been compiled with. Or define encoding variants using Cmake parameters." + #endif +#endif // Normal encoding variants ( match NormalEncoding ) #define NRD_NORMAL_ENCODING_RGBA8_UNORM 0 @@ -248,6 +242,8 @@ NOTE: if "roughness" is needed as an input parameter use is as "isDiffuse ? 1 : #define NRD_FP16_VIEWZ_SCALE 0.125 // TODO: tuned for meters, needs to be scaled down for cm and mm #define NRD_PI 3.14159265358979323846 #define NRD_EPS 1e-6 +#define NRD_REJITTER_VIEWZ_THRESHOLD 0.01 // normalized % +#define NRD_ROUGHNESS_EPS sqrt( sqrt( NRD_EPS ) ) // "m2" fitting in FP32 to "linear roughness" // ViewZ packing into FP16 float _NRD_PackViewZ( float z ) @@ -305,84 +301,187 @@ float3 _NRD_YCoCgToLinear( float3 color ) return max( r, 0.0 ); } -// Hit distance normalization -float _REBLUR_GetHitDistanceNormalization( float viewZ, float4 hitDistParams, float roughness = 1.0 ) +float3 _NRD_YCoCgToLinear_Corrected( float Y, float Y0, float2 CoCg ) { - return ( hitDistParams.x + abs( viewZ ) * hitDistParams.y ) * lerp( 1.0, hitDistParams.z, saturate( exp2( hitDistParams.w * roughness * roughness ) ) ); + Y = max( Y, 0.0 ); + CoCg *= ( Y + NRD_EPS ) / ( Y0 + NRD_EPS ); + + return _NRD_YCoCgToLinear( float3( Y, CoCg ) ); } -//================================================================================================================================= -// SPHERICAL HARMONICS -//================================================================================================================================= +// GGX dominant direction +float _NRD_GetSpecularDominantFactor( float NoV, float roughness ) +{ + float a = 0.298475 * log( 39.4115 - 39.0029 * roughness ); + float dominantFactor = pow( saturate( 1.0 - NoV ), 10.8649 ) * ( 1.0 - a ) + a; -// Spherical harmonics -// https://media.contentapi.ea.com/content/dam/eacom/frostbite/files/gdc2018-precomputedgiobalilluminationinfrostbite.pdf + return saturate( dominantFactor ); +} -struct NRD_SH +float3 _NRD_GetSpecularDominantDirection( float3 N, float3 V, float dominantFactor ) { - float3 c0_chroma; - float3 c1; - float normHitDist; -}; + float3 R = reflect( -V, N ); + float3 D = lerp( N, R, dominantFactor ); -NRD_SH NRD_SH_Create( float3 color, float3 direction, float normHitDist = 1.0 ) + return normalize( D ); +} + +float _NRD_GetSpecMagicCurve( float roughness ) { - float3 YCoCg = _NRD_LinearToYCoCg( color ); + return 1.0 - exp2( -30.0 * roughness * roughness ); +} - NRD_SH sh; - sh.c0_chroma = YCoCg; - sh.c1 = direction * YCoCg.x; - sh.normHitDist = normHitDist; +// BRDF +float _NRD_Pow5( float x ) +{ + return pow( saturate( 1.0 - x ), 5.0 ); +} - return sh; +float _NRD_FresnelTerm( float Rf0, float VoNH ) +{ + return Rf0 + ( 1.0 - Rf0 ) * _NRD_Pow5( VoNH ); } -float3 NRD_SH_ExtractColor( NRD_SH sh ) +float _NRD_DistributionTerm( float roughness, float NoH ) { - return _NRD_YCoCgToLinear( sh.c0_chroma ); + float m = roughness * roughness; + float m2 = m * m; + + float t = ( NoH * m2 - NoH ) * NoH + 1.0; + float a = m / t; + float d = a * a; + + return d / NRD_PI; } -float3 NRD_SH_ExtractDirection( NRD_SH sh ) +float _NRD_GeometryTerm( float roughness, float NoL, float NoV ) { - return sh.c1 / max( length( sh.c1 ), NRD_EPS ); + float m = roughness * roughness; + float m2 = m * m; + + float a = NoL + sqrt( saturate( ( NoL - m2 * NoL ) * NoL + m2 ) ); + float b = NoV + sqrt( saturate( ( NoV - m2 * NoV ) * NoV + m2 ) ); + + return 1.0 / ( a * b ); } -void NRD_SH_Add( inout NRD_SH result, NRD_SH x ) +float _NRD_DiffuseTerm( float roughness, float NoL, float NoV, float VoH ) { - result.c0_chroma += x.c0_chroma; - result.c1 += x.c1; + float m = roughness * roughness; + + float f = 2.0 * VoH * VoH * m - 0.5; + float FdV = f * _NRD_Pow5( NoV ) + 1.0; + float FdL = f * _NRD_Pow5( NoL ) + 1.0; + float d = FdV * FdL; + + return d / NRD_PI; } -void NRD_SH_Mul( inout NRD_SH result, float x ) +float2 _NRD_ComputeBrdfs( float3 Ld, float3 Ls, float3 N, float3 V, float Rf0, float roughness ) { - result.c0_chroma *= x; - result.c1 *= x; + float2 result; + float NoV = abs( dot( N, V ) ); + + // Diffuse + { + float3 H = normalize( Ld + V ); + + float NoL = saturate( dot( N, Ld ) ); + float VoH = saturate( dot( V, H ) ); + + float F = _NRD_FresnelTerm( Rf0, VoH ); + float Kdiff = _NRD_DiffuseTerm( roughness, NoL, NoV, VoH ); + + result.x = ( 1.0 - F ) * Kdiff * NoL; + } + + // Specular + { + float3 H = normalize( Ls + V ); + H = normalize( lerp( N, H, roughness ) ); // Fixed H // TODO: roughness => smc? + + float NoL = saturate( dot( N, Ls ) ); + float NoH = saturate( dot( N, H ) ); + float VoH = saturate( dot( V, H ) ); + + float F = _NRD_FresnelTerm( Rf0, VoH ); + float D = _NRD_DistributionTerm( roughness, NoH ); + float G = _NRD_GeometryTerm( roughness, NoL, NoV ); + + result.y = F * D * G * NoL; + } + + return result; } -float3 NRD_SH_ResolveColor( NRD_SH sh, float3 N ) +// Hit distance normalization +float _REBLUR_GetHitDistanceNormalization( float viewZ, float4 hitDistParams, float roughness = 1.0 ) { - float Y = 0.5 * dot( N, sh.c1 ) + 0.25 * sh.c0_chroma.x; + return ( hitDistParams.x + abs( viewZ ) * hitDistParams.y ) * lerp( 1.0, hitDistParams.z, saturate( exp2( hitDistParams.w * roughness * roughness ) ) ); +} - // 2 - hemisphere, 4 - sphere - Y *= 2.0; +//============================================================================================================================================== +// SPHERICAL HARMONICS: https://media.contentapi.ea.com/content/dam/eacom/frostbite/files/gdc2018-precomputedgiobalilluminationinfrostbite.pdf +// SPHERICAL GAUSSIAN: https://therealmjp.github.io/posts/sg-series-part-1-a-brief-and-incomplete-history-of-baked-lighting-representations/ +//============================================================================================================================================== - // Corrected color reproduction - Y = max( Y, 0.0 ); +struct NRD_SG +{ + float c0; + float2 chroma; + float normHitDist; - float modifier = ( Y + NRD_EPS ) / ( sh.c0_chroma.x + NRD_EPS ); - float2 CoCg = sh.c0_chroma.yz * modifier; + float3 c1; + float sharpness; +}; - return _NRD_YCoCgToLinear( float3( Y, CoCg ) ); +NRD_SG _NRD_SG_Create( float3 radiance, float3 direction, float normHitDist ) +{ + float3 YCoCg = _NRD_LinearToYCoCg( radiance ); + + NRD_SG sg; + sg.c0 = YCoCg.x; + sg.chroma = YCoCg.yz; + sg.c1 = direction * YCoCg.x; + sg.normHitDist = normHitDist; + sg.sharpness = 0.0; // TODO: currently not used + + return sg; +} + +float3 _NRD_SG_ExtractDirection( NRD_SG sg ) +{ + return sg.c1 / max( length( sg.c1 ), NRD_EPS ); +} + +float _NRD_SG_IntegralApprox( NRD_SG sg ) +{ + return 2.0 * NRD_PI * ( sg.c0 / sg.sharpness ); +} + +float _NRD_SG_Integral( NRD_SG sg ) +{ + float expTerm = 1.0 - exp( -2.0 * sg.sharpness ); + + return _NRD_SG_IntegralApprox( sg ) * expTerm; +} + +float _NRD_SG_InnerProduct( NRD_SG a, NRD_SG b ) +{ + // Integral of the product of two SGs + float d = length( a.sharpness * _NRD_SG_ExtractDirection( a ) + b.sharpness * _NRD_SG_ExtractDirection( b ) ); + float c = exp( d - a.sharpness - b.sharpness ); + c *= 1.0 - exp( -2.0 * d ); + c /= d; + + // Original version is without "saturate" ( needed to avoid rare fireflies in our case, energy is already preserved ) + return NRD_PI * saturate( 2.0 * c * a.c0 ) * b.c0; } //================================================================================================================================= -// FRONT-END +// FRONT-END - GENERAL //================================================================================================================================= -//======== -// NRD -//======== - // This function is used in all denoisers to decode normal, roughness and optional materialID // IN_NORMAL_ROUGHNESS => X float4 NRD_FrontEnd_UnpackNormalAndRoughness( float4 p, out float materialID ) @@ -454,9 +553,9 @@ float4 NRD_FrontEnd_PackNormalAndRoughness( float3 N, float roughness, uint mate return p; } -//======== -// REBLUR -//======== +//================================================================================================================================= +// FRONT-END - REBLUR +//================================================================================================================================= // This function returns AO / SO which REBLUR can decode back to "hit distance" internally float REBLUR_FrontEnd_GetNormHitDist( float hitDist, float viewZ, float4 hitDistParams, float roughness = 1.0 ) @@ -501,13 +600,13 @@ float4 REBLUR_FrontEnd_PackSh( float3 radiance, float normHitDist, float3 direct if( normHitDist != 0 ) normHitDist = max( normHitDist, NRD_FP16_MIN ); - NRD_SH sh = NRD_SH_Create( radiance, direction, normHitDist ); + NRD_SG sg = _NRD_SG_Create( radiance, direction, normHitDist ); // IN_DIFF_SH0 / IN_SPEC_SH0 - float4 out0 = float4( sh.c0_chroma, sh.normHitDist ); + float4 out0 = float4( sg.c0, sg.chroma, sg.normHitDist ); // IN_DIFF_SH1 / IN_SPEC_SH1 - out1 = float4( sh.c1, 0.0 ); + out1 = float4( sg.c1, sg.sharpness ); return out0; } @@ -526,14 +625,14 @@ float4 REBLUR_FrontEnd_PackDirectionalOcclusion( float3 direction, float normHit if( normHitDist != 0 ) normHitDist = max( normHitDist, NRD_FP16_MIN ); - NRD_SH sh = NRD_SH_Create( normHitDist, direction ); + NRD_SG sg = _NRD_SG_Create( normHitDist, direction, normHitDist ); - return float4( sh.c1, sh.c0_chroma.x ); + return float4( sg.c1, sg.c0 ); } -//======== -// RELAX -//======== +//================================================================================================================================= +// FRONT-END - RELAX +//================================================================================================================================= // X => IN_DIFF_RADIANCE_HITDIST // X => IN_SPEC_RADIANCE_HITDIST @@ -552,9 +651,32 @@ float4 RELAX_FrontEnd_PackRadianceAndHitDist( float3 radiance, float hitDist, bo return float4( radiance, hitDist ); } -//======== -// SIGMA -//======== +// X => IN_DIFF_SH0 and IN_DIFF_SH1 +// X => IN_SPEC_SH0 and IN_SPEC_SH1 +float4 RELAX_FrontEnd_PackSh( float3 radiance, float hitDist, float3 direction, out float4 out1, bool sanitize = true ) +{ + if( sanitize ) + { + radiance = any( isnan( radiance ) | isinf( radiance ) ) ? 0 : clamp( radiance, 0, NRD_FP16_MAX ); + hitDist = ( isnan( hitDist ) | isinf( hitDist ) ) ? 0 : clamp( hitDist, 0, NRD_FP16_MAX ); + } + + // "0" is reserved to mark "no data" samples, skipped due to probabilistic sampling + if( hitDist != 0 ) + hitDist = max( hitDist, NRD_FP16_MIN ); + + // IN_DIFF_SH0 / IN_SPEC_SH0 + float4 out0 = float4( radiance, hitDist ); + + // IN_DIFF_SH1 / IN_SPEC_SH1 + out1 = float4( direction * _NRD_Luminance( radiance ), 0 ); + + return out0; +} + +//================================================================================================================================= +// FRONT-END - SIGMA +//================================================================================================================================= #define SIGMA_MIN_DISTANCE 0.0001 // not 0, because it means "NoL < 0, stop processing" @@ -631,13 +753,9 @@ float2 SIGMA_FrontEnd_MultiLightEnd( float viewZ, SIGMA_MULTILIGHT_DATATYPE mult } //================================================================================================================================= -// BACK-END +// BACK-END - REBLUR //================================================================================================================================= -//======== -// REBLUR -//======== - // OUT_DIFF_RADIANCE_HITDIST => X // OUT_SPEC_RADIANCE_HITDIST => X float4 REBLUR_BackEnd_UnpackRadianceAndNormHitDist( float4 data ) @@ -649,30 +767,34 @@ float4 REBLUR_BackEnd_UnpackRadianceAndNormHitDist( float4 data ) // OUT_DIFF_SH0 and OUT_DIFF_SH1 => X // OUT_SPEC_SH0 and OUT_SPEC_SH1 => X -NRD_SH REBLUR_BackEnd_UnpackSh( float4 sh0, float4 sh1 ) +NRD_SG REBLUR_BackEnd_UnpackSh( float4 sh0, float4 sh1 ) { - NRD_SH sh; - sh.c0_chroma = sh0.xyz; - sh.c1 = sh1.xyz; - sh.normHitDist = sh0.w; - - return sh; + NRD_SG sg; + sg.c0 = sh0.x; + sg.chroma = sh0.yz; + sg.normHitDist = sh0.w; + sg.c1 = sh1.xyz; + sg.sharpness = sh1.w; + + return sg; } // OUT_DIFF_DIRECTION_HITDIST => X -NRD_SH REBLUR_BackEnd_UnpackDirectionalOcclusion( float4 data ) +NRD_SG REBLUR_BackEnd_UnpackDirectionalOcclusion( float4 data ) { - NRD_SH sh; - sh.c0_chroma = float3( data.w, 0.0, 0.0 ); - sh.c1 = data.xyz; - sh.normHitDist = NRD_SH_ExtractColor( sh ).x; - - return sh; + NRD_SG sg; + sg.c0 = data.w; + sg.chroma = float2( 0, 0 ); + sg.normHitDist = data.w; + sg.c1 = data.xyz; + sg.sharpness = 0.0; + + return sg; } -//======== -// RELAX -//======== +//================================================================================================================================= +// BACK-END - RELAX +//================================================================================================================================= // OUT_DIFF_RADIANCE_HITDIST => X // OUT_SPEC_RADIANCE_HITDIST => X @@ -681,9 +803,23 @@ float4 RELAX_BackEnd_UnpackRadiance( float4 color ) return color; } -//======== -// SIGMA -//======== +// OUT_DIFF_SH0 and OUT_DIFF_SH1 => X +// OUT_SPEC_SH0 and OUT_SPEC_SH1 => X +NRD_SG RELAX_BackEnd_UnpackSh( float4 sh0, float4 sh1 ) +{ + NRD_SG sg; + sg.c0 = sh0.x; + sg.chroma = sh0.yz; + sg.normHitDist = sh0.w; + sg.c1 = sh1.xyz; + sg.sharpness = sh1.w; + + return sg; +} + +//================================================================================================================================= +// BACK-END - SIGMA +//================================================================================================================================= // OUT_SHADOW_TRANSLUCENCY => X // SIGMA_SHADOW: @@ -696,6 +832,197 @@ float4 RELAX_BackEnd_UnpackRadiance( float4 color ) // float3 finalShadowMoreExotic = shadowData.yzw; #define SIGMA_BackEnd_UnpackShadow( color ) ( color * color ) +//================================================================================================================================= +// BACK-END - HIGH QUALITY RESOLVE +//================================================================================================================================= + +float3 NRD_SG_ExtractColor( NRD_SG sg ) +{ + return _NRD_YCoCgToLinear( float3( sg.c0, sg.chroma ) ); +} + +float3 NRD_SG_ExtractDirection( NRD_SG sg ) +{ + return _NRD_SG_ExtractDirection( sg ); +} + +float NRD_SG_ExtractRoughnessAA( NRD_SG sg ) +{ + return sg.sharpness; +} + +float3 NRD_SG_ResolveDiffuse( NRD_SG sg, float3 N ) +{ + // https://therealmjp.github.io/posts/sg-series-part-3-diffuse-lighting-from-an-sg-light-source/ + +#if 1 + // Numerical integration of the resulting irradiance from an SG diffuse light source ( with sharpness of 4.0 ) + sg.sharpness = 4.0; + + float c0 = 0.36; + float c1 = 1.0 / ( 4.0 * c0 ); + + float e = exp( -sg.sharpness ); + float e2 = e * e; + float r = rcp( sg.sharpness ); + + float scale = 1.0 + 2.0 * e2 - r; + float bias = ( e - e2 ) * r - e2; + + float NoL = dot( N, _NRD_SG_ExtractDirection( sg ) ); + float x = sqrt( saturate( 1.0 - scale ) ); + float x0 = c0 * NoL; + float x1 = c1 * x; + float n = x0 + x1; + + float y = saturate( NoL ); + if( abs( x0 ) <= x1 ) + y = n * n / x; + + float Y = scale * y + bias; + Y *= _NRD_SG_IntegralApprox( sg ); +#else + // "SG light" sharpness + sg.sharpness = 2.0; // TODO: another sharpness = another normalization needed... + + // Approximate NDF + NRD_SG ndf = ( NRD_SG )0; + ndf.c0 = 1.0; + ndf.c1 = N; + ndf.sharpness = 2.0; + + // Non-magic scale + ndf.c0 *= 0.75; + + // Multiply two SGs and integrate the result + float Y = _NRD_SG_InnerProduct( ndf, sg ); +#endif + + return _NRD_YCoCgToLinear_Corrected( Y, sg.c0, sg.chroma ); +} + +float3 NRD_SG_ResolveSpecular( NRD_SG sg, float3 N, float3 V, float roughness ) +{ + // https://therealmjp.github.io/posts/sg-series-part-4-specular-lighting-from-an-sg-light-source/ + + // Clamp roughness to avoid numerical imprecision + roughness = max( roughness, NRD_ROUGHNESS_EPS ); + + // "SG light" sharpness + sg.sharpness = 2.0; // TODO: another sharpness = another normalization needed... + + // Approximate NDF + float3 H = normalize( _NRD_SG_ExtractDirection( sg ) + V ); + H = normalize( lerp( N, H, roughness ) ); // Fixed H // TODO: roughness => smc? + + float m = roughness * roughness; + float m2 = m * m; + + NRD_SG ndf = ( NRD_SG )0; + ndf.c0 = 1.0 / ( NRD_PI * m2 ); + ndf.c1 = H; + ndf.sharpness = 2.0 / m2; + + // Non-magic scale + ndf.c0 *= lerp( 1.0, 0.75 * 2.0 * NRD_PI, m2 ); + + // Warp NDF + NRD_SG ndfWarped; + ndfWarped.c1 = reflect( -V, ndf.c1 ); + ndfWarped.c0 = ndf.c0; + ndfWarped.sharpness = ndf.sharpness / ( 4.0 * abs( dot( ndf.c1, V ) ) + NRD_EPS ); + + // Cosine term & visibility term evaluated at the center of the warped BRDF lobe + float NoV = abs( dot( N, V ) ); + float NoL = saturate( dot( N, ndfWarped.c1 ) ); + + ndfWarped.c0 *= NoL; + ndfWarped.c0 *= _NRD_GeometryTerm( roughness, NoL, NoV ); + + // Multiply two SGs and integrate the result + float Y = _NRD_SG_InnerProduct( ndfWarped, sg ); + + return _NRD_YCoCgToLinear_Corrected( Y, sg.c0, sg.chroma ); +} + +/* +Offsets: +e = int2( 1, 0 ) +w = int2(-1, 0 ) +n = int2( 0, 1 ) +s = int2( 0, -1 ) +*/ +float2 NRD_SG_ReJitter( + NRD_SG diffSg, NRD_SG specSg, + float3 Rf0, float3 V, float roughness, + float Z, float Ze, float Zw, float Zn, float Zs, + float3 N, float3 Ne, float3 Nw, float3 Nn, float3 Ns +) +{ + // Clamp roughness to avoid numerical imprecision + roughness = max( roughness, NRD_ROUGHNESS_EPS ); + + // Extract Rf0 and diff & spec dominant light directions + float rf0 = _NRD_Luminance( Rf0 ); + float3 Ld = _NRD_SG_ExtractDirection( diffSg ); + float3 Ls = _NRD_SG_ExtractDirection( specSg ); + + // Ls is accumulated, ideally it shouldn't for low roughness, but it's not a bug on the NRD side. + // The hack below is not needed if stochastic per-pixel jittering is used. Otherwise, the best approach + // is to resolve against jittered "view" vector. Despite that this approach looks very biased, it doesn't + // changes the energy of the output signal + float smc = _NRD_GetSpecMagicCurve( roughness ); + Ls = normalize( lerp( V, Ls, smc ) ); + + // BRDF at center + float2 brdfCenter = _NRD_ComputeBrdfs( Ld, Ls, N, V, rf0, roughness ); + + // BRDFs at neighbors + float2 brdfAverage = _NRD_ComputeBrdfs( Ld, Ls, Ne, V, rf0, roughness ); + brdfAverage += _NRD_ComputeBrdfs( Ld, Ls, Nn, V, rf0, roughness ); + brdfAverage += _NRD_ComputeBrdfs( Ld, Ls, Nw, V, rf0, roughness ); + brdfAverage += _NRD_ComputeBrdfs( Ld, Ls, Ns, V, rf0, roughness ); + + // Viewing angle corrected Z threshold + float NoV = abs( dot( N, V ) ); + float zThreshold = NRD_REJITTER_VIEWZ_THRESHOLD * abs( Z ) / ( NoV * 0.95 + 0.05 ); + + // Sum of all weights + // Exploit: out of screen fetches return "0", which auto-disables resolve on screen edges + uint sum = abs( Ze - Z ) < zThreshold && dot( Ne, N ) > 0.0 ? 1 : 0; + sum += abs( Zn - Z ) < zThreshold && dot( Nn, N ) > 0.0 ? 1 : 0; + sum += abs( Zw - Z ) < zThreshold && dot( Nw, N ) > 0.0 ? 1 : 0; + sum += abs( Zs - Z ) < zThreshold && dot( Ns, N ) > 0.0 ? 1 : 0; + + // Jacobian + float2 f = ( brdfCenter * 4.0 + NRD_EPS ) / ( brdfAverage + NRD_EPS ); + + // Use re-jitter only if all samples are valid to minimize ringing + return sum != 4 ? 1.0 : clamp( f, 1.0 / NRD_PI, NRD_PI ); +} + +//================================================================================================================================= +// SPHERICAL HARMONICS ( MEDIUM QUALITY ) +//================================================================================================================================= + +float3 NRD_SH_ResolveDiffuse( NRD_SG sh, float3 N ) +{ + float Y = dot( N, sh.c1 ) + 0.5 * sh.c0; + + return _NRD_YCoCgToLinear_Corrected( Y, sh.c0, sh.chroma ); +} + +float3 NRD_SH_ResolveSpecular( NRD_SG sh, float3 N, float3 V, float roughness ) +{ + float NoV = abs( dot( N, V ) ); + float f = _NRD_GetSpecularDominantFactor( NoV, roughness ); + float3 D = _NRD_GetSpecularDominantDirection( N, V, f ); + + float Y = dot( D, sh.c1 ) + 0.5 * sh.c0; + + return _NRD_YCoCgToLinear_Corrected( Y, sh.c0, sh.chroma ); +} + //================================================================================================================================= // MISC //================================================================================================================================= @@ -714,6 +1041,6 @@ float REBLUR_GetHitDist( float normHitDist, float viewZ, float4 hitDistParams, f return normHitDist * scale; } -#endif +#endif // __cplusplus -#endif +#endif // NRD_INCLUDED diff --git a/Shaders/Include/REBLUR/REBLUR_Common.hlsli b/Shaders/Include/REBLUR/REBLUR_Common.hlsli index 674a8733..3a099338 100644 --- a/Shaders/Include/REBLUR/REBLUR_Common.hlsli +++ b/Shaders/Include/REBLUR/REBLUR_Common.hlsli @@ -386,19 +386,6 @@ float2x3 GetKernelBasis( float3 D, float3 N, float NoD, float roughness = 1.0, f // Encoding precision aware weight functions ( for reprojection ) -float GetEncodingAwareRoughnessWeights( float roughnessCurr, float roughnessPrev, float fraction ) -{ - float a = rcp( lerp( 0.01, 1.0, saturate( roughnessCurr * fraction ) ) ); - float d = abs( roughnessPrev - roughnessCurr ); - - float w = STL::Math::SmoothStep01( 1.0 - ( d - REBLUR_ROUGHNESS_ULP ) * a ); - - // Needed to mitigate imprecision issues - w = STL::Math::SmoothStep( 0.05, 0.95, w ); - - return w; -} - float GetEncodingAwareNormalWeight( float3 Ncurr, float3 Nprev, float maxAngle, float angleThreshold = 0.0 ) { // Anything below "angleThreshold" is ignored @@ -427,19 +414,6 @@ float GetNormalWeightParams( float nonLinearAccumSpeed, float fraction, float ro return 1.0 / max( angle, REBLUR_NORMAL_ULP ); } -float2 GetRoughnessWeightParams( float roughness, float fraction ) -{ - float a = rcp( lerp( 0.01, 1.0, saturate( roughness * fraction ) ) ); - float b = roughness * a; - - return float2( a, -b ); -} - -float2 GetCoarseRoughnessWeightParams( float roughness ) -{ - return float2( 1.0, -roughness ); -} - float2 GetTemporalAccumulationParams( float isInScreenMulFootprintQuality, float accumSpeed ) { float w = isInScreenMulFootprintQuality; diff --git a/Shaders/Include/REBLUR/REBLUR_Common_SpecularSpatialFilter.hlsli b/Shaders/Include/REBLUR/REBLUR_Common_SpecularSpatialFilter.hlsli index 1769edd9..85c423ed 100644 --- a/Shaders/Include/REBLUR/REBLUR_Common_SpecularSpatialFilter.hlsli +++ b/Shaders/Include/REBLUR/REBLUR_Common_SpecularSpatialFilter.hlsli @@ -200,14 +200,14 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. spec += s * w; #ifdef REBLUR_SH float4 sh = gIn_SpecSh.SampleLevel( gNearestClamp, checkerboardUvScaled, 0 ); - specSh += sh * w; + specSh.xyz += sh.xyz * w; #endif } float invSum = STL::Math::PositiveRcp( sum ); spec *= invSum; #ifdef REBLUR_SH - specSh *= invSum; + specSh.xyz *= invSum; #endif #if( REBLUR_SPATIAL_MODE == REBLUR_PRE_BLUR ) diff --git a/Shaders/Include/REBLUR/REBLUR_Config.hlsli b/Shaders/Include/REBLUR/REBLUR_Config.hlsli index 8e51844d..337e4010 100644 --- a/Shaders/Include/REBLUR/REBLUR_Config.hlsli +++ b/Shaders/Include/REBLUR/REBLUR_Config.hlsli @@ -111,10 +111,11 @@ static const float3 g_Special8[ 8 ] = NRD_CONSTANT( float2, gScreenSize ) \ NRD_CONSTANT( float2, gInvRectSize ) \ NRD_CONSTANT( float2, gRectSize ) \ - NRD_CONSTANT( float2, gRectSizePrev ) \ NRD_CONSTANT( float2, gResolutionScale ) \ - NRD_CONSTANT( float2, gRectOffset ) \ + NRD_CONSTANT( float2, gResolutionScalePrev ) \ + NRD_CONSTANT( float2, gRectSizePrev ) \ NRD_CONSTANT( float2, gSensitivityToDarkness ) \ + NRD_CONSTANT( float2, gRectOffset ) \ NRD_CONSTANT( uint2, gRectOrigin ) \ NRD_CONSTANT( float, gNonReferenceAccumulation ) \ NRD_CONSTANT( float, gOrthoMode ) \ @@ -137,7 +138,9 @@ static const float3 g_Special8[ 8 ] = NRD_CONSTANT( uint, gFrameIndex ) \ NRD_CONSTANT( uint, gDiffMaterialMask ) \ NRD_CONSTANT( uint, gSpecMaterialMask ) \ - NRD_CONSTANT( uint, gResetHistory ) // IMPORTANT: used only in validation + NRD_CONSTANT( uint, gResetHistory ) \ + NRD_CONSTANT( uint, gUnused1 ) \ + NRD_CONSTANT( uint, gUnused2 ) // PERFORMANCE MODE: x1.25 perf boost by sacrificing IQ ( DIFFUSE_SPECULAR on RTX 3090 @ 1440p 2.05 vs 2.55 ms ) #ifdef REBLUR_PERFORMANCE_MODE diff --git a/Shaders/Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli b/Shaders/Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli index f1c726f1..75c010e7 100644 --- a/Shaders/Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli +++ b/Shaders/Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli @@ -272,7 +272,7 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : float specNormalWeightParam = 1.0 / max( lobeHalfAngle, REBLUR_NORMAL_ULP ); float2 specGeometryWeightParams = GetGeometryWeightParams( gPlaneDistSensitivity, frustumSize, Xv, Nv, specNonLinearAccumSpeed ); - float2 specRoughnessWeightParams = GetRoughnessWeightParams( roughness, gRoughnessFraction ); + float2 specRoughnessWeightParamsSq = GetRoughnessWeightParamsSq( roughness, gRoughnessFraction ); float hitDistNormAtCenter = ExtractHitDist( spec ); float smc = GetSpecMagicCurve( roughness ); @@ -316,7 +316,7 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : ws *= CompareMaterials( materialID, materialIDs, gSpecMaterialMask ); ws *= _ComputeWeight( NoX, specGeometryWeightParams.x, specGeometryWeightParams.y ); ws *= _ComputeExponentialWeight( angle, specNormalWeightParam, 0.0 ); - ws *= _ComputeExponentialWeight( Ns.w, specRoughnessWeightParams.x, specRoughnessWeightParams.y ); + ws *= _ComputeExponentialWeight( Ns.w * Ns.w, specRoughnessWeightParamsSq.x, specRoughnessWeightParamsSq.y ); REBLUR_TYPE s = gIn_Spec.SampleLevel( gNearestClamp, uvScaled, 0 ); diff --git a/Shaders/Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli b/Shaders/Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli index 84cfbe4f..4c440c22 100644 --- a/Shaders/Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli +++ b/Shaders/Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli @@ -73,7 +73,8 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : int2 pos = threadPos + int2( i, j ); float4 t = s_Normal_MinHitDist[ pos.y ][ pos.x ]; - Navg.xyz += t.xyz; + if( i < 2 && j < 2 ) + Navg.xyz += t.xyz; #ifdef REBLUR_SPECULAR hitDistForTracking = min( hitDistForTracking, t.w ); // just "min" here works better than code from PrePass @@ -81,7 +82,7 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : } } - Navg /= ( BORDER * 2 + 1 ) * ( BORDER * 2 + 1 ); // needs to be unnormalized! + Navg /= 4.0; // needs to be unnormalized! // Normal and roughness float materialID; @@ -535,7 +536,7 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : float angle = lobeHalfAngle + curvatureAngle; // Virtual motion amount - normal - float4 vmbNormalAndRoughness = UnpackNormalAndRoughness( gIn_Prev_Normal_Roughness.SampleLevel( gLinearClamp, vmbPixelUv * gRectSizePrev * gInvScreenSize, 0 ) ); + float4 vmbNormalAndRoughness = UnpackNormalAndRoughness( gIn_Prev_Normal_Roughness.SampleLevel( gLinearClamp, vmbPixelUv * gResolutionScalePrev, 0 ) ); float3 vmbN = STL::Geometry::RotateVector( gWorldPrevToWorld, vmbNormalAndRoughness.xyz ); float virtualHistoryNormalBasedConfidence = GetEncodingAwareNormalWeight( N, vmbN, angle ); @@ -545,7 +546,8 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : virtualHistoryAmount *= float( dot( vmbN, Navg ) > 0.0 ); // TODO: "frontFacing" seems to be not needed, better replace with "in-lobe" check // Virtual motion amount - roughness - float virtualHistoryRoughnessBasedConfidence = GetEncodingAwareRoughnessWeights( roughness, vmbNormalAndRoughness.w, gRoughnessFraction ); + float2 roughnessParamsSq = GetRoughnessWeightParamsSq( roughness, gRoughnessFraction ); + float virtualHistoryRoughnessBasedConfidence = GetRoughnessWeightSq( roughnessParamsSq, vmbNormalAndRoughness.w ); virtualHistoryAmount *= lerp( 1.0 - saturate( vmbPixelsTraveled ), 1.0, virtualHistoryRoughnessBasedConfidence ); // jitter friendly // Sample history - surface motion @@ -612,21 +614,26 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : vmbDelta /= gRectSizePrev; vmbDelta *= saturate( vmbPixelsTraveled / 0.1 ) + vmbPixelsTraveled / REBLUR_VIRTUAL_MOTION_PREV_PREV_WEIGHT_ITERATION_NUM; + roughnessParamsSq = GetRoughnessWeightParamsSq( vmbNormalAndRoughness.w, gRoughnessFraction ); + float wr = 1.0; + [unroll] for( i = 1; i <= REBLUR_VIRTUAL_MOTION_PREV_PREV_WEIGHT_ITERATION_NUM; i++ ) { float2 vmbPixelUvPrev = vmbPixelUv + vmbDelta * i; - float4 vmbNormalAndRoughnessPrev = UnpackNormalAndRoughness( gIn_Prev_Normal_Roughness.SampleLevel( gLinearClamp, vmbPixelUvPrev * gRectSizePrev * gInvScreenSize, 0 ) ); + float4 vmbNormalAndRoughnessPrev = UnpackNormalAndRoughness( gIn_Prev_Normal_Roughness.SampleLevel( gLinearClamp, vmbPixelUvPrev * gResolutionScalePrev, 0 ) ); - float w = GetEncodingAwareNormalWeight( vmbNormalAndRoughness.xyz, vmbNormalAndRoughnessPrev.xyz, angle + curvatureAngle * i, curvatureAngle ); - float wr = GetEncodingAwareRoughnessWeights( vmbNormalAndRoughness.w, vmbNormalAndRoughnessPrev.w, gRoughnessFraction ); - w *= lerp( 0.33 * i, 1.0, lerp( 1.0 - saturate( abs( vmbPixelsTraveled ) ), 1.0, wr ) ); + float w1 = GetEncodingAwareNormalWeight( vmbNormalAndRoughness.xyz, vmbNormalAndRoughnessPrev.xyz, angle + curvatureAngle * i, curvatureAngle ); + float w2 = GetRoughnessWeightSq( roughnessParamsSq, vmbNormalAndRoughnessPrev.w ); - float isOutOfScreen = 1.0 - IsInScreen( vmbPixelUvPrev ); - virtualHistoryConfidence *= saturate( w + isOutOfScreen ); - virtualHistoryRoughnessBasedConfidence *= saturate( wr + isOutOfScreen ); + bool isInScreen = IsInScreen( vmbPixelUvPrev ); + virtualHistoryConfidence *= isInScreen ? w1 : 1.0; + wr *= isInScreen ? w2 : 1.0; } + virtualHistoryRoughnessBasedConfidence *= wr; + virtualHistoryAmount *= 0.1 + wr * 0.9; + // Virtual motion - accumulation acceleration vmbSpecAccumSpeed *= virtualHistoryConfidence; @@ -637,7 +644,7 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : smbSpecAccumSpeedFactor *= gFramerateScale; smbSpecAccumSpeedFactor *= lerp( 0.5 + 0.5 * virtualHistoryRoughnessBasedConfidence, 1.0, virtualHistoryAmount ); - float diffParallaxInPixels = lerp( smbParallaxInPixels, vmbPixelsTraveled, virtualHistoryAmount ); + float diffParallaxInPixels = lerp( smbParallaxInPixels * ( 1.0 - smc ), vmbPixelsTraveled, virtualHistoryAmount ); float smbSpecAccumSpeed = GetSmbAccumSpeed( smbSpecAccumSpeedFactor, diffParallaxInPixels, viewZ, specAccumSpeed, angle ); // Fallback to surface motion if virtual motion doesn't go well ( tests 103, 111, 132, e9, e11 ) @@ -660,7 +667,10 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : REBLUR_TYPE specResult = MixHistoryAndCurrent( specHistory, spec, specNonLinearAccumSpeed, roughnessModified ); #ifdef REBLUR_SH float4 specShHistory = lerp( smbSpecShHistory, vmbSpecShHistory, virtualHistoryAmount ); - float4 specShResult = MixHistoryAndCurrent( specShHistory, specSh, specNonLinearAccumSpeed, roughnessModified ); + float4 specShResult = lerp( specShHistory, specSh, specNonLinearAccumSpeed ); + + // ( Optional ) Output modified roughness to assist AA during SG resolve + specShResult.w = roughnessModified; // IMPORTANT: should not be blurred #endif // Anti-firefly suppressor diff --git a/Shaders/Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli b/Shaders/Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli index eb1fca40..db4290fd 100644 --- a/Shaders/Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli +++ b/Shaders/Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli @@ -198,13 +198,13 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : #endif // Previous position and surface motion uv - float3 mv = gInOut_Mv[ pixelPosUser ] * gMvScale; + float4 mv = gInOut_Mv[ pixelPosUser ] * float4( gMvScale, 1.0 ); float3 Xprev = X; float2 smbPixelUv = pixelUv + mv.xy; if( gIsWorldSpaceMotionEnabled ) { - Xprev += mv; + Xprev += mv.xyz; smbPixelUv = STL::Geometry::GetScreenUv( gWorldToClipPrev, Xprev ); } else if( gMvScale.z != 0.0 ) @@ -266,17 +266,14 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : // Clamp history and combine with the current frame float2 diffTemporalAccumulationParams = GetTemporalAccumulationParams( smbIsInScreenMulFootprintQuality, data1.x ); - smbDiffHistory = STL::Color::Clamp( diffM1, diffSigma * diffTemporalAccumulationParams.y, smbDiffHistory ); - #ifdef REBLUR_SH - smbDiffShHistory = STL::Color::Clamp( diffShM1, diffShSigma * diffTemporalAccumulationParams.y, smbDiffShHistory ); - #endif - float diffHistoryWeight = diffTemporalAccumulationParams.x; diffHistoryWeight *= diffAntilag; diffHistoryWeight *= diffStabilizationStrength; + smbDiffHistory = STL::Color::Clamp( diffM1, diffSigma * diffTemporalAccumulationParams.y, smbDiffHistory ); float4 diffResult = lerp( diff, smbDiffHistory, diffHistoryWeight ); #ifdef REBLUR_SH + smbDiffShHistory = STL::Color::Clamp( diffShM1, diffShSigma * diffTemporalAccumulationParams.y, smbDiffShHistory ); float4 diffShResult = lerp( diffSh, smbDiffShHistory, diffHistoryWeight ); #endif @@ -336,11 +333,11 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : gIn_Spec_StabilizedHistory, vmbSpecHistory ); #else - vmbSpecHistory = gIn_Spec_StabilizedHistory.SampleLevel( gLinearClamp, vmbPixelUv, 0 ); + vmbSpecHistory = gIn_Spec_StabilizedHistory.SampleLevel( gLinearClamp, vmbPixelUv * gResolutionScalePrev, 0 ); #endif #ifdef REBLUR_SH - float4 vmbSpecShHistory = gIn_SpecSh_StabilizedHistory.SampleLevel( gLinearClamp, vmbPixelUv, 0 ); + float4 vmbSpecShHistory = gIn_SpecSh_StabilizedHistory.SampleLevel( gLinearClamp, vmbPixelUv * gResolutionScalePrev, 0 ); #endif // Modify MVs if requested @@ -369,7 +366,7 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : specMv.z = 0.0; // TODO: nice to have, but not needed for TAA & upscaling techniques } - mv = lerp( mv, specMv, f ); + mv.xyz = lerp( mv.xyz, specMv, f ); mv.xy /= gMvScale.xy; mv.z /= gMvScale.z == 0.0 ? 1.0 : gMvScale.z; @@ -406,18 +403,21 @@ NRD_EXPORT void NRD_CS_MAIN( int2 threadPos : SV_GroupThreadId, int2 pixelPos : float isInScreenMulFootprintQuality = lerp( smbIsInScreenMulFootprintQuality, 1.0, virtualHistoryAmount ); float2 specTemporalAccumulationParams = GetTemporalAccumulationParams( isInScreenMulFootprintQuality, data1.z ); - specHistory = STL::Color::Clamp( specM1, specSigma * specTemporalAccumulationParams.y, specHistory ); - #ifdef REBLUR_SH - specShHistory = STL::Color::Clamp( specShM1, specShSigma * specTemporalAccumulationParams.y, specShHistory ); - #endif - + // TODO: roughness should affect stabilization: + // - use "virtualHistoryRoughnessBasedConfidence" from TA + // - compute moments for samples with similar roughness float specHistoryWeight = specTemporalAccumulationParams.x; specHistoryWeight *= specAntilag; // this is important specHistoryWeight *= specStabilizationStrength; + specHistory = STL::Color::Clamp( specM1, specSigma * specTemporalAccumulationParams.y, specHistory ); float4 specResult = lerp( spec, specHistory, specHistoryWeight ); #ifdef REBLUR_SH + specShHistory = STL::Color::Clamp( specShM1, specShSigma * specTemporalAccumulationParams.y, specShHistory ); float4 specShResult = lerp( specSh, specShHistory, specHistoryWeight ); + + // ( Optional ) Output modified roughness to assist AA during SG resolve + specShResult.w = specSh.w; #endif // Output diff --git a/Shaders/Include/RELAX/RELAX_Common.hlsli b/Shaders/Include/RELAX/RELAX_Common.hlsli index f0bd90b0..75149d0a 100644 --- a/Shaders/Include/RELAX/RELAX_Common.hlsli +++ b/Shaders/Include/RELAX/RELAX_Common.hlsli @@ -26,36 +26,41 @@ float4 PackPrevNormalRoughness(float4 normalRoughness) return result; } -float BilinearWithBinaryWeightsImmediateFloat(float s00, float s10, float s01, float s11, float2 bilinearWeights, float4 binaryWeights, float interpolatedBinaryWeight) +float BilinearWithCustomWeightsImmediateFloat(float s00, float s10, float s01, float s11, float4 bilinearCustomWeights) { - s00 *= binaryWeights.x; - s10 *= binaryWeights.y; - s01 *= binaryWeights.z; - s11 *= binaryWeights.w; + float output = s00 * bilinearCustomWeights.x; + output += s10 * bilinearCustomWeights.y; + output += s01 * bilinearCustomWeights.z; + output += s11 * bilinearCustomWeights.w; - STL::Filtering::Bilinear bilinear; - bilinear.weights = bilinearWeights; - - float r = STL::Filtering::ApplyBilinearFilter(s00, s10, s01, s11, bilinear); - r /= interpolatedBinaryWeight; - - return r; + float sumWeights = dot(bilinearCustomWeights, 1.0); + output = sumWeights < 0.0001 ? 0 : output * rcp(sumWeights); + return output; } -float4 BilinearWithBinaryWeightsImmediateFloat4(float4 s00, float4 s10, float4 s01, float4 s11, float2 bilinearWeights, float4 binaryWeights, float interpolatedBinaryWeight) + +float4 BilinearWithCustomWeightsImmediateFloat4(float4 s00, float4 s10, float4 s01, float4 s11, float4 bilinearCustomWeights) { - s00 *= binaryWeights.x; - s10 *= binaryWeights.y; - s01 *= binaryWeights.z; - s11 *= binaryWeights.w; + float4 output = s00 * bilinearCustomWeights.x; + output += s10 * bilinearCustomWeights.y; + output += s01 * bilinearCustomWeights.z; + output += s11 * bilinearCustomWeights.w; - STL::Filtering::Bilinear bilinear; - bilinear.weights = bilinearWeights; + float sumWeights = dot(bilinearCustomWeights, 1.0); + output = sumWeights < 0.0001 ? 0 : output * rcp(sumWeights); + return output; +} - float4 r = STL::Filtering::ApplyBilinearFilter(s00, s10, s01, s11, bilinear); - r /= interpolatedBinaryWeight; +float4 BilinearWithCustomWeightsFloat4(Texture2D tex0, int2 position, float4 bilinearCustomWeights) +{ + float4 output = tex0[position] * bilinearCustomWeights.x; + output += tex0[position + int2(1, 0)] * bilinearCustomWeights.y; + output += tex0[position + int2(0, 1)] * bilinearCustomWeights.z; + output += tex0[position + int2(1, 1)] * bilinearCustomWeights.w; - return r; + float sumWeights = dot(bilinearCustomWeights, 1.0); + output = sumWeights < 0.0001 ? 0 : output * rcp(sumWeights); + return output; } float3 GetCurrentWorldPosFromPixelPos(int2 pixelPos, float viewZ) @@ -175,27 +180,6 @@ float GetNormalWeight(float3 Ncurr, float3 Nprev, float maxAngle) return w; } -float2 GetRoughnessWeightParams(float roughness, float fraction = 0.05) -{ - float a = rcp(lerp(0.01, 1.0, saturate(roughness * fraction))); - float b = roughness * a; - - return float2(a, -b); -} - -float2 GetRoughnessWeightParamsSq(float roughness, float fraction = 0.05) -{ - float roughnessSq = roughness * roughness; - float a = rcp(lerp(0.01, 1.0, saturate(roughnessSq * fraction))); - float b = roughnessSq * a; - - return float2(a, -b); -} -float GetRoughnessWeightSq(float2 params, float roughness) -{ - return GetRoughnessWeight(params, roughness * roughness); -} - void BicubicFilterNoCornersWithFallbackToBilinearFilterWithCustomWeights( float2 samplePos, float2 invTextureSize, float4 bilinearCustomWeights, bool useBicubic, diff --git a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_Atrous.hlsli b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_Atrous.hlsli index eb92c998..fe1fc597 100644 --- a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_Atrous.hlsli +++ b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_Atrous.hlsli @@ -37,6 +37,9 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) // Diffuse normal weight is used for diffuse and can be used for specular depending on settings. // Weight strictness is higher as the Atrous step size increases. float diffuseLobeAngleFraction = gDiffuseLobeAngleFraction / sqrt(gStepSize); + #ifdef RELAX_SH + diffuseLobeAngleFraction = 1.0 / sqrt(gStepSize); + #endif diffuseLobeAngleFraction = lerp(0.99, diffuseLobeAngleFraction, saturate(historyLength / 5.0)); #ifdef RELAX_SPECULAR @@ -83,6 +86,11 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) float sumWSpecular = 0.44198 * 0.44198; float4 sumSpecularIlluminationAndVariance = centerSpecularIlluminationAndVariance * float4(sumWSpecular.xxx, sumWSpecular * sumWSpecular); + #ifdef RELAX_SH + float4 centerSpecularSH1 = gSpecularSH1[pixelPos]; + float4 sumSpecularSH1 = centerSpecularSH1 * sumWSpecular; + float roughnessModified = centerSpecularSH1.w; + #endif #endif #ifdef RELAX_DIFFUSE @@ -109,6 +117,10 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) float sumWDiffuse = 0.44198 * 0.44198; float4 sumDiffuseIlluminationAndVariance = centerDiffuseIlluminationAndVariance * float4(sumWDiffuse.xxx, sumWDiffuse * sumWDiffuse); + #ifdef RELAX_SH + float4 centerDiffuseSH1 = gDiffuseSH1[pixelPos]; + float4 sumDiffuseSH1 = centerDiffuseSH1 * sumWDiffuse; + #endif #endif float3 centerWorldPos = GetCurrentWorldPosFromPixelPos(pixelPos, centerViewZ); @@ -178,6 +190,9 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) sumSpecularIlluminationAndVariance += float4(wSpecular.xxx, wSpecular * wSpecular) * sampleSpecularIlluminationAndVariance; sumWSpecular += wSpecular; + #ifdef RELAX_SH + sumSpecularSH1 += gSpecularSH1[p] * wSpecular; + #endif } #endif @@ -202,6 +217,9 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) wDiffuse *= exp(-diffuseLuminanceW); sumDiffuseIlluminationAndVariance += float4(wDiffuse.xxx, wDiffuse * wDiffuse) * sampleDiffuseIlluminationAndVariance; sumWDiffuse += wDiffuse; + #ifdef RELAX_SH + sumDiffuseSH1 += gDiffuseSH1[p] * wDiffuse; + #endif } #endif } @@ -209,11 +227,27 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) #ifdef RELAX_SPECULAR float4 filteredSpecularIlluminationAndVariance = float4(sumSpecularIlluminationAndVariance / float4(sumWSpecular.xxx, sumWSpecular * sumWSpecular)); + #ifdef RELAX_SH + // Luminance output is expected in YCoCg color space in SH mode, converting to YCoCg in last A-Trous pass + if (gIsLastPass == 1) + { + filteredSpecularIlluminationAndVariance.rgb = _NRD_LinearToYCoCg(filteredSpecularIlluminationAndVariance.rgb); + } + gOutSpecularSH1[pixelPos] = float4(sumSpecularSH1.rgb / sumWSpecular, roughnessModified); + #endif gOutSpecularIlluminationAndVariance[pixelPos] = filteredSpecularIlluminationAndVariance; #endif #ifdef RELAX_DIFFUSE float4 filteredDiffuseIlluminationAndVariance = float4(sumDiffuseIlluminationAndVariance / float4(sumWDiffuse.xxx, sumWDiffuse * sumWDiffuse)); + #ifdef RELAX_SH + // Luminance output is expected in YCoCg color space in SH mode, converting to YCoCg in last A-Trous pass + if (gIsLastPass == 1) + { + filteredDiffuseIlluminationAndVariance.rgb = _NRD_LinearToYCoCg(filteredDiffuseIlluminationAndVariance.rgb); + } + gOutDiffuseSH1[pixelPos] = sumDiffuseSH1 / sumWDiffuse; + #endif gOutDiffuseIlluminationAndVariance[pixelPos] = filteredDiffuseIlluminationAndVariance; #endif } diff --git a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli index a7013c8e..be29c6b9 100644 --- a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli +++ b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli @@ -10,10 +10,16 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #ifdef RELAX_DIFFUSE groupshared float4 sharedDiffuse[BUFFER_X][BUFFER_Y]; + #ifdef RELAX_SH + groupshared float4 sharedDiffuseSH1[BUFFER_X][BUFFER_Y]; + #endif #endif #ifdef RELAX_SPECULAR groupshared float4 sharedSpecular[BUFFER_X][BUFFER_Y]; + #ifdef RELAX_SH + groupshared float4 sharedSpecularSH1[BUFFER_X][BUFFER_Y]; + #endif #endif groupshared float4 sharedNormalRoughness[BUFFER_X][BUFFER_Y]; @@ -83,10 +89,16 @@ void Preload(uint2 sharedPos, int2 globalPos) #ifdef RELAX_SPECULAR sharedSpecular[sharedPos.y][sharedPos.x] = gSpecularIlluminationAnd2ndMoment[globalPos]; + #ifdef RELAX_SH + sharedSpecularSH1[sharedPos.y][sharedPos.x] = gSpecularSH1[globalPos]; + #endif #endif #ifdef RELAX_DIFFUSE sharedDiffuse[sharedPos.y][sharedPos.x] = gDiffuseIlluminationAnd2ndMoment[globalPos]; + #ifdef RELAX_SH + sharedDiffuseSH1[sharedPos.y][sharedPos.x] = gDiffuseSH1[globalPos]; + #endif #endif float materialID; sharedNormalRoughness[sharedPos.y][sharedPos.x] = NRD_FrontEnd_UnpackNormalAndRoughness(gNormalRoughness[globalPos], materialID); @@ -193,6 +205,10 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos float sumWSpecular = 0; float4 sumSpecularIlluminationAnd2ndMoment = 0; + #ifdef RELAX_SH + float4 sumSpecularSH1 = 0; + float roughnessModified = sharedSpecularSH1[sharedMemoryIndex.y][sharedMemoryIndex.x].w; + #endif float3 centerV = -normalize(centerWorldPos); #endif @@ -218,6 +234,9 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos float sumWDiffuse = 0; float4 sumDiffuseIlluminationAnd2ndMoment = 0; + #ifdef RELAX_SH + float4 sumDiffuseSH1 = 0; + #endif #endif static const float kernelWeightGaussian3x3[2] = { 0.44198, 0.27901 }; @@ -279,6 +298,9 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos sumWSpecular += wSpecular; sumSpecularIlluminationAnd2ndMoment += wSpecular * sampleSpecularIlluminationAnd2ndMoment; + #ifdef RELAX_SH + sumSpecularSH1 += wSpecular * sharedSpecularSH1[sharedMemoryIndexP.y][sharedMemoryIndexP.x];; + #endif #endif #ifdef RELAX_DIFFUSE // Calculating weights for diffuse @@ -300,6 +322,9 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos sumWDiffuse += wDiffuse; sumDiffuseIlluminationAnd2ndMoment += wDiffuse * sampleDiffuseIlluminationAnd2ndMoment; + #ifdef RELAX_SH + sumDiffuseSH1 += wDiffuse * sharedDiffuseSH1[sharedMemoryIndexP.y][sharedMemoryIndexP.x];; + #endif #endif } } @@ -311,6 +336,9 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos float specularVariance = max(0, specular2ndMoment - specular1stMoment * specular1stMoment); float4 filteredSpecularIlluminationAndVariance = float4(sumSpecularIlluminationAnd2ndMoment.rgb, specularVariance); gOutSpecularIlluminationAndVariance[pixelPos] = filteredSpecularIlluminationAndVariance; + #ifdef RELAX_SH + gOutSpecularSH1[pixelPos] = float4(sumSpecularSH1.rgb / sumWSpecular, roughnessModified); + #endif #endif #ifdef RELAX_DIFFUSE sumWDiffuse = max(sumWDiffuse, 1e-6f); @@ -319,8 +347,10 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos float diffuse2ndMoment = sumDiffuseIlluminationAnd2ndMoment.a; float diffuseVariance = max(0, diffuse2ndMoment - diffuse1stMoment * diffuse1stMoment); float4 filteredDiffuseIlluminationAndVariance = float4(sumDiffuseIlluminationAnd2ndMoment.rgb, diffuseVariance); - gOutDiffuseIlluminationAndVariance[pixelPos] = filteredDiffuseIlluminationAndVariance; + #ifdef RELAX_SH + gOutDiffuseSH1[pixelPos] = sumDiffuseSH1 / sumWDiffuse; + #endif #endif } else @@ -331,6 +361,9 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos float3 sumSpecularIllumination = 0; float sumSpecular1stMoment = 0; float sumSpecular2ndMoment = 0; + #ifdef RELAX_SH + float4 sumSpecularSH1 = 0; + #endif #endif #ifdef RELAX_DIFFUSE @@ -338,6 +371,9 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos float3 sumDiffuseIllumination = 0; float sumDiffuse1stMoment = 0; float sumDiffuse2ndMoment = 0; + #ifdef RELAX_SH + float4 sumDiffuseSH1 = 0; + #endif #endif // Normal weight is same for diffuse and specular during spatial variance estimation @@ -372,6 +408,9 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos sumSpecularIllumination += sampleSpecularIllumination.rgb * specularW; sumSpecular1stMoment += sampleSpecular1stMoment * specularW; sumSpecular2ndMoment += sampleSpecular2ndMoment * specularW; + #ifdef RELAX_SH + sumSpecularSH1 += sharedSpecularSH1[sharedMemoryIndexP.y][sharedMemoryIndexP.x] * specularW; + #endif #endif #ifdef RELAX_DIFFUSE @@ -386,6 +425,9 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos sumDiffuseIllumination += sampleDiffuseIllumination.rgb * diffuseW; sumDiffuse1stMoment += sampleDiffuse1stMoment * diffuseW; sumDiffuse2ndMoment += sampleDiffuse2ndMoment * diffuseW; + #ifdef RELAX_SH + sumDiffuseSH1 += sharedDiffuseSH1[sharedMemoryIndexP.y][sharedMemoryIndexP.x] * diffuseW; + #endif #endif } } @@ -400,6 +442,9 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos float specularVariance = max(0, sumSpecular2ndMoment - sumSpecular1stMoment * sumSpecular1stMoment); specularVariance *= boost; gOutSpecularIlluminationAndVariance[pixelPos] = float4(sumSpecularIllumination, specularVariance); + #ifdef RELAX_SH + gOutSpecularSH1[pixelPos] = sumSpecularSH1 / sumWSpecularIllumination; + #endif #endif #ifdef RELAX_DIFFUSE @@ -410,6 +455,9 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos float diffuseVariance = max(0, sumDiffuse2ndMoment - sumDiffuse1stMoment * sumDiffuse1stMoment); diffuseVariance *= boost; gOutDiffuseIlluminationAndVariance[pixelPos] = float4(sumDiffuseIllumination, diffuseVariance); + #ifdef RELAX_SH + gOutDiffuseSH1[pixelPos] = sumDiffuseSH1 / sumWDiffuseIllumination; + #endif #endif } diff --git a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli index aa5ea2cb..21f04bae 100644 --- a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli +++ b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli @@ -93,9 +93,9 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo specularColorMaxYCoCg = max(specularColorMaxYCoCg, specularCenterYCoCg.rgb); // Color clamping - if (gSpecFastHistory) - specularYCoCg = clamp(specularYCoCg, specularColorMinYCoCg, specularColorMaxYCoCg); - float3 clampedSpecular = STL::Color::YCoCgToLinear(specularYCoCg); + float3 clampedSpecularYCoCg = specularYCoCg; + if (gSpecFastHistory) clampedSpecularYCoCg = clamp(specularYCoCg, specularColorMinYCoCg, specularColorMaxYCoCg); + float3 clampedSpecular = STL::Color::YCoCgToLinear(clampedSpecularYCoCg); // If history length is less than gHistoryFixFrameNum, // then it is the pixel with history fix applied in the previous (history fix) shader, @@ -109,6 +109,24 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo // Writing out the results gOutSpecularIllumination[pixelPos.xy] = outSpecular; gOutSpecularIlluminationResponsive[pixelPos.xy] = outSpecularResponsive; + + #ifdef RELAX_SH + float4 specularSH1 = gSpecularSH1[pixelPos.xy]; + float roughnessModified = specularSH1.w; + float4 specularResponsiveSH1 = gSpecularResponsiveSH1[pixelPos.xy]; + + // Clamping factor: (clamped - slow) / (fast - slow) + // The closest clamped is to fast, the closer clamping factor is to 1. + float specClampingFactor = (specularCenterYCoCg.x - specularYCoCg.x) == 0 ? + 1.0 : saturate( (clampedSpecularYCoCg.x - specularYCoCg.x) / (specularCenterYCoCg.x - specularYCoCg.x)); + + if (historyLength <= gHistoryFixFrameNum) + specClampingFactor = 1.0; + + gOutSpecularSH1[pixelPos.xy] = float4(lerp(specularSH1.rgb, specularResponsiveSH1.rgb, specClampingFactor), roughnessModified); + gOutSpecularResponsiveSH1[pixelPos.xy] = specularResponsiveSH1; + #endif + #endif #ifdef RELAX_DIFFUSE @@ -125,9 +143,9 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo diffuseColorMaxYCoCg = max(diffuseColorMaxYCoCg, diffuseCenterYCoCg.rgb); // Color clamping - if (gDiffFastHistory) - diffuseYCoCg = clamp(diffuseYCoCg, diffuseColorMinYCoCg, diffuseColorMaxYCoCg); - float3 clampedDiffuse = STL::Color::YCoCgToLinear(diffuseYCoCg); + float3 clampedDiffuseYCoCg = diffuseYCoCg; + if (gDiffFastHistory) clampedDiffuseYCoCg = clamp(diffuseYCoCg, diffuseColorMinYCoCg, diffuseColorMaxYCoCg); + float3 clampedDiffuse = STL::Color::YCoCgToLinear(clampedDiffuseYCoCg); // If history length is less than gHistoryFixFrameNum, // then it is the pixel with history fix applied in the previous (history fix) shader, @@ -141,6 +159,23 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo // Writing out the results gOutDiffuseIllumination[pixelPos.xy] = outDiffuse; gOutDiffuseIlluminationResponsive[pixelPos.xy] = outDiffuseResponsive; + + #ifdef RELAX_SH + float4 diffuseSH1 = gDiffuseSH1[pixelPos.xy]; + float4 diffuseResponsiveSH1 = gDiffuseResponsiveSH1[pixelPos.xy]; + + // Clamping factor: (clamped - slow) / (fast - slow) + // The closest clamped is to fast, the closer clamping factor is to 1. + float diffClampingFactor = (diffuseCenterYCoCg.x - diffuseYCoCg.x) == 0 ? + 1.0 : saturate( (clampedDiffuseYCoCg.x - diffuseYCoCg.x) / (diffuseCenterYCoCg.x - diffuseYCoCg.x)); + + if (historyLength <= gHistoryFixFrameNum) + diffClampingFactor = 1.0; + + gOutDiffuseSH1[pixelPos.xy] = lerp(diffuseSH1, diffuseResponsiveSH1, diffClampingFactor); + gOutDiffuseResponsiveSH1[pixelPos.xy] = diffuseResponsiveSH1; + #endif + #endif // Writing out history length for use in the next frame diff --git a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli index 0d57fade..5996ccae 100644 --- a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli +++ b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli @@ -33,13 +33,6 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) if ((centerViewZ > gDenoisingRange) || (historyLength > gHistoryFixFrameNum)) return; -#ifdef RELAX_DIFFUSE - float4 diffuseIlluminationAnd2ndMoment = gDiffuseIllumination[pixelPos]; -#endif -#ifdef RELAX_SPECULAR - float4 specularIlluminationAnd2ndMoment = gSpecularIllumination[pixelPos]; -#endif - // Loading center data float centerMaterialID; float4 centerNormalRoughness = NRD_FrontEnd_UnpackNormalAndRoughness(gNormalRoughness[pixelPos], centerMaterialID); @@ -49,13 +42,19 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) float3 centerV = -normalize(centerWorldPos); float depthThreshold = gDepthThreshold * (gOrthoMode == 0 ? centerViewZ : 1.0); - // Running sparse cross-bilateral filter #ifdef RELAX_DIFFUSE - float4 diffuseIlluminationAnd2ndMomentSum = diffuseIlluminationAnd2ndMoment; + float4 diffuseIlluminationAnd2ndMomentSum = gDiffuseIllumination[pixelPos]; + #ifdef RELAX_SH + float4 diffuseSumSH1 = gDiffuseSH1[pixelPos]; + #endif float diffuseWSum = 1; #endif #ifdef RELAX_SPECULAR - float4 specularIlluminationAnd2ndMomentSum = specularIlluminationAnd2ndMoment; + float4 specularIlluminationAnd2ndMomentSum = gSpecularIllumination[pixelPos]; + #ifdef RELAX_SH + float4 specularSumSH1 = gSpecularSH1[pixelPos]; + float roughnessModified = specularSumSH1.w; + #endif float specularWSum = 1; float2 specularNormalWeightParams = GetNormalWeightParams_ATrous( @@ -67,8 +66,8 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) gSpecularLobeAngleSlack); #endif + // Running sparse cross-bilateral filter float r = getRadius(historyLength); - [unroll] for (int j = -2; j <= 2; j++) { @@ -95,7 +94,7 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) sampleWorldPos, depthThreshold); - #ifdef RELAX_DIFFUSE +#ifdef RELAX_DIFFUSE // Summing up diffuse result float diffuseW = geometryWeight; diffuseW *= getDiffuseNormalWeight(centerNormal, sampleNormal); @@ -106,10 +105,14 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) { float4 sampleDiffuseIlluminationAnd2ndMoment = gDiffuseIllumination[samplePosInt]; diffuseIlluminationAnd2ndMomentSum += sampleDiffuseIlluminationAnd2ndMoment * diffuseW; + #ifdef RELAX_SH + float4 sampleDiffuseSH1 = gDiffuseSH1[samplePosInt]; + diffuseSumSH1 += sampleDiffuseSH1 * diffuseW; + #endif diffuseWSum += diffuseW; } - #endif - #ifdef RELAX_SPECULAR +#endif +#ifdef RELAX_SPECULAR // Getting sample view vector closer to center view vector // by adding gRoughnessEdgeStoppingRelaxation * centerWorldPos // relaxes view direction based rejection @@ -126,9 +129,13 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) { float4 sampleSpecularIlluminationAnd2ndMoment = gSpecularIllumination[samplePosInt]; specularIlluminationAnd2ndMomentSum += sampleSpecularIlluminationAnd2ndMoment * specularW; + #ifdef RELAX_SH + float4 sampleSpecularSH1 = gSpecularSH1[samplePosInt]; + specularSumSH1 += sampleSpecularSH1 * specularW; + #endif specularWSum += specularW; } - #endif +#endif } } @@ -137,10 +144,16 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId) #ifdef RELAX_DIFFUSE float4 outDiffuseIlluminationAnd2ndMoment = diffuseIlluminationAnd2ndMomentSum / diffuseWSum; gOutDiffuseIllumination[pixelPos] = outDiffuseIlluminationAnd2ndMoment; + #ifdef RELAX_SH + gOutDiffuseSH1[pixelPos] = diffuseSumSH1 / diffuseWSum; + #endif #endif #ifdef RELAX_SPECULAR float4 outSpecularIlluminationAnd2ndMoment = specularIlluminationAnd2ndMomentSum / specularWSum; gOutSpecularIllumination[pixelPos] = outSpecularIlluminationAnd2ndMoment; + #ifdef RELAX_SH + gOutSpecularSH1[pixelPos] = float4(specularSumSH1.rgb / specularWSum, roughnessModified); + #endif #endif } diff --git a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli index a996ab42..cd9b20be 100644 --- a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli +++ b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli @@ -11,11 +11,6 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. groupshared float4 sharedNormalRoughness[BUFFER_Y][BUFFER_X]; groupshared float3 sharedHitdistViewZ[BUFFER_Y][BUFFER_X]; -float2 GetCoarseRoughnessWeightParams(float roughness) -{ - return float2(1.0, -roughness); -} - float GetNormalWeightParams(float nonLinearAccumSpeed, float fraction, float roughness = 1.0) { float angle = STL::ImportanceSampling::GetSpecularLobeHalfAngle(roughness); diff --git a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_PrePass.hlsli b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_PrePass.hlsli index 573696ed..5f77a55b 100644 --- a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_PrePass.hlsli +++ b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_PrePass.hlsli @@ -84,6 +84,9 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos #ifdef RELAX_DIFFUSE // Reading diffuse & resolving diffuse checkerboard float4 diffuseIllumination = gDiffuseIllumination[DiffCheckerboard(pixelPos + gRectOrigin)]; + #ifdef RELAX_SH + float4 diffuseSH1 = gDiffuseSH1[DiffCheckerboard(pixelPos + gRectOrigin)]; + #endif bool diffHasData = true; if (gDiffuseCheckerboard != 2) @@ -94,17 +97,23 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos float4 d0 = gDiffuseIllumination[DiffCheckerboard(pixelPos + int2(-1, 0) + gRectOrigin)]; float4 d1 = gDiffuseIllumination[DiffCheckerboard(pixelPos + int2(1, 0) + gRectOrigin)]; float2 diffCheckerboardResolveWeights = checkerboardResolveWeights; -#if( NRD_NORMAL_ENCODING == NRD_NORMAL_ENCODING_R10G10B10A2_UNORM ) - float materialID0; - float materialID1; - NRD_FrontEnd_UnpackNormalAndRoughness(gNormalRoughness[pixelPos + int2(-1, 0) + gRectOrigin], materialID0); - NRD_FrontEnd_UnpackNormalAndRoughness(gNormalRoughness[pixelPos + int2(1, 0) + gRectOrigin], materialID1); - diffCheckerboardResolveWeights.x *= CompareMaterials(centerMaterialID, materialID0, gDiffMaterialMask); - diffCheckerboardResolveWeights.y *= CompareMaterials(centerMaterialID, materialID1, gDiffMaterialMask); - diffCheckerboardResolveWeights *= STL::Math::PositiveRcp(diffCheckerboardResolveWeights.x + diffCheckerboardResolveWeights.y + 1.0e-4); -#endif + #if( NRD_NORMAL_ENCODING == NRD_NORMAL_ENCODING_R10G10B10A2_UNORM ) + float materialID0; + float materialID1; + NRD_FrontEnd_UnpackNormalAndRoughness(gNormalRoughness[pixelPos + int2(-1, 0) + gRectOrigin], materialID0); + NRD_FrontEnd_UnpackNormalAndRoughness(gNormalRoughness[pixelPos + int2(1, 0) + gRectOrigin], materialID1); + diffCheckerboardResolveWeights.x *= CompareMaterials(centerMaterialID, materialID0, gDiffMaterialMask); + diffCheckerboardResolveWeights.y *= CompareMaterials(centerMaterialID, materialID1, gDiffMaterialMask); + diffCheckerboardResolveWeights *= STL::Math::PositiveRcp(diffCheckerboardResolveWeights.x + diffCheckerboardResolveWeights.y + 1.0e-4); + #endif diffuseIllumination *= saturate(1.0 - diffCheckerboardResolveWeights.x - diffCheckerboardResolveWeights.y); diffuseIllumination += d0 * diffCheckerboardResolveWeights.x + d1 * diffCheckerboardResolveWeights.y; + #ifdef RELAX_SH + float4 d0SH1 = gDiffuseSH1[DiffCheckerboard(pixelPos + int2(-1, 0) + gRectOrigin)]; + float4 d1SH1 = gDiffuseSH1[DiffCheckerboard(pixelPos + int2(1, 0) + gRectOrigin)]; + diffuseSH1 *= saturate(1.0 - diffCheckerboardResolveWeights.x - diffCheckerboardResolveWeights.y); + diffuseSH1 += d0SH1 * diffCheckerboardResolveWeights.x + d1SH1 * diffCheckerboardResolveWeights.y; + #endif } // Pre-blur for diffuse @@ -145,11 +154,9 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos float sampleMaterialID; float3 sampleNormal = NRD_FrontEnd_UnpackNormalAndRoughness(gNormalRoughness.SampleLevel(gNearestClamp, uvScaled, 0), sampleMaterialID).rgb; - - float4 sampleDiffuseIllumination = gDiffuseIllumination.SampleLevel(gNearestClamp, checkerboardUvScaled, 0); float sampleViewZ = abs(gViewZ.SampleLevel(gNearestClamp, uvScaled, 0)); - float3 sampleWorldPos = GetCurrentWorldPosFromClipSpaceXY(uv * 2.0 - 1.0, sampleViewZ); + float4 sampleDiffuseIllumination = gDiffuseIllumination.SampleLevel(gNearestClamp, checkerboardUvScaled, 0); // Sample weight float sampleWeight = IsInScreen(uv); @@ -167,19 +174,33 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos sampleWeight *= lerp(diffMinHitDistanceWeight, 1.0, GetHitDistanceWeight(hitDistanceWeightParams, sampleDiffuseIllumination.a)); diffuseIllumination += (sampleWeight > 0) ? sampleDiffuseIllumination * sampleWeight : 0; + + #ifdef RELAX_SH + float4 sampleDiffuseSH1 = gDiffuseSH1.SampleLevel(gNearestClamp, checkerboardUvScaled, 0); + diffuseSH1 += (sampleWeight > 0) ? sampleDiffuseSH1 * sampleWeight : 0; + #endif weightSum += sampleWeight; } diffuseIllumination /= weightSum; + #ifdef RELAX_SH + diffuseSH1 /= weightSum; + #endif } gOutDiffuseIllumination[pixelPos] = clamp(diffuseIllumination, 0, NRD_FP16_MAX); + #ifdef RELAX_SH + gOutDiffuseSH1[pixelPos] = clamp(diffuseSH1, -NRD_FP16_MAX, NRD_FP16_MAX); + #endif #endif #ifdef RELAX_SPECULAR // Reading specular & resolving specular checkerboard float4 specularIllumination = gSpecularIllumination[SpecCheckerboard(pixelPos + gRectOrigin)]; + #ifdef RELAX_SH + float4 specularSH1 = gSpecularSH1[SpecCheckerboard(pixelPos + gRectOrigin)]; + #endif bool specHasData = true; if (gSpecularCheckerboard != 2) @@ -201,6 +222,12 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos #endif specularIllumination *= saturate(1.0 - specCheckerboardResolveWeights.x - specCheckerboardResolveWeights.y); specularIllumination += s0 * specCheckerboardResolveWeights.x + s1 * specCheckerboardResolveWeights.y; + #ifdef RELAX_SH + float4 s0SH1 = gSpecularSH1[SpecCheckerboard(pixelPos + int2(-1, 0) + gRectOrigin)]; + float4 s1SH1 = gSpecularSH1[SpecCheckerboard(pixelPos + int2(1, 0) + gRectOrigin)]; + specularSH1 *= saturate(1.0 - specCheckerboardResolveWeights.x - specCheckerboardResolveWeights.y); + specularSH1 += s0SH1 * specCheckerboardResolveWeights.x + s1SH1 * specCheckerboardResolveWeights.y; + #endif } specularIllumination.a = max(0, min(gDenoisingRange, specularIllumination.a)); @@ -289,7 +316,10 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos sampleWeight *= lerp(saturate(t), 1.0, STL::Math::LinearStep(0.5, 1.0, centerRoughness)); specularIllumination.rgb += (sampleWeight > 0) ? sampleSpecularIllumination.rgb * sampleWeight : 0; - + #ifdef RELAX_SH + float4 sampleSpecularSH1 = gSpecularSH1.SampleLevel(gNearestClamp, checkerboardUvScaled, 0); + specularSH1 += (sampleWeight > 0) ? sampleSpecularSH1 * sampleWeight : 0; + #endif weightSum += sampleWeight; if (sampleWeight > 0) @@ -300,8 +330,14 @@ NRD_EXPORT void NRD_CS_MAIN(int2 pixelPos : SV_DispatchThreadId, uint2 threadPos } specularIllumination.rgb /= weightSum; specularIllumination.a = minHitT; + #ifdef RELAX_SH + specularSH1 /= weightSum; + #endif } gOutSpecularIllumination[pixelPos] = clamp(specularIllumination, 0, NRD_FP16_MAX); + #ifdef RELAX_SH + gOutSpecularSH1[pixelPos] = clamp(specularSH1, -NRD_FP16_MAX, NRD_FP16_MAX); + #endif #endif } \ No newline at end of file diff --git a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli index ad723bed..b7902aa8 100644 --- a/Shaders/Include/RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli +++ b/Shaders/Include/RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli @@ -47,11 +47,19 @@ float loadSurfaceMotionBasedPrevData( #ifdef RELAX_DIFFUSE , out float4 prevDiffuseIllumAnd2ndMoment , out float3 prevDiffuseResponsiveIllum + #ifdef RELAX_SH + , out float4 prevDiffuseSH1 + , out float4 prevDiffuseResponsiveSH1 + #endif #endif #ifdef RELAX_SPECULAR , out float4 prevSpecularIllumAnd2ndMoment , out float3 prevSpecularResponsiveIllum , out float prevReflectionHitT + #ifdef RELAX_SH + , out float4 prevSpecularSH1 + , out float4 prevSpecularResponsiveSH1 + #endif #endif ) { @@ -143,14 +151,14 @@ float loadSurfaceMotionBasedPrevData( // Calculating bilinear weights in advance STL::Filtering::Bilinear bilinear; bilinear.weights = bilinearWeights; - float4 bilinearWeightsWithValidity = STL::Filtering::GetBilinearCustomWeights(bilinear, float4(bilinearTapsValid.x, bilinearTapsValid.y, bilinearTapsValid.z, bilinearTapsValid.w)); + float4 bilinearCustomWeights = STL::Filtering::GetBilinearCustomWeights(bilinear, float4(bilinearTapsValid.x, bilinearTapsValid.y, bilinearTapsValid.z, bilinearTapsValid.w)); bool useBicubic = (bicubicFootprintValid > 0); // Fetching normal history BicubicFilterNoCornersWithFallbackToBilinearFilterWithCustomWeights( prevPixelPosFloat, gInvResourceSize, - bilinearWeightsWithValidity, useBicubic + bilinearCustomWeights, useBicubic #ifdef RELAX_DIFFUSE , gPrevDiffuseIllumination, prevDiffuseIllumAnd2ndMoment #endif @@ -164,7 +172,7 @@ float loadSurfaceMotionBasedPrevData( float4 diff; BicubicFilterNoCornersWithFallbackToBilinearFilterWithCustomWeights( prevPixelPosFloat, gInvResourceSize, - bilinearWeightsWithValidity, useBicubic + bilinearCustomWeights, useBicubic #ifdef RELAX_DIFFUSE , gPrevDiffuseIlluminationResponsive, diff #endif @@ -174,7 +182,7 @@ float loadSurfaceMotionBasedPrevData( ); #ifdef RELAX_DIFFUSE - prevDiffuseIllumAnd2ndMoment = max(prevDiffuseIllumAnd2ndMoment, 0.0); + prevDiffuseIllumAnd2ndMoment = max(prevDiffuseIllumAnd2ndMoment, 0); prevDiffuseResponsiveIllum = max(diff.rgb, 0); #endif #ifdef RELAX_SPECULAR @@ -182,33 +190,41 @@ float loadSurfaceMotionBasedPrevData( prevSpecularResponsiveIllum = max(spec.rgb, 0); #endif - // Fitering previous data that does not need bicubic - float interpolatedBinaryWeight = STL::Filtering::ApplyBilinearFilter(bilinearTapsValid.x, bilinearTapsValid.y, bilinearTapsValid.z, bilinearTapsValid.w, bilinear); - interpolatedBinaryWeight = max(1e-6, interpolatedBinaryWeight); - - float2 gatherOrigin = (float2(bilinearOrigin)+1.0) * gInvResourceSize; - + // Fitering previous SH data + #ifdef RELAX_SH + #ifdef RELAX_DIFFUSE + prevDiffuseSH1 = BilinearWithCustomWeightsFloat4(gPrevDiffuseSH1, bilinearOrigin, bilinearCustomWeights); + prevDiffuseResponsiveSH1 = BilinearWithCustomWeightsFloat4(gPrevDiffuseResponsiveSH1, bilinearOrigin, bilinearCustomWeights); + #endif + #ifdef RELAX_SPECULAR + prevSpecularSH1 = BilinearWithCustomWeightsFloat4(gPrevSpecularSH1, bilinearOrigin, bilinearCustomWeights); + prevSpecularResponsiveSH1 = BilinearWithCustomWeightsFloat4(gPrevSpecularResponsiveSH1, bilinearOrigin, bilinearCustomWeights); + #endif + #endif + + // Fitering more previous data that does not need bicubic + float2 gatherOrigin = (float2(bilinearOrigin) + 1.0) * gInvResourceSize; float4 prevHistoryLengths = gPrevHistoryLength.GatherRed(gNearestClamp, gatherOrigin).wzxy; - historyLength = 255.0 * BilinearWithBinaryWeightsImmediateFloat( + historyLength = 255.0 * BilinearWithCustomWeightsImmediateFloat( prevHistoryLengths.x, prevHistoryLengths.y, prevHistoryLengths.z, prevHistoryLengths.w, - bilinearWeights, bilinearTapsValid, interpolatedBinaryWeight); + bilinearCustomWeights); #ifdef RELAX_SPECULAR float4 prevReflectionHitTs = gPrevReflectionHitT.GatherRed(gNearestClamp, gatherOrigin).wzxy; - prevReflectionHitT = BilinearWithBinaryWeightsImmediateFloat( + prevReflectionHitT = BilinearWithCustomWeightsImmediateFloat( prevReflectionHitTs.x, prevReflectionHitTs.y, prevReflectionHitTs.z, prevReflectionHitTs.w, - bilinearWeights, bilinearTapsValid, interpolatedBinaryWeight); + bilinearCustomWeights); prevReflectionHitT = max(0.001, prevReflectionHitT); #endif float reprojectionFound = (bicubicFootprintValid > 0) ? 2.0 : 1.0; - footprintQuality = (bicubicFootprintValid > 0) ? 1.0 : interpolatedBinaryWeight; + footprintQuality = (bicubicFootprintValid > 0) ? 1.0 : dot(bilinearCustomWeights, 1.0); [flatten] if (!any(bilinearTapsValid)) @@ -243,7 +259,12 @@ float loadVirtualMotionBasedPrevData( out float3 prevNormal, out float prevRoughness, out float prevReflectionHitT, - out float2 prevUVVMB) + out float2 prevUVVMB + #ifdef RELAX_SH + , out float4 prevSpecularSH1 + , out float4 prevSpecularResponsiveSH1 + #endif + ) { // Calculating previous worldspace virtual position based on reflection hitT float3 virtualViewVector = normalize(currentViewVector) * hitDistFocused; @@ -315,6 +336,10 @@ float loadVirtualMotionBasedPrevData( prevNormal = currentNormal; prevRoughness = 0; prevReflectionHitT = gDenoisingRange; + #ifdef RELAX_SH + prevSpecularSH1 = 0; + prevSpecularResponsiveSH1 = 0; + #endif // Weighted bilinear (or bicubic optionally) for prev specular data based on virtual motion. if (any(bilinearTapsValid)) @@ -322,14 +347,14 @@ float loadVirtualMotionBasedPrevData( // Calculating bilinear weights in advance STL::Filtering::Bilinear bilinear; bilinear.weights = bilinearWeights; - float4 bilinearWeightsWithValidity = STL::Filtering::GetBilinearCustomWeights(bilinear, float4(bilinearTapsValid.x, bilinearTapsValid.y, bilinearTapsValid.z, bilinearTapsValid.w)); + float4 bilinearCustomWeights = STL::Filtering::GetBilinearCustomWeights(bilinear, float4(bilinearTapsValid.x, bilinearTapsValid.y, bilinearTapsValid.z, bilinearTapsValid.w)); bool useBicubic = (surfaceBicubicValid > 0) & all(bilinearTapsValid); // Fetching normal virtual motion based specular history BicubicFilterNoCornersWithFallbackToBilinearFilterWithCustomWeights( prevVirtualPixelPosFloat, gInvResourceSize, - bilinearWeightsWithValidity, useBicubic, + bilinearCustomWeights, useBicubic, gPrevSpecularIllumination, prevSpecularIllumAnd2ndMoment); prevSpecularIllumAnd2ndMoment = max(prevSpecularIllumAnd2ndMoment, 0.0); @@ -337,11 +362,17 @@ float loadVirtualMotionBasedPrevData( // Fetching fast virtual motion based specular history BicubicFilterNoCornersWithFallbackToBilinearFilterWithCustomWeights( prevVirtualPixelPosFloat, gInvResourceSize, - bilinearWeightsWithValidity, useBicubic, + bilinearCustomWeights, useBicubic, gPrevSpecularIlluminationResponsive, prevSpecularResponsiveIllum); prevSpecularResponsiveIllum = max(prevSpecularResponsiveIllum, 0.0); + // Fitering previous SH data + #ifdef RELAX_SH + prevSpecularSH1 = BilinearWithCustomWeightsFloat4(gPrevSpecularSH1, bilinearOrigin, bilinearCustomWeights); + prevSpecularResponsiveSH1 = BilinearWithCustomWeightsFloat4(gPrevSpecularResponsiveSH1, bilinearOrigin, bilinearCustomWeights); + #endif + // Fitering previous data that does not need bicubic prevReflectionHitT = gPrevReflectionHitT.SampleLevel(gLinearClamp, prevUVVMB, 0).x; prevReflectionHitT = max(0.001, prevReflectionHitT); @@ -441,10 +472,16 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo // Input noisy data #ifdef RELAX_DIFFUSE float3 diffuseIllumination = gDiffuseIllumination[pixelPos.xy + gRectOrigin].rgb; + #ifdef RELAX_SH + float4 diffuseSH1 = gDiffuseSH1[pixelPos.xy + gRectOrigin]; + #endif #endif #ifdef RELAX_SPECULAR float4 specularIllumination = gSpecularIllumination[pixelPos.xy + gRectOrigin]; + #ifdef RELAX_SH + float4 specularSH1 = gSpecularSH1[pixelPos.xy + gRectOrigin]; + #endif #endif // Calculating average normal, minHitDist and specular sigma @@ -550,11 +587,20 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo #ifdef RELAX_DIFFUSE float4 prevDiffuseIlluminationAnd2ndMomentSMB; float3 prevDiffuseIlluminationAnd2ndMomentSMBResponsive; + #ifdef RELAX_SH + float4 prevDiffuseSH1; + float4 prevDiffuseResponsiveSH1; + #endif + #endif #ifdef RELAX_SPECULAR float4 prevSpecularIlluminationAnd2ndMomentSMB; float3 prevSpecularIlluminationAnd2ndMomentSMBResponsive; float prevReflectionHitTSMB; + #ifdef RELAX_SH + float4 prevSpecularSMBSH1; + float4 prevSpecularSMBResponsiveSH1; + #endif #endif float historyLength; @@ -564,9 +610,9 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo prevUVSMB, currentLinearZ, normalize(currentNormalAveraged), -#ifdef RELAX_SPECULAR - specularIllumination.a, -#endif + #ifdef RELAX_SPECULAR + specularIllumination.a, + #endif NoV, parallaxInPixels, currentMaterialID, @@ -574,15 +620,23 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo mixedDisocclusionDepthThreshold, footprintQuality, historyLength -#ifdef RELAX_DIFFUSE - , prevDiffuseIlluminationAnd2ndMomentSMB - , prevDiffuseIlluminationAnd2ndMomentSMBResponsive -#endif -#ifdef RELAX_SPECULAR - , prevSpecularIlluminationAnd2ndMomentSMB - , prevSpecularIlluminationAnd2ndMomentSMBResponsive - , prevReflectionHitTSMB -#endif + #ifdef RELAX_DIFFUSE + , prevDiffuseIlluminationAnd2ndMomentSMB + , prevDiffuseIlluminationAnd2ndMomentSMBResponsive + #ifdef RELAX_SH + , prevDiffuseSH1 + , prevDiffuseResponsiveSH1 + #endif + #endif + #ifdef RELAX_SPECULAR + , prevSpecularIlluminationAnd2ndMomentSMB + , prevSpecularIlluminationAnd2ndMomentSMBResponsive + , prevReflectionHitTSMB + #ifdef RELAX_SH + , prevSpecularSMBSH1 + , prevSpecularSMBResponsiveSH1 + #endif + #endif ); // History length is based on surface motion based disocclusion @@ -642,6 +696,13 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo // Write out the diffuse results gOutDiffuseIllumination[pixelPos] = accumulatedDiffuseIlluminationAnd2ndMoment; gOutDiffuseIlluminationResponsive[pixelPos] = float4(accumulatedDiffuseIlluminationResponsive, 0); + + #ifdef RELAX_SH + float4 accumulatedDiffuseSH1 = lerp(prevDiffuseSH1, diffuseSH1, diffuseAlpha); + float4 accumulatedDiffuseResponsiveSH1 = lerp(prevDiffuseResponsiveSH1, diffuseSH1, diffuseAlphaResponsive); + gOutDiffuseSH1[pixelPos] = accumulatedDiffuseSH1; + gOutDiffuseResponsiveSH1[pixelPos] = float4(accumulatedDiffuseResponsiveSH1); + #endif #endif gOutHistoryLength[pixelPos] = historyLength / 255.0; @@ -681,6 +742,10 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo float prevRoughnessVMB; float prevReflectionHitTVMB; float2 prevUVVMB; + #ifdef RELAX_SH + float4 prevSpecularVMBSH1; + float4 prevSpecularVMBResponsiveSH1; + #endif float VMBReprojectionFound = loadVirtualMotionBasedPrevData( pixelPos, @@ -704,6 +769,10 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo prevRoughnessVMB, prevReflectionHitTVMB, prevUVVMB + #ifdef RELAX_SH + , prevSpecularVMBSH1 + , prevSpecularVMBResponsiveSH1 + #endif ); // Amount of virtual motion - dominant factor @@ -794,7 +863,7 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo // Current specular signal ( surface motion ) float smcFactor = lerp(0.25, 0.001, SMC); // TODO: tune better? smcFactor *= lerp(1.0, lerp(1.0, 0.25, SMC), NoV); - float specSMBConfidence = 1.0 / (1.0 + smcFactor * parallaxInPixels); + float specSMBConfidence = (SMBReprojectionFound > 0 ? 1.0 : 0.0) / (1.0 + smcFactor * parallaxInPixels); specSMBConfidence *= GetNormalWeight(V, Vprev, lobeHalfAngle * NoV / gFramerateScale); float specSMBAlpha = 1.0 - specSMBConfidence; @@ -851,6 +920,19 @@ NRD_EXPORT void NRD_CS_MAIN(uint2 pixelPos : SV_DispatchThreadId, uint2 threadPo float3 accumulatedSpecularIlluminationResponsive = lerp(accumulatedSpecularSMBResponsive.xyz, accumulatedSpecularVMBResponsive.xyz, virtualHistoryAmount); float accumulatedSpecular2ndMoment = lerp(accumulatedSpecularM2SMB, accumulatedSpecularM2VMB, virtualHistoryAmount); + #ifdef RELAX_SH + float4 accumulatedSpecularSMBSH1 = lerp(prevSpecularSMBSH1, specularSH1, specSMBAlpha); + float4 accumulatedSpecularSMBResponsiveSH1 = lerp(prevSpecularSMBResponsiveSH1, specularSH1, specSMBResponsiveAlpha); + + float4 accumulatedSpecularVMBSH1 = lerp(prevSpecularVMBSH1, specularSH1, specVMBAlpha); + float4 accumulatedSpecularVMBResponsiveSH1 = lerp(prevSpecularVMBResponsiveSH1, specularSH1, specVMBResponsiveAlpha); + + float4 accumulatedSpecularSH1 = lerp(accumulatedSpecularSMBSH1, accumulatedSpecularVMBSH1, virtualHistoryAmount); + float4 accumulatedSpecularResponsiveSH1 = lerp(accumulatedSpecularSMBResponsiveSH1, accumulatedSpecularVMBResponsiveSH1, virtualHistoryAmount); + gOutSpecularSH1[pixelPos] = float4(accumulatedSpecularSH1.rgb, currentRoughnessModified); + gOutSpecularResponsiveSH1[pixelPos] = accumulatedSpecularResponsiveSH1; + #endif + // If zero specular sample (color = 0), artificially adding variance for pixels with low reprojection confidence float specularHistoryConfidence = lerp(specSMBConfidence, specVMBConfidence, virtualHistoryAmount); if (accumulatedSpecular2ndMoment == 0) accumulatedSpecular2ndMoment = gSpecularVarianceBoost * (1.0 - specularHistoryConfidence); diff --git a/Shaders/Include/SIGMA/SIGMA_Common.hlsli b/Shaders/Include/SIGMA/SIGMA_Common.hlsli index 1007e1ae..53dc5a7e 100644 --- a/Shaders/Include/SIGMA/SIGMA_Common.hlsli +++ b/Shaders/Include/SIGMA/SIGMA_Common.hlsli @@ -19,7 +19,7 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define UnpackShadow( s ) ( s * s ) // TODO: shadow unpacking is less trivial -// 2.0 - closer to reference (dictated by encoding) +// 2.0 - closer to reference ( dictated by encoding ) // 2.0 - s.x - looks better #if 0 #define UnpackShadowSpecial( s ) STL::Math::Pow01( s, 2.0 - s.x * ( 1 - SIGMA_REFERENCE ) ) diff --git a/Shaders/Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli b/Shaders/Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli index 4fbc7a15..5350d2bd 100644 --- a/Shaders/Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli +++ b/Shaders/Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli @@ -51,7 +51,7 @@ NRD_CONSTANTS_END NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START - NRD_OUTPUT_TEXTURE( RWTexture2D, gInOut_Mv, u, 0 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gInOut_Mv, u, 0 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOut_InternalData, u, 1 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOut_Diff, u, 2 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOut_Spec, u, 3 ) @@ -77,7 +77,7 @@ NRD_CONSTANTS_END NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START - NRD_OUTPUT_TEXTURE( RWTexture2D, gInOut_Mv, u, 0 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gInOut_Mv, u, 0 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOut_InternalData, u, 1 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOut_Diff, u, 2 ) #ifdef REBLUR_SH @@ -103,7 +103,7 @@ NRD_CONSTANTS_END NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START - NRD_OUTPUT_TEXTURE( RWTexture2D, gInOut_Mv, u, 0 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gInOut_Mv, u, 0 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOut_InternalData, u, 1 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOut_Spec, u, 2 ) #ifdef REBLUR_SH diff --git a/Shaders/Resources/RELAX_DiffuseSpecular_Atrous.resources.hlsli b/Shaders/Resources/RELAX_DiffuseSpecular_Atrous.resources.hlsli index 38bcc7d4..3aaf7f63 100644 --- a/Shaders/Resources/RELAX_DiffuseSpecular_Atrous.resources.hlsli +++ b/Shaders/Resources/RELAX_DiffuseSpecular_Atrous.resources.hlsli @@ -37,6 +37,9 @@ NRD_SAMPLER_END NRD_CONSTANT( float, gConfidenceDrivenRelaxationMultiplier ) NRD_CONSTANT( float, gConfidenceDrivenLuminanceEdgeStoppingRelaxation ) NRD_CONSTANT( float, gConfidenceDrivenNormalEdgeStoppingRelaxation ) + #ifdef RELAX_SH + NRD_CONSTANT( uint, gIsLastPass ) + #endif NRD_CONSTANTS_END NRD_INPUT_TEXTURE_START @@ -48,11 +51,19 @@ NRD_SAMPLER_END NRD_INPUT_TEXTURE( Texture2D, gViewZFP16, t, 5 ) NRD_INPUT_TEXTURE( Texture2D, gSpecConfidence, t, 6 ) NRD_INPUT_TEXTURE( Texture2D, gDiffConfidence, t, 7 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gSpecularSH1, t, 8 ) + NRD_INPUT_TEXTURE( Texture2D, gDiffuseSH1, t, 9 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularIlluminationAndVariance, u, 0 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIlluminationAndVariance, u, 1 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularSH1, u, 2 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseSH1, u, 3 ) + #endif NRD_OUTPUT_TEXTURE_END #elif( defined RELAX_DIFFUSE ) @@ -68,6 +79,9 @@ NRD_SAMPLER_END NRD_CONSTANT( float, gConfidenceDrivenRelaxationMultiplier ) NRD_CONSTANT( float, gConfidenceDrivenLuminanceEdgeStoppingRelaxation ) NRD_CONSTANT( float, gConfidenceDrivenNormalEdgeStoppingRelaxation ) + #ifdef RELAX_SH + NRD_CONSTANT( uint, gIsLastPass ) + #endif NRD_CONSTANTS_END NRD_INPUT_TEXTURE_START @@ -76,10 +90,16 @@ NRD_SAMPLER_END NRD_INPUT_TEXTURE( Texture2D, gNormalRoughness, t, 2 ) NRD_INPUT_TEXTURE( Texture2D, gViewZFP16, t, 3 ) NRD_INPUT_TEXTURE( Texture2D, gDiffConfidence, t, 4 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gDiffuseSH1, t, 5 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIlluminationAndVariance, u, 0 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseSH1, u, 1 ) + #endif NRD_OUTPUT_TEXTURE_END #elif( defined RELAX_SPECULAR ) @@ -102,6 +122,9 @@ NRD_SAMPLER_END NRD_CONSTANT( float, gConfidenceDrivenRelaxationMultiplier ) NRD_CONSTANT( float, gConfidenceDrivenLuminanceEdgeStoppingRelaxation ) NRD_CONSTANT( float, gConfidenceDrivenNormalEdgeStoppingRelaxation ) + #ifdef RELAX_SH + NRD_CONSTANT( uint, gIsLastPass ) + #endif NRD_CONSTANTS_END NRD_INPUT_TEXTURE_START @@ -111,10 +134,16 @@ NRD_SAMPLER_END NRD_INPUT_TEXTURE( Texture2D, gNormalRoughness, t, 3 ) NRD_INPUT_TEXTURE( Texture2D, gViewZFP16, t, 4 ) NRD_INPUT_TEXTURE( Texture2D, gSpecConfidence, t, 5 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gSpecularSH1, t, 6 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularIlluminationAndVariance, u, 0 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularSH1, u, 1 ) + #endif NRD_OUTPUT_TEXTURE_END #endif diff --git a/Shaders/Resources/RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli b/Shaders/Resources/RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli index 47222642..e1f25768 100644 --- a/Shaders/Resources/RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli +++ b/Shaders/Resources/RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli @@ -51,6 +51,10 @@ NRD_SAMPLER_END NRD_INPUT_TEXTURE( Texture2D, gViewZFP16, t, 5 ) NRD_INPUT_TEXTURE( Texture2D, gSpecConfidence, t, 6 ) NRD_INPUT_TEXTURE( Texture2D, gDiffConfidence, t, 7 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gSpecularSH1, t, 8 ) + NRD_INPUT_TEXTURE( Texture2D, gDiffuseSH1, t, 9 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START @@ -58,6 +62,11 @@ NRD_SAMPLER_END NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIlluminationAndVariance, u, 1 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutNormalRoughness, u, 2 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutMaterialID, u, 3 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularSH1, u, 4 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseSH1, u, 5 ) + #endif + NRD_OUTPUT_TEXTURE_END #elif( defined RELAX_DIFFUSE ) @@ -83,12 +92,18 @@ NRD_SAMPLER_END NRD_INPUT_TEXTURE( Texture2D, gNormalRoughness, t, 2 ) NRD_INPUT_TEXTURE( Texture2D, gViewZFP16, t, 3 ) NRD_INPUT_TEXTURE( Texture2D, gDiffConfidence, t, 4 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gDiffuseSH1, t, 5 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIlluminationAndVariance, u, 0 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutNormalRoughness, u, 1 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutMaterialID, u, 2 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseSH1, u, 3 ) + #endif NRD_OUTPUT_TEXTURE_END #elif( defined RELAX_SPECULAR ) @@ -122,12 +137,18 @@ NRD_SAMPLER_END NRD_INPUT_TEXTURE( Texture2D, gNormalRoughness, t, 3 ) NRD_INPUT_TEXTURE( Texture2D, gViewZFP16, t, 4 ) NRD_INPUT_TEXTURE( Texture2D, gSpecConfidence, t, 5 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gSpecularSH1, t, 6 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularIlluminationAndVariance, u, 0 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutNormalRoughness, u, 1 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutMaterialID, u, 2 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularSH1, u, 3 ) + #endif NRD_OUTPUT_TEXTURE_END #endif diff --git a/Shaders/Resources/RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli b/Shaders/Resources/RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli index bc065291..0ccb6d6c 100644 --- a/Shaders/Resources/RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli +++ b/Shaders/Resources/RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli @@ -35,6 +35,12 @@ NRD_CONSTANTS_END NRD_INPUT_TEXTURE( Texture2D, gSpecularIlluminationResponsive, t, 2 ) NRD_INPUT_TEXTURE( Texture2D, gDiffuseIlluminationResponsive, t, 3 ) NRD_INPUT_TEXTURE( Texture2D, gHistoryLength, t, 4 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gSpecularSH1, t, 5 ) + NRD_INPUT_TEXTURE( Texture2D, gDiffuseSH1, t, 6 ) + NRD_INPUT_TEXTURE( Texture2D, gSpecularResponsiveSH1, t, 7 ) + NRD_INPUT_TEXTURE( Texture2D, gDiffuseResponsiveSH1, t, 8 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START @@ -43,6 +49,12 @@ NRD_CONSTANTS_END NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularIlluminationResponsive, u, 2 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIlluminationResponsive, u, 3 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutHistoryLength, u, 4 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularSH1, u, 5 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseSH1, u, 6 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularResponsiveSH1, u, 7 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseResponsiveSH1, u, 8 ) + #endif NRD_OUTPUT_TEXTURE_END #elif( defined RELAX_DIFFUSE ) @@ -51,12 +63,20 @@ NRD_CONSTANTS_END NRD_INPUT_TEXTURE( Texture2D, gDiffuseIllumination, t, 0 ) NRD_INPUT_TEXTURE( Texture2D, gDiffuseIlluminationResponsive, t, 1 ) NRD_INPUT_TEXTURE( Texture2D, gHistoryLength, t, 2 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gDiffuseSH1, t, 3 ) + NRD_INPUT_TEXTURE( Texture2D, gDiffuseResponsiveSH1, t, 4 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIllumination, u, 0 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIlluminationResponsive, u, 1 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutHistoryLength, u, 2 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseSH1, u, 3 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseResponsiveSH1, u, 4 ) + #endif NRD_OUTPUT_TEXTURE_END #elif( defined RELAX_SPECULAR ) @@ -65,12 +85,20 @@ NRD_CONSTANTS_END NRD_INPUT_TEXTURE( Texture2D, gSpecularIllumination, t, 0 ) NRD_INPUT_TEXTURE( Texture2D, gSpecularIlluminationResponsive, t, 1 ) NRD_INPUT_TEXTURE( Texture2D, gHistoryLength, t, 2 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gSpecularSH1, t, 3 ) + NRD_INPUT_TEXTURE( Texture2D, gSpecularResponsiveSH1, t, 4 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularIllumination, u, 0 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularIlluminationResponsive, u, 1 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutHistoryLength, u, 2 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularSH1, u, 3 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularResponsiveSH1, u, 4 ) + #endif NRD_OUTPUT_TEXTURE_END #endif diff --git a/Shaders/Resources/RELAX_DiffuseSpecular_HistoryFix.resources.hlsli b/Shaders/Resources/RELAX_DiffuseSpecular_HistoryFix.resources.hlsli index da8ccb7e..4bb83836 100644 --- a/Shaders/Resources/RELAX_DiffuseSpecular_HistoryFix.resources.hlsli +++ b/Shaders/Resources/RELAX_DiffuseSpecular_HistoryFix.resources.hlsli @@ -37,11 +37,19 @@ NRD_CONSTANTS_END NRD_INPUT_TEXTURE( Texture2D, gHistoryLength, t, 2 ) NRD_INPUT_TEXTURE( Texture2D, gNormalRoughness, t, 3 ) NRD_INPUT_TEXTURE( Texture2D, gViewZFP16, t, 4 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gSpecularSH1, t, 5 ) + NRD_INPUT_TEXTURE( Texture2D, gDiffuseSH1, t, 6 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularIllumination, u, 0 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIllumination, u, 1 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularSH1, u, 2 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseSH1, u, 3 ) + #endif NRD_OUTPUT_TEXTURE_END #elif( defined RELAX_DIFFUSE ) @@ -51,10 +59,16 @@ NRD_CONSTANTS_END NRD_INPUT_TEXTURE( Texture2D, gHistoryLength, t, 1 ) NRD_INPUT_TEXTURE( Texture2D, gNormalRoughness, t, 2 ) NRD_INPUT_TEXTURE( Texture2D, gViewZFP16, t, 3 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gDiffuseSH1, t, 4 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIllumination, u, 0 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseSH1, u, 1 ) + #endif NRD_OUTPUT_TEXTURE_END #elif( defined RELAX_SPECULAR ) @@ -64,10 +78,16 @@ NRD_CONSTANTS_END NRD_INPUT_TEXTURE( Texture2D, gHistoryLength, t, 1 ) NRD_INPUT_TEXTURE( Texture2D, gNormalRoughness, t, 2 ) NRD_INPUT_TEXTURE( Texture2D, gViewZFP16, t, 3 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gSpecularSH1, t, 4 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularIllumination, u, 0 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularSH1, u, 1 ) + #endif NRD_OUTPUT_TEXTURE_END #endif diff --git a/Shaders/Resources/RELAX_DiffuseSpecular_PrePass.resources.hlsli b/Shaders/Resources/RELAX_DiffuseSpecular_PrePass.resources.hlsli index 916c104f..c39f5225 100644 --- a/Shaders/Resources/RELAX_DiffuseSpecular_PrePass.resources.hlsli +++ b/Shaders/Resources/RELAX_DiffuseSpecular_PrePass.resources.hlsli @@ -37,6 +37,10 @@ NRD_SAMPLER_END NRD_INPUT_TEXTURE( Texture2D, gDiffuseIllumination, t, 1 ) NRD_INPUT_TEXTURE( Texture2D, gNormalRoughness, t, 2 ) NRD_INPUT_TEXTURE( Texture2D, gViewZ, t, 3 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gSpecularSH1, t, 4 ) + NRD_INPUT_TEXTURE( Texture2D, gDiffuseSH1, t, 5 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START @@ -44,6 +48,10 @@ NRD_SAMPLER_END NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIllumination, u, 1 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutViewZ, u, 2) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutScaledViewZ, u, 3 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularSH1, u, 4 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseSH1, u, 5 ) + #endif NRD_OUTPUT_TEXTURE_END #elif( defined RELAX_DIFFUSE ) @@ -62,12 +70,18 @@ NRD_SAMPLER_END NRD_INPUT_TEXTURE( Texture2D, gDiffuseIllumination, t, 0 ) NRD_INPUT_TEXTURE( Texture2D, gNormalRoughness, t, 1 ) NRD_INPUT_TEXTURE( Texture2D, gViewZ, t, 2 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gDiffuseSH1, t, 3 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIllumination, u, 0 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutViewZ, u, 1) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutScaledViewZ, u, 2 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseSH1, u, 3 ) + #endif NRD_OUTPUT_TEXTURE_END #elif( defined RELAX_SPECULAR ) @@ -88,12 +102,18 @@ NRD_SAMPLER_END NRD_INPUT_TEXTURE( Texture2D, gSpecularIllumination, t, 0 ) NRD_INPUT_TEXTURE( Texture2D, gNormalRoughness, t, 1 ) NRD_INPUT_TEXTURE( Texture2D, gViewZ, t, 2 ) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gSpecularSH1, t, 3 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularIllumination, u, 0 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutViewZ, u, 1) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutScaledViewZ, u, 2 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularSH1, u, 3 ) + #endif NRD_OUTPUT_TEXTURE_END #endif diff --git a/Shaders/Resources/RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli b/Shaders/Resources/RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli index 39f1f739..06da7c41 100644 --- a/Shaders/Resources/RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli +++ b/Shaders/Resources/RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli @@ -52,6 +52,14 @@ NRD_SAMPLER_END NRD_INPUT_TEXTURE( Texture2D, gSpecConfidence, t, 14 ) NRD_INPUT_TEXTURE( Texture2D, gDiffConfidence, t, 15 ) NRD_INPUT_TEXTURE( Texture2D, gDisocclusionThresholdMix, t, 16) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gSpecularSH1, t, 17 ) + NRD_INPUT_TEXTURE( Texture2D, gDiffuseSH1, t, 18 ) + NRD_INPUT_TEXTURE( Texture2D, gPrevSpecularResponsiveSH1, t, 19 ) + NRD_INPUT_TEXTURE( Texture2D, gPrevDiffuseResponsiveSH1, t, 20 ) + NRD_INPUT_TEXTURE( Texture2D, gPrevSpecularSH1, t, 21 ) + NRD_INPUT_TEXTURE( Texture2D, gPrevDiffuseSH1, t, 22 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START @@ -62,6 +70,12 @@ NRD_SAMPLER_END NRD_OUTPUT_TEXTURE( RWTexture2D, gOutReflectionHitT, u, 4 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutHistoryLength, u, 5 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularReprojectionConfidence, u, 6 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularSH1, u, 7 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseSH1, u, 8 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularResponsiveSH1, u, 9 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseResponsiveSH1, u, 10 ) + #endif NRD_OUTPUT_TEXTURE_END #elif( defined RELAX_DIFFUSE ) @@ -91,12 +105,21 @@ NRD_SAMPLER_END NRD_INPUT_TEXTURE( Texture2D, gPrevMaterialID, t, 9 ) NRD_INPUT_TEXTURE( Texture2D, gDiffConfidence, t, 10 ) NRD_INPUT_TEXTURE( Texture2D, gDisocclusionThresholdMix, t, 11) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gDiffuseSH1, t, 12 ) + NRD_INPUT_TEXTURE( Texture2D, gPrevDiffuseResponsiveSH1, t, 13 ) + NRD_INPUT_TEXTURE( Texture2D, gPrevDiffuseSH1, t, 14 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIllumination, u, 0 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseIlluminationResponsive, u, 1 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutHistoryLength, u, 2 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseSH1, u, 3 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutDiffuseResponsiveSH1, u, 4 ) + #endif NRD_OUTPUT_TEXTURE_END #elif( defined RELAX_SPECULAR ) @@ -129,6 +152,11 @@ NRD_SAMPLER_END NRD_INPUT_TEXTURE( Texture2D, gPrevMaterialID, t, 10 ) NRD_INPUT_TEXTURE( Texture2D, gSpecConfidence, t, 11 ) NRD_INPUT_TEXTURE( Texture2D, gDisocclusionThresholdMix, t, 12) + #ifdef RELAX_SH + NRD_INPUT_TEXTURE( Texture2D, gSpecularSH1, t, 13 ) + NRD_INPUT_TEXTURE( Texture2D, gPrevSpecularResponsiveSH1, t, 14 ) + NRD_INPUT_TEXTURE( Texture2D, gPrevSpecularSH1, t, 15 ) + #endif NRD_INPUT_TEXTURE_END NRD_OUTPUT_TEXTURE_START @@ -137,6 +165,10 @@ NRD_SAMPLER_END NRD_OUTPUT_TEXTURE( RWTexture2D, gOutReflectionHitT, u, 2 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutHistoryLength, u, 3 ) NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularReprojectionConfidence, u, 4 ) + #ifdef RELAX_SH + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularSH1, u, 5 ) + NRD_OUTPUT_TEXTURE( RWTexture2D, gOutSpecularResponsiveSH1, u, 6 ) + #endif NRD_OUTPUT_TEXTURE_END #endif diff --git a/Shaders/Source/Clear_f.cs.hlsl b/Shaders/Source/Clear_f.cs.hlsl index 1a567b2e..7c766c83 100644 --- a/Shaders/Source/Clear_f.cs.hlsl +++ b/Shaders/Source/Clear_f.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Resources/Clear_f.resources.hlsli" +#include "Clear_f.resources.hlsli" -#include "../Include/Common.hlsli" +#include "Common.hlsli" [numthreads( 16, 16, 1 )] NRD_EXPORT void NRD_CS_MAIN( uint2 pixelPos : SV_DispatchThreadId ) diff --git a/Shaders/Source/Clear_ui.cs.hlsl b/Shaders/Source/Clear_ui.cs.hlsl index c1c26370..af6ddc4e 100644 --- a/Shaders/Source/Clear_ui.cs.hlsl +++ b/Shaders/Source/Clear_ui.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Resources/Clear_ui.resources.hlsli" +#include "Clear_ui.resources.hlsli" -#include "../Include/Common.hlsli" +#include "Common.hlsli" [numthreads( 16, 16, 1 )] NRD_EXPORT void NRD_CS_MAIN( uint2 pixelPos : SV_DispatchThreadId ) diff --git a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_Blur.cs.hlsl b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_Blur.cs.hlsl index e60609ad..9a251abd 100644 --- a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_Blur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_HistoryFix.cs.hlsl index c80ccd83..d591157e 100644 --- a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_HistoryFix.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_PostBlur.cs.hlsl index 89ac0ea4..613332d8 100644 --- a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_PostBlur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl index 8baa5fd7..6c7cf79c 100644 --- a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_PrePass.cs.hlsl b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_PrePass.cs.hlsl index 4f178e5c..79e2c6a3 100644 --- a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_PrePass.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.hlsl index d6f832f3..662a4971 100644 --- a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_TemporalStabilization.cs.hlsl index bf8c6e62..5a600fd8 100644 --- a/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseDirectionalOcclusion_TemporalStabilization.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseOcclusion_Blur.cs.hlsl b/Shaders/Source/REBLUR_DiffuseOcclusion_Blur.cs.hlsl index 70748f66..e12aca94 100644 --- a/Shaders/Source/REBLUR_DiffuseOcclusion_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseOcclusion_Blur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseOcclusion_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_DiffuseOcclusion_HistoryFix.cs.hlsl index 2c545daf..b1884ab4 100644 --- a/Shaders/Source/REBLUR_DiffuseOcclusion_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseOcclusion_HistoryFix.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseOcclusion_HitDistReconstruction.cs.hlsl b/Shaders/Source/REBLUR_DiffuseOcclusion_HitDistReconstruction.cs.hlsl index dda10740..e9826a0e 100644 --- a/Shaders/Source/REBLUR_DiffuseOcclusion_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseOcclusion_HitDistReconstruction.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseOcclusion_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/REBLUR_DiffuseOcclusion_HitDistReconstruction_5x5.cs.hlsl index 66200b42..45d9d658 100644 --- a/Shaders/Source/REBLUR_DiffuseOcclusion_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseOcclusion_HitDistReconstruction_5x5.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_OCCLUSION #define REBLUR_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl index d3f9eeb0..60ed8706 100644 --- a/Shaders/Source/REBLUR_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_OCCLUSION #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseOcclusion_PrePass.cs.hlsl b/Shaders/Source/REBLUR_DiffuseOcclusion_PrePass.cs.hlsl index 8404ea28..637ca50e 100644 --- a/Shaders/Source/REBLUR_DiffuseOcclusion_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseOcclusion_PrePass.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseOcclusion_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_DiffuseOcclusion_TemporalAccumulation.cs.hlsl index 9e89e8d4..76c0776b 100644 --- a/Shaders/Source/REBLUR_DiffuseOcclusion_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseOcclusion_TemporalAccumulation.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSh_Blur.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSh_Blur.cs.hlsl index 38584760..cc32855c 100644 --- a/Shaders/Source/REBLUR_DiffuseSh_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSh_Blur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSh_CopyStabilizedHistory.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSh_CopyStabilizedHistory.cs.hlsl index 7b432438..2828fc84 100644 --- a/Shaders/Source/REBLUR_DiffuseSh_CopyStabilizedHistory.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSh_CopyStabilizedHistory.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_CopyStabilizedHistory.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_CopyStabilizedHistory.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_CopyStabilizedHistory.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_CopyStabilizedHistory.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSh_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSh_HistoryFix.cs.hlsl index 6cf23e12..d73c2ea2 100644 --- a/Shaders/Source/REBLUR_DiffuseSh_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSh_HistoryFix.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSh_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSh_PostBlur.cs.hlsl index 0b005482..718b56f2 100644 --- a/Shaders/Source/REBLUR_DiffuseSh_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSh_PostBlur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSh_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSh_PostBlur_NoTemporalStabilization.cs.hlsl index 3cf568ed..e57bbee5 100644 --- a/Shaders/Source/REBLUR_DiffuseSh_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSh_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SH #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSh_PrePass.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSh_PrePass.cs.hlsl index 99410b66..5b220498 100644 --- a/Shaders/Source/REBLUR_DiffuseSh_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSh_PrePass.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSh_SplitScreen.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSh_SplitScreen.cs.hlsl index a6bb62c9..3823701e 100644 --- a/Shaders/Source/REBLUR_DiffuseSh_SplitScreen.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSh_SplitScreen.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_SplitScreen.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_SplitScreen.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_SplitScreen.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_SplitScreen.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSh_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSh_TemporalAccumulation.cs.hlsl index 03ade65d..4ff65a69 100644 --- a/Shaders/Source/REBLUR_DiffuseSh_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSh_TemporalAccumulation.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSh_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSh_TemporalStabilization.cs.hlsl index 55140dd4..eddec30d 100644 --- a/Shaders/Source/REBLUR_DiffuseSh_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSh_TemporalStabilization.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_Blur.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_Blur.cs.hlsl index 31e17f00..5b48a2cf 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_Blur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_HistoryFix.cs.hlsl index 5b570a73..ab079686 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_HistoryFix.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction.cs.hlsl index ce19b07f..485fac06 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl index f38e5906..cc5d8529 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_OCCLUSION #define REBLUR_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl index e72c827d..d49e98d0 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_OCCLUSION #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_PrePass.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_PrePass.cs.hlsl index 9844baae..b82e9a45 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_PrePass.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_TemporalAccumulation.cs.hlsl index 996f0b52..25710942 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularOcclusion_TemporalAccumulation.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularSh_Blur.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularSh_Blur.cs.hlsl index 094087fa..afd9667b 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularSh_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularSh_Blur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularSh_CopyStabilizedHistory.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularSh_CopyStabilizedHistory.cs.hlsl index 1ebfecc1..5ac814d7 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularSh_CopyStabilizedHistory.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularSh_CopyStabilizedHistory.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_CopyStabilizedHistory.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_CopyStabilizedHistory.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_CopyStabilizedHistory.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_CopyStabilizedHistory.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularSh_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularSh_HistoryFix.cs.hlsl index f3421364..033022e4 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularSh_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularSh_HistoryFix.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularSh_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularSh_PostBlur.cs.hlsl index 918ad5f5..50a6bc0c 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularSh_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularSh_PostBlur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl index 58ece88f..b68f2319 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SH #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularSh_PrePass.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularSh_PrePass.cs.hlsl index 825eb449..46fbd347 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularSh_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularSh_PrePass.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularSh_SplitScreen.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularSh_SplitScreen.cs.hlsl index ec8c4749..8a6c1161 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularSh_SplitScreen.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularSh_SplitScreen.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_SplitScreen.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_SplitScreen.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_SplitScreen.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_SplitScreen.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl index a324c3ba..82be2a32 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecularSh_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecularSh_TemporalStabilization.cs.hlsl index cdf6456b..c51bf021 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecularSh_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecularSh_TemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecular_Blur.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecular_Blur.cs.hlsl index e9950dd5..15a203f0 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecular_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecular_Blur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecular_CopyStabilizedHistory.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecular_CopyStabilizedHistory.cs.hlsl index a8cda158..f273011c 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecular_CopyStabilizedHistory.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecular_CopyStabilizedHistory.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_CopyStabilizedHistory.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_CopyStabilizedHistory.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_CopyStabilizedHistory.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_CopyStabilizedHistory.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecular_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecular_HistoryFix.cs.hlsl index 00cece2b..030481c2 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecular_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecular_HistoryFix.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecular_HitDistReconstruction.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecular_HitDistReconstruction.cs.hlsl index 84959ea7..737d7a9a 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecular_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecular_HitDistReconstruction.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl index 85c5b7a2..f7b4ae2f 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecular_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecular_PostBlur.cs.hlsl index 6e3958a0..75833218 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecular_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecular_PostBlur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.hlsl index 0711e14c..1b21ada9 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecular_PrePass.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecular_PrePass.cs.hlsl index d3d55890..5cacf675 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecular_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecular_PrePass.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecular_SplitScreen.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecular_SplitScreen.cs.hlsl index 4dc03cef..f8960973 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecular_SplitScreen.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecular_SplitScreen.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_SplitScreen.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_SplitScreen.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_SplitScreen.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_SplitScreen.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecular_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecular_TemporalAccumulation.cs.hlsl index 4a5a115b..6b8a2886 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecular_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecular_TemporalAccumulation.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_DiffuseSpecular_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_DiffuseSpecular_TemporalStabilization.cs.hlsl index 301aa16c..9064ad58 100644 --- a/Shaders/Source/REBLUR_DiffuseSpecular_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_DiffuseSpecular_TemporalStabilization.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_Diffuse_Blur.cs.hlsl b/Shaders/Source/REBLUR_Diffuse_Blur.cs.hlsl index 8ea2ced9..776a75ec 100644 --- a/Shaders/Source/REBLUR_Diffuse_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_Diffuse_Blur.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_Diffuse_CopyStabilizedHistory.cs.hlsl b/Shaders/Source/REBLUR_Diffuse_CopyStabilizedHistory.cs.hlsl index f09ba428..68bb9e9d 100644 --- a/Shaders/Source/REBLUR_Diffuse_CopyStabilizedHistory.cs.hlsl +++ b/Shaders/Source/REBLUR_Diffuse_CopyStabilizedHistory.cs.hlsl @@ -8,13 +8,13 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_CopyStabilizedHistory.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_CopyStabilizedHistory.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_CopyStabilizedHistory.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_CopyStabilizedHistory.hlsli" diff --git a/Shaders/Source/REBLUR_Diffuse_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_Diffuse_HistoryFix.cs.hlsl index 55d4d103..360293e5 100644 --- a/Shaders/Source/REBLUR_Diffuse_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_Diffuse_HistoryFix.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_Diffuse_HitDistReconstruction.cs.hlsl b/Shaders/Source/REBLUR_Diffuse_HitDistReconstruction.cs.hlsl index 876f8943..02561573 100644 --- a/Shaders/Source/REBLUR_Diffuse_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/REBLUR_Diffuse_HitDistReconstruction.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Diffuse_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/REBLUR_Diffuse_HitDistReconstruction_5x5.cs.hlsl index 338d0586..4125b594 100644 --- a/Shaders/Source/REBLUR_Diffuse_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/REBLUR_Diffuse_HitDistReconstruction_5x5.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Diffuse_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_Diffuse_PostBlur.cs.hlsl index 4b3c119d..ea7469a2 100644 --- a/Shaders/Source/REBLUR_Diffuse_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_Diffuse_PostBlur.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Diffuse_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Diffuse_PostBlur_NoTemporalStabilization.cs.hlsl index 6a639435..490cc2e7 100644 --- a/Shaders/Source/REBLUR_Diffuse_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Diffuse_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Diffuse_PrePass.cs.hlsl b/Shaders/Source/REBLUR_Diffuse_PrePass.cs.hlsl index eaf00cbc..1fedf35c 100644 --- a/Shaders/Source/REBLUR_Diffuse_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_Diffuse_PrePass.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_Diffuse_SplitScreen.cs.hlsl b/Shaders/Source/REBLUR_Diffuse_SplitScreen.cs.hlsl index 3057d9fe..0789a173 100644 --- a/Shaders/Source/REBLUR_Diffuse_SplitScreen.cs.hlsl +++ b/Shaders/Source/REBLUR_Diffuse_SplitScreen.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_SplitScreen.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_SplitScreen.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_SplitScreen.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_SplitScreen.hlsli" diff --git a/Shaders/Source/REBLUR_Diffuse_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_Diffuse_TemporalAccumulation.cs.hlsl index d8a3635b..e219f4ca 100644 --- a/Shaders/Source/REBLUR_Diffuse_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_Diffuse_TemporalAccumulation.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_Diffuse_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Diffuse_TemporalStabilization.cs.hlsl index 2b161959..6587fac4 100644 --- a/Shaders/Source/REBLUR_Diffuse_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Diffuse_TemporalStabilization.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_Blur.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_Blur.cs.hlsl index b8f49540..49f2db83 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_Blur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_HistoryFix.cs.hlsl index 80d210f0..c838eb6b 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_HistoryFix.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur.cs.hlsl index 63e6aff6..74290c21 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl index b18bacbc..78e391af 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_DIRECTIONAL_OCCLUSION #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_PrePass.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_PrePass.cs.hlsl index c9a57f21..366aa610 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_PrePass.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.hlsl index f0f9250e..1d0a6ac9 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalStabilization.cs.hlsl index 7b84a31c..4c455a46 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_DIRECTIONAL_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_Blur.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_Blur.cs.hlsl index 3f32cb9e..704bab50 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_Blur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_HistoryFix.cs.hlsl index 99da34ba..cc8956b1 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_HistoryFix.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction.cs.hlsl index aff6ff91..95a6ecb0 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction_5x5.cs.hlsl index f035f598..233cddd1 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction_5x5.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_OCCLUSION #define REBLUR_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl index 5727f70c..03914b37 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_OCCLUSION #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_PrePass.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_PrePass.cs.hlsl index 6bcbb602..e159d662 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_PrePass.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_TemporalAccumulation.cs.hlsl index 5b9b49e4..d6a293b5 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseOcclusion_TemporalAccumulation.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSh_Blur.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSh_Blur.cs.hlsl index bbbb75fd..d0d749e2 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSh_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSh_Blur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSh_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSh_HistoryFix.cs.hlsl index 6338d2bf..ad5febc2 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSh_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSh_HistoryFix.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSh_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSh_PostBlur.cs.hlsl index 4424e9e2..83777349 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSh_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSh_PostBlur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSh_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSh_PostBlur_NoTemporalStabilization.cs.hlsl index 6f9eb0b9..d75c706a 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSh_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSh_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SH #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSh_PrePass.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSh_PrePass.cs.hlsl index 2f4e7c0e..99879266 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSh_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSh_PrePass.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSh_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSh_TemporalAccumulation.cs.hlsl index 714b496d..89cfa379 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSh_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSh_TemporalAccumulation.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSh_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSh_TemporalStabilization.cs.hlsl index baeb6b6a..064609d2 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSh_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSh_TemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_Blur.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_Blur.cs.hlsl index 3dd83564..9416f8f8 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_Blur.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_HistoryFix.cs.hlsl index e7e5e170..932f994b 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_HistoryFix.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction.cs.hlsl index 3c08f763..01094d41 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl index 490d6fca..c17b1338 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -17,9 +17,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_OCCLUSION #define REBLUR_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl index 92d8e6c6..b3b91a43 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -17,9 +17,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_OCCLUSION #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_PrePass.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_PrePass.cs.hlsl index 29898146..73701889 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_PrePass.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_TemporalAccumulation.cs.hlsl index 9c2791d0..6b244466 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularOcclusion_TemporalAccumulation.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_Blur.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_Blur.cs.hlsl index 51996667..3f22802e 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_Blur.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_HistoryFix.cs.hlsl index 87ece34a..8d6129c4 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_HistoryFix.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_PostBlur.cs.hlsl index a8c9b84b..b44538ce 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_PostBlur.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl index ccac06ae..077ec6ee 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -17,9 +17,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SH #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_PrePass.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_PrePass.cs.hlsl index 52c10985..23dbe0bd 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_PrePass.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl index 9cedf4b1..65ef5ef2 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_TemporalStabilization.cs.hlsl index b9e767f9..431b9b4b 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecularSh_TemporalStabilization.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_Blur.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_Blur.cs.hlsl index a6bacfea..d01786ba 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_Blur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_HistoryFix.cs.hlsl index c7891820..fe627962 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_HistoryFix.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_HitDistReconstruction.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_HitDistReconstruction.cs.hlsl index 300c9147..155e3459 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_HitDistReconstruction.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl index 45d554f3..d5b86dd9 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_PostBlur.cs.hlsl index b1b2ff27..c80fd6c1 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_PostBlur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.hlsl index 1efda52d..325a3adf 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SPECULAR #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_PrePass.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_PrePass.cs.hlsl index 71e64a11..cef069ac 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_PrePass.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_TemporalAccumulation.cs.hlsl index 95247a47..9ff24956 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_TemporalAccumulation.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_TemporalStabilization.cs.hlsl index 2f293716..8c79ddb8 100644 --- a/Shaders/Source/REBLUR_Perf_DiffuseSpecular_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_DiffuseSpecular_TemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Diffuse_Blur.cs.hlsl b/Shaders/Source/REBLUR_Perf_Diffuse_Blur.cs.hlsl index 166987bc..4f2d75a0 100644 --- a/Shaders/Source/REBLUR_Perf_Diffuse_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Diffuse_Blur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Diffuse_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_Perf_Diffuse_HistoryFix.cs.hlsl index 1059ea77..6cd5e4d1 100644 --- a/Shaders/Source/REBLUR_Perf_Diffuse_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Diffuse_HistoryFix.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Diffuse_HitDistReconstruction.cs.hlsl b/Shaders/Source/REBLUR_Perf_Diffuse_HitDistReconstruction.cs.hlsl index b76be61c..ee3e1a88 100644 --- a/Shaders/Source/REBLUR_Perf_Diffuse_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Diffuse_HitDistReconstruction.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Diffuse_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/REBLUR_Perf_Diffuse_HitDistReconstruction_5x5.cs.hlsl index d5bb196c..e09ffc9d 100644 --- a/Shaders/Source/REBLUR_Perf_Diffuse_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Diffuse_HitDistReconstruction_5x5.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Diffuse_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_Perf_Diffuse_PostBlur.cs.hlsl index 69b8034c..7f305c05 100644 --- a/Shaders/Source/REBLUR_Perf_Diffuse_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Diffuse_PostBlur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Diffuse_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_Diffuse_PostBlur_NoTemporalStabilization.cs.hlsl index f9d5e8ca..b9c1c90e 100644 --- a/Shaders/Source/REBLUR_Perf_Diffuse_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Diffuse_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Diffuse_PrePass.cs.hlsl b/Shaders/Source/REBLUR_Perf_Diffuse_PrePass.cs.hlsl index ab26e2a3..c1f6db8e 100644 --- a/Shaders/Source/REBLUR_Perf_Diffuse_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Diffuse_PrePass.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Diffuse_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_Perf_Diffuse_TemporalAccumulation.cs.hlsl index 82c24c12..43b13480 100644 --- a/Shaders/Source/REBLUR_Perf_Diffuse_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Diffuse_TemporalAccumulation.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Diffuse_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_Diffuse_TemporalStabilization.cs.hlsl index e9e27846..bd8f1faf 100644 --- a/Shaders/Source/REBLUR_Perf_Diffuse_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Diffuse_TemporalStabilization.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_DIFFUSE -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_Blur.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_Blur.cs.hlsl index 8f908148..e1d459b4 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_Blur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_HistoryFix.cs.hlsl index 0b768223..cfb7f6f6 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_HistoryFix.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_HitDistReconstruction.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_HitDistReconstruction.cs.hlsl index 9a1655c7..3624e214 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_HitDistReconstruction.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl index 6c406f70..71637350 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_OCCLUSION #define REBLUR_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl index 47932325..fb3440e7 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_OCCLUSION #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_PrePass.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_PrePass.cs.hlsl index d18d17ac..84c9c278 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_PrePass.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_TemporalAccumulation.cs.hlsl index 9c0ea7af..23756b30 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularOcclusion_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularOcclusion_TemporalAccumulation.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularSh_Blur.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularSh_Blur.cs.hlsl index 556561ca..4e9f2d04 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularSh_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularSh_Blur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularSh_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularSh_HistoryFix.cs.hlsl index 465fe929..999900c4 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularSh_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularSh_HistoryFix.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularSh_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularSh_PostBlur.cs.hlsl index 368de98c..5ddde9f0 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularSh_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularSh_PostBlur.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl index 9536f648..9fe57944 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,7 +8,7 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE @@ -16,9 +16,9 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #define REBLUR_SH #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularSh_PrePass.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularSh_PrePass.cs.hlsl index 724912a3..d89b7d27 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularSh_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularSh_PrePass.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularSh_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularSh_TemporalAccumulation.cs.hlsl index 6ea1f049..03dd63ad 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularSh_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularSh_TemporalAccumulation.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_SpecularSh_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_SpecularSh_TemporalStabilization.cs.hlsl index 5aa306c6..9c88f328 100644 --- a/Shaders/Source/REBLUR_Perf_SpecularSh_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_SpecularSh_TemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Specular_Blur.cs.hlsl b/Shaders/Source/REBLUR_Perf_Specular_Blur.cs.hlsl index 9aea87a2..68c36830 100644 --- a/Shaders/Source/REBLUR_Perf_Specular_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Specular_Blur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Specular_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_Perf_Specular_HistoryFix.cs.hlsl index 90da1711..9c6bae67 100644 --- a/Shaders/Source/REBLUR_Perf_Specular_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Specular_HistoryFix.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Specular_HitDistReconstruction.cs.hlsl b/Shaders/Source/REBLUR_Perf_Specular_HitDistReconstruction.cs.hlsl index 25ba1d95..7060aca8 100644 --- a/Shaders/Source/REBLUR_Perf_Specular_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Specular_HitDistReconstruction.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Specular_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/REBLUR_Perf_Specular_HitDistReconstruction_5x5.cs.hlsl index 0efb5233..ac8cd3fa 100644 --- a/Shaders/Source/REBLUR_Perf_Specular_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Specular_HitDistReconstruction_5x5.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Specular_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_Perf_Specular_PostBlur.cs.hlsl index ce1aef0b..79a6cfe4 100644 --- a/Shaders/Source/REBLUR_Perf_Specular_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Specular_PostBlur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Specular_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_Specular_PostBlur_NoTemporalStabilization.cs.hlsl index 3fb48b05..5820e03e 100644 --- a/Shaders/Source/REBLUR_Perf_Specular_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Specular_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Specular_PrePass.cs.hlsl b/Shaders/Source/REBLUR_Perf_Specular_PrePass.cs.hlsl index fa092380..0ca42d6b 100644 --- a/Shaders/Source/REBLUR_Perf_Specular_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Specular_PrePass.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Specular_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_Perf_Specular_TemporalAccumulation.cs.hlsl index b115b015..f5af8f3e 100644 --- a/Shaders/Source/REBLUR_Perf_Specular_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Specular_TemporalAccumulation.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_Perf_Specular_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Perf_Specular_TemporalStabilization.cs.hlsl index 05951e05..f546dae7 100644 --- a/Shaders/Source/REBLUR_Perf_Specular_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Perf_Specular_TemporalStabilization.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_PERFORMANCE_MODE #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularOcclusion_Blur.cs.hlsl b/Shaders/Source/REBLUR_SpecularOcclusion_Blur.cs.hlsl index b34f2c3f..33854b53 100644 --- a/Shaders/Source/REBLUR_SpecularOcclusion_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularOcclusion_Blur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularOcclusion_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_SpecularOcclusion_HistoryFix.cs.hlsl index a80684f0..e2899f75 100644 --- a/Shaders/Source/REBLUR_SpecularOcclusion_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularOcclusion_HistoryFix.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularOcclusion_HitDistReconstruction.cs.hlsl b/Shaders/Source/REBLUR_SpecularOcclusion_HitDistReconstruction.cs.hlsl index d52d0efe..03aad448 100644 --- a/Shaders/Source/REBLUR_SpecularOcclusion_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularOcclusion_HitDistReconstruction.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/REBLUR_SpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl index 5a4a2d67..5543acc0 100644 --- a/Shaders/Source/REBLUR_SpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularOcclusion_HitDistReconstruction_5x5.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_OCCLUSION #define REBLUR_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl index 4582bdc0..28561217 100644 --- a/Shaders/Source/REBLUR_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_OCCLUSION #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularOcclusion_PrePass.cs.hlsl b/Shaders/Source/REBLUR_SpecularOcclusion_PrePass.cs.hlsl index d8d2aee6..614c1fe1 100644 --- a/Shaders/Source/REBLUR_SpecularOcclusion_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularOcclusion_PrePass.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularOcclusion_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_SpecularOcclusion_TemporalAccumulation.cs.hlsl index f9c0f61d..6bd6e038 100644 --- a/Shaders/Source/REBLUR_SpecularOcclusion_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularOcclusion_TemporalAccumulation.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_OCCLUSION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularSh_Blur.cs.hlsl b/Shaders/Source/REBLUR_SpecularSh_Blur.cs.hlsl index 3f351d2d..54201347 100644 --- a/Shaders/Source/REBLUR_SpecularSh_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularSh_Blur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularSh_CopyStabilizedHistory.cs.hlsl b/Shaders/Source/REBLUR_SpecularSh_CopyStabilizedHistory.cs.hlsl index 4918cb69..1fb278a8 100644 --- a/Shaders/Source/REBLUR_SpecularSh_CopyStabilizedHistory.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularSh_CopyStabilizedHistory.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_CopyStabilizedHistory.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_CopyStabilizedHistory.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_CopyStabilizedHistory.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_CopyStabilizedHistory.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularSh_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_SpecularSh_HistoryFix.cs.hlsl index 1ff34626..823db950 100644 --- a/Shaders/Source/REBLUR_SpecularSh_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularSh_HistoryFix.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularSh_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_SpecularSh_PostBlur.cs.hlsl index ee55b836..799fbcbf 100644 --- a/Shaders/Source/REBLUR_SpecularSh_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularSh_PostBlur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_SpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl index d8c27788..97959090 100644 --- a/Shaders/Source/REBLUR_SpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularSh_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,16 +8,16 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_SH #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularSh_PrePass.cs.hlsl b/Shaders/Source/REBLUR_SpecularSh_PrePass.cs.hlsl index d2f68081..680aa530 100644 --- a/Shaders/Source/REBLUR_SpecularSh_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularSh_PrePass.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularSh_SplitScreen.cs.hlsl b/Shaders/Source/REBLUR_SpecularSh_SplitScreen.cs.hlsl index c7caa605..e1be4542 100644 --- a/Shaders/Source/REBLUR_SpecularSh_SplitScreen.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularSh_SplitScreen.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_SplitScreen.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_SplitScreen.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_SplitScreen.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_SplitScreen.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularSh_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_SpecularSh_TemporalAccumulation.cs.hlsl index b4850907..d41ba17a 100644 --- a/Shaders/Source/REBLUR_SpecularSh_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularSh_TemporalAccumulation.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_SpecularSh_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_SpecularSh_TemporalStabilization.cs.hlsl index a76cdec0..e36743a6 100644 --- a/Shaders/Source/REBLUR_SpecularSh_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_SpecularSh_TemporalStabilization.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_SH -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_Specular_Blur.cs.hlsl b/Shaders/Source/REBLUR_Specular_Blur.cs.hlsl index 00a55eab..501ca484 100644 --- a/Shaders/Source/REBLUR_Specular_Blur.cs.hlsl +++ b/Shaders/Source/REBLUR_Specular_Blur.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_Blur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_Blur.hlsli" diff --git a/Shaders/Source/REBLUR_Specular_CopyStabilizedHistory.cs.hlsl b/Shaders/Source/REBLUR_Specular_CopyStabilizedHistory.cs.hlsl index d5189ac2..77233c0b 100644 --- a/Shaders/Source/REBLUR_Specular_CopyStabilizedHistory.cs.hlsl +++ b/Shaders/Source/REBLUR_Specular_CopyStabilizedHistory.cs.hlsl @@ -8,13 +8,13 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_CopyStabilizedHistory.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_CopyStabilizedHistory.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_CopyStabilizedHistory.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_CopyStabilizedHistory.hlsli" diff --git a/Shaders/Source/REBLUR_Specular_HistoryFix.cs.hlsl b/Shaders/Source/REBLUR_Specular_HistoryFix.cs.hlsl index 1281c15b..c1732fd0 100644 --- a/Shaders/Source/REBLUR_Specular_HistoryFix.cs.hlsl +++ b/Shaders/Source/REBLUR_Specular_HistoryFix.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/REBLUR_Specular_HitDistReconstruction.cs.hlsl b/Shaders/Source/REBLUR_Specular_HitDistReconstruction.cs.hlsl index c440674d..b13faf92 100644 --- a/Shaders/Source/REBLUR_Specular_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/REBLUR_Specular_HitDistReconstruction.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Specular_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/REBLUR_Specular_HitDistReconstruction_5x5.cs.hlsl index b4b8bead..646e5f09 100644 --- a/Shaders/Source/REBLUR_Specular_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/REBLUR_Specular_HitDistReconstruction_5x5.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/REBLUR_Specular_PostBlur.cs.hlsl b/Shaders/Source/REBLUR_Specular_PostBlur.cs.hlsl index d8c88271..b575bcc7 100644 --- a/Shaders/Source/REBLUR_Specular_PostBlur.cs.hlsl +++ b/Shaders/Source/REBLUR_Specular_PostBlur.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Specular_PostBlur_NoTemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Specular_PostBlur_NoTemporalStabilization.cs.hlsl index fe773e7c..0117b69f 100644 --- a/Shaders/Source/REBLUR_Specular_PostBlur_NoTemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Specular_PostBlur_NoTemporalStabilization.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR #define REBLUR_NO_TEMPORAL_STABILIZATION -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PostBlur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PostBlur.hlsli" diff --git a/Shaders/Source/REBLUR_Specular_PrePass.cs.hlsl b/Shaders/Source/REBLUR_Specular_PrePass.cs.hlsl index 0f081800..e9855c95 100644 --- a/Shaders/Source/REBLUR_Specular_PrePass.cs.hlsl +++ b/Shaders/Source/REBLUR_Specular_PrePass.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_PrePass.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/REBLUR_Specular_SplitScreen.cs.hlsl b/Shaders/Source/REBLUR_Specular_SplitScreen.cs.hlsl index a1210498..0a7c4634 100644 --- a/Shaders/Source/REBLUR_Specular_SplitScreen.cs.hlsl +++ b/Shaders/Source/REBLUR_Specular_SplitScreen.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_SplitScreen.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_SplitScreen.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_SplitScreen.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_SplitScreen.hlsli" diff --git a/Shaders/Source/REBLUR_Specular_TemporalAccumulation.cs.hlsl b/Shaders/Source/REBLUR_Specular_TemporalAccumulation.cs.hlsl index f3bf9cea..0f846116 100644 --- a/Shaders/Source/REBLUR_Specular_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REBLUR_Specular_TemporalAccumulation.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/REBLUR_Specular_TemporalStabilization.cs.hlsl b/Shaders/Source/REBLUR_Specular_TemporalStabilization.cs.hlsl index ce5e3302..d92347cb 100644 --- a/Shaders/Source/REBLUR_Specular_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/REBLUR_Specular_TemporalStabilization.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define REBLUR_SPECULAR -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_DiffuseSpecular_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" -#include "../Include/REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" +#include "REBLUR/REBLUR_DiffuseSpecular_TemporalStabilization.hlsli" diff --git a/Shaders/Source/REBLUR_Validation.cs.hlsl b/Shaders/Source/REBLUR_Validation.cs.hlsl index 3207f86f..7f3fc374 100644 --- a/Shaders/Source/REBLUR_Validation.cs.hlsl +++ b/Shaders/Source/REBLUR_Validation.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/REBLUR/REBLUR_Config.hlsli" -#include "../Resources/REBLUR_Validation.resources.hlsli" +#include "REBLUR/REBLUR_Config.hlsli" +#include "REBLUR_Validation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/REBLUR/REBLUR_Common.hlsli" +#include "Common.hlsli" +#include "REBLUR/REBLUR_Common.hlsli" #define VIEWPORT_SIZE 0.25 #define OFFSET 5 diff --git a/Shaders/Source/REFERENCE_SplitScreen.cs.hlsl b/Shaders/Source/REFERENCE_SplitScreen.cs.hlsl index 156fc7e9..a0d45a0e 100644 --- a/Shaders/Source/REFERENCE_SplitScreen.cs.hlsl +++ b/Shaders/Source/REFERENCE_SplitScreen.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Resources/REFERENCE_SplitScreen.resources.hlsli" +#include "REFERENCE_SplitScreen.resources.hlsli" -#include "../Include/Common.hlsli" +#include "Common.hlsli" [numthreads( GROUP_X, GROUP_Y, 1 )] NRD_EXPORT void NRD_CS_MAIN( uint2 pixelPos : SV_DispatchThreadId ) diff --git a/Shaders/Source/REFERENCE_TemporalAccumulation.cs.hlsl b/Shaders/Source/REFERENCE_TemporalAccumulation.cs.hlsl index c5756e75..9628d829 100644 --- a/Shaders/Source/REFERENCE_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/REFERENCE_TemporalAccumulation.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Resources/REFERENCE_TemporalAccumulation.resources.hlsli" +#include "REFERENCE_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" +#include "Common.hlsli" [numthreads( GROUP_X, GROUP_Y, 1 )] NRD_EXPORT void NRD_CS_MAIN( uint2 pixelPos : SV_DispatchThreadId ) diff --git a/Shaders/Source/RELAX_DiffuseSh_AntiFirefly.cs.hlsl b/Shaders/Source/RELAX_DiffuseSh_AntiFirefly.cs.hlsl new file mode 100644 index 00000000..3d5a34f0 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSh_AntiFirefly.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_DIFFUSE +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_AntiFirefly.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_AntiFirefly.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSh_Atrous.cs.hlsl b/Shaders/Source/RELAX_DiffuseSh_Atrous.cs.hlsl new file mode 100644 index 00000000..7eb43b46 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSh_Atrous.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_DIFFUSE +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_Atrous.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_Atrous.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSh_AtrousSmem.cs.hlsl b/Shaders/Source/RELAX_DiffuseSh_AtrousSmem.cs.hlsl new file mode 100644 index 00000000..c09b9712 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSh_AtrousSmem.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_DIFFUSE +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSh_HistoryClamping.cs.hlsl b/Shaders/Source/RELAX_DiffuseSh_HistoryClamping.cs.hlsl new file mode 100644 index 00000000..c0ee4bb7 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSh_HistoryClamping.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_DIFFUSE +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSh_HistoryFix.cs.hlsl b/Shaders/Source/RELAX_DiffuseSh_HistoryFix.cs.hlsl new file mode 100644 index 00000000..0b52f961 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSh_HistoryFix.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_DIFFUSE +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HistoryFix.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSh_HitDistReconstruction.cs.hlsl b/Shaders/Source/RELAX_DiffuseSh_HitDistReconstruction.cs.hlsl new file mode 100644 index 00000000..1dc88818 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSh_HitDistReconstruction.cs.hlsl @@ -0,0 +1,21 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_DIFFUSE + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSh_PrePass.cs.hlsl b/Shaders/Source/RELAX_DiffuseSh_PrePass.cs.hlsl new file mode 100644 index 00000000..cffa4ec6 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSh_PrePass.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_DIFFUSE +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_PrePass.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSh_SplitScreen.cs.hlsl b/Shaders/Source/RELAX_DiffuseSh_SplitScreen.cs.hlsl new file mode 100644 index 00000000..9ae30200 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSh_SplitScreen.cs.hlsl @@ -0,0 +1,21 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_DIFFUSE + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_SplitScreen.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_SplitScreen.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSh_TemporalAccumulation.cs.hlsl b/Shaders/Source/RELAX_DiffuseSh_TemporalAccumulation.cs.hlsl new file mode 100644 index 00000000..2d84bf5b --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSh_TemporalAccumulation.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_DIFFUSE +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecularSh_AntiFirefly.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecularSh_AntiFirefly.cs.hlsl new file mode 100644 index 00000000..fa06b66b --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSpecularSh_AntiFirefly.cs.hlsl @@ -0,0 +1,19 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_AntiFirefly.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_AntiFirefly.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecularSh_Atrous.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecularSh_Atrous.cs.hlsl new file mode 100644 index 00000000..96037e22 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSpecularSh_Atrous.cs.hlsl @@ -0,0 +1,21 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_Atrous.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_Atrous.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecularSh_AtrousSmem.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecularSh_AtrousSmem.cs.hlsl new file mode 100644 index 00000000..c918aa43 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSpecularSh_AtrousSmem.cs.hlsl @@ -0,0 +1,21 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecularSh_HistoryClamping.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecularSh_HistoryClamping.cs.hlsl new file mode 100644 index 00000000..2be34279 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSpecularSh_HistoryClamping.cs.hlsl @@ -0,0 +1,21 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecularSh_HistoryFix.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecularSh_HistoryFix.cs.hlsl new file mode 100644 index 00000000..35635b49 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSpecularSh_HistoryFix.cs.hlsl @@ -0,0 +1,21 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HistoryFix.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecularSh_PrePass.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecularSh_PrePass.cs.hlsl new file mode 100644 index 00000000..06990488 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSpecularSh_PrePass.cs.hlsl @@ -0,0 +1,21 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_PrePass.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecularSh_SplitScreen.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecularSh_SplitScreen.cs.hlsl new file mode 100644 index 00000000..2fe628b8 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSpecularSh_SplitScreen.cs.hlsl @@ -0,0 +1,19 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_SplitScreen.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_SplitScreen.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl new file mode 100644 index 00000000..9fb47b95 --- /dev/null +++ b/Shaders/Source/RELAX_DiffuseSpecularSh_TemporalAccumulation.cs.hlsl @@ -0,0 +1,21 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecular_AntiFirefly.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecular_AntiFirefly.cs.hlsl index fc9146b9..fa06b66b 100644 --- a/Shaders/Source/RELAX_DiffuseSpecular_AntiFirefly.cs.hlsl +++ b/Shaders/Source/RELAX_DiffuseSpecular_AntiFirefly.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_AntiFirefly.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_AntiFirefly.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_AntiFirefly.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_AntiFirefly.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecular_Atrous.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecular_Atrous.cs.hlsl index 61f95f21..906f04c2 100644 --- a/Shaders/Source/RELAX_DiffuseSpecular_Atrous.cs.hlsl +++ b/Shaders/Source/RELAX_DiffuseSpecular_Atrous.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_Atrous.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_Atrous.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_Atrous.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_Atrous.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecular_AtrousSmem.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecular_AtrousSmem.cs.hlsl index f5f1db4c..09bca68e 100644 --- a/Shaders/Source/RELAX_DiffuseSpecular_AtrousSmem.cs.hlsl +++ b/Shaders/Source/RELAX_DiffuseSpecular_AtrousSmem.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecular_HistoryClamping.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecular_HistoryClamping.cs.hlsl index 60acabfc..4bbaa4f5 100644 --- a/Shaders/Source/RELAX_DiffuseSpecular_HistoryClamping.cs.hlsl +++ b/Shaders/Source/RELAX_DiffuseSpecular_HistoryClamping.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecular_HistoryFix.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecular_HistoryFix.cs.hlsl index 99643af5..7c75478e 100644 --- a/Shaders/Source/RELAX_DiffuseSpecular_HistoryFix.cs.hlsl +++ b/Shaders/Source/RELAX_DiffuseSpecular_HistoryFix.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecular_HitDistReconstruction.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecular_HitDistReconstruction.cs.hlsl index 1093a861..025d5368 100644 --- a/Shaders/Source/RELAX_DiffuseSpecular_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/RELAX_DiffuseSpecular_HitDistReconstruction.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl index d4095113..6732c1b4 100644 --- a/Shaders/Source/RELAX_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/RELAX_DiffuseSpecular_HitDistReconstruction_5x5.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecular_PrePass.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecular_PrePass.cs.hlsl index 576ca703..ac40b301 100644 --- a/Shaders/Source/RELAX_DiffuseSpecular_PrePass.cs.hlsl +++ b/Shaders/Source/RELAX_DiffuseSpecular_PrePass.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_PrePass.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecular_SplitScreen.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecular_SplitScreen.cs.hlsl index 71844081..2fe628b8 100644 --- a/Shaders/Source/RELAX_DiffuseSpecular_SplitScreen.cs.hlsl +++ b/Shaders/Source/RELAX_DiffuseSpecular_SplitScreen.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_SplitScreen.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_SplitScreen.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_SplitScreen.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_SplitScreen.hlsli" diff --git a/Shaders/Source/RELAX_DiffuseSpecular_TemporalAccumulation.cs.hlsl b/Shaders/Source/RELAX_DiffuseSpecular_TemporalAccumulation.cs.hlsl index a374d9cc..abf998c4 100644 --- a/Shaders/Source/RELAX_DiffuseSpecular_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/RELAX_DiffuseSpecular_TemporalAccumulation.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/RELAX_Diffuse_AntiFirefly.cs.hlsl b/Shaders/Source/RELAX_Diffuse_AntiFirefly.cs.hlsl index 5cf779bb..61dd3cdc 100644 --- a/Shaders/Source/RELAX_Diffuse_AntiFirefly.cs.hlsl +++ b/Shaders/Source/RELAX_Diffuse_AntiFirefly.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_DIFFUSE -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_AntiFirefly.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_AntiFirefly.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_AntiFirefly.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_AntiFirefly.hlsli" diff --git a/Shaders/Source/RELAX_Diffuse_Atrous.cs.hlsl b/Shaders/Source/RELAX_Diffuse_Atrous.cs.hlsl index 512a25bc..0f94657a 100644 --- a/Shaders/Source/RELAX_Diffuse_Atrous.cs.hlsl +++ b/Shaders/Source/RELAX_Diffuse_Atrous.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_DIFFUSE -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_Atrous.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_Atrous.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_Atrous.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_Atrous.hlsli" diff --git a/Shaders/Source/RELAX_Diffuse_AtrousSmem.cs.hlsl b/Shaders/Source/RELAX_Diffuse_AtrousSmem.cs.hlsl index f7e35899..209a125c 100644 --- a/Shaders/Source/RELAX_Diffuse_AtrousSmem.cs.hlsl +++ b/Shaders/Source/RELAX_Diffuse_AtrousSmem.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_DIFFUSE -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli" diff --git a/Shaders/Source/RELAX_Diffuse_HistoryClamping.cs.hlsl b/Shaders/Source/RELAX_Diffuse_HistoryClamping.cs.hlsl index b6d23a7e..9e16ba80 100644 --- a/Shaders/Source/RELAX_Diffuse_HistoryClamping.cs.hlsl +++ b/Shaders/Source/RELAX_Diffuse_HistoryClamping.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_DIFFUSE -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli" diff --git a/Shaders/Source/RELAX_Diffuse_HistoryFix.cs.hlsl b/Shaders/Source/RELAX_Diffuse_HistoryFix.cs.hlsl index 67f28f89..48819f17 100644 --- a/Shaders/Source/RELAX_Diffuse_HistoryFix.cs.hlsl +++ b/Shaders/Source/RELAX_Diffuse_HistoryFix.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_DIFFUSE -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/RELAX_Diffuse_HitDistReconstruction.cs.hlsl b/Shaders/Source/RELAX_Diffuse_HitDistReconstruction.cs.hlsl index 30f6c6df..1dc88818 100644 --- a/Shaders/Source/RELAX_Diffuse_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/RELAX_Diffuse_HitDistReconstruction.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_DIFFUSE -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/RELAX_Diffuse_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/RELAX_Diffuse_HitDistReconstruction_5x5.cs.hlsl index f8307a85..ebc228b2 100644 --- a/Shaders/Source/RELAX_Diffuse_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/RELAX_Diffuse_HitDistReconstruction_5x5.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_DIFFUSE #define RELAX_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/RELAX_Diffuse_PrePass.cs.hlsl b/Shaders/Source/RELAX_Diffuse_PrePass.cs.hlsl index d6c22f0e..42aa9c56 100644 --- a/Shaders/Source/RELAX_Diffuse_PrePass.cs.hlsl +++ b/Shaders/Source/RELAX_Diffuse_PrePass.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_DIFFUSE -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_PrePass.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/RELAX_Diffuse_SplitScreen.cs.hlsl b/Shaders/Source/RELAX_Diffuse_SplitScreen.cs.hlsl index e353042c..9ae30200 100644 --- a/Shaders/Source/RELAX_Diffuse_SplitScreen.cs.hlsl +++ b/Shaders/Source/RELAX_Diffuse_SplitScreen.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_DIFFUSE -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_SplitScreen.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_SplitScreen.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_SplitScreen.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_SplitScreen.hlsli" diff --git a/Shaders/Source/RELAX_Diffuse_TemporalAccumulation.cs.hlsl b/Shaders/Source/RELAX_Diffuse_TemporalAccumulation.cs.hlsl index 06a73cf5..e4a30883 100644 --- a/Shaders/Source/RELAX_Diffuse_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/RELAX_Diffuse_TemporalAccumulation.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_DIFFUSE -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/RELAX_SpecularSh_AntiFirefly.cs.hlsl b/Shaders/Source/RELAX_SpecularSh_AntiFirefly.cs.hlsl new file mode 100644 index 00000000..36bfe548 --- /dev/null +++ b/Shaders/Source/RELAX_SpecularSh_AntiFirefly.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SPECULAR +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_AntiFirefly.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_AntiFirefly.hlsli" diff --git a/Shaders/Source/RELAX_SpecularSh_Atrous.cs.hlsl b/Shaders/Source/RELAX_SpecularSh_Atrous.cs.hlsl new file mode 100644 index 00000000..3f9c3064 --- /dev/null +++ b/Shaders/Source/RELAX_SpecularSh_Atrous.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SPECULAR +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_Atrous.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_Atrous.hlsli" diff --git a/Shaders/Source/RELAX_SpecularSh_AtrousSmem.cs.hlsl b/Shaders/Source/RELAX_SpecularSh_AtrousSmem.cs.hlsl new file mode 100644 index 00000000..20550d1f --- /dev/null +++ b/Shaders/Source/RELAX_SpecularSh_AtrousSmem.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SPECULAR +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli" diff --git a/Shaders/Source/RELAX_SpecularSh_HistoryClamping.cs.hlsl b/Shaders/Source/RELAX_SpecularSh_HistoryClamping.cs.hlsl new file mode 100644 index 00000000..587b5b0d --- /dev/null +++ b/Shaders/Source/RELAX_SpecularSh_HistoryClamping.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SPECULAR +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli" diff --git a/Shaders/Source/RELAX_SpecularSh_HistoryFix.cs.hlsl b/Shaders/Source/RELAX_SpecularSh_HistoryFix.cs.hlsl new file mode 100644 index 00000000..7c0945dd --- /dev/null +++ b/Shaders/Source/RELAX_SpecularSh_HistoryFix.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SPECULAR +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HistoryFix.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/RELAX_SpecularSh_PrePass.cs.hlsl b/Shaders/Source/RELAX_SpecularSh_PrePass.cs.hlsl new file mode 100644 index 00000000..a756f155 --- /dev/null +++ b/Shaders/Source/RELAX_SpecularSh_PrePass.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SPECULAR +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_PrePass.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/RELAX_SpecularSh_SplitScreen.cs.hlsl b/Shaders/Source/RELAX_SpecularSh_SplitScreen.cs.hlsl new file mode 100644 index 00000000..dbac178a --- /dev/null +++ b/Shaders/Source/RELAX_SpecularSh_SplitScreen.cs.hlsl @@ -0,0 +1,21 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SPECULAR + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_SplitScreen.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_SplitScreen.hlsli" diff --git a/Shaders/Source/RELAX_SpecularSh_TemporalAccumulation.cs.hlsl b/Shaders/Source/RELAX_SpecularSh_TemporalAccumulation.cs.hlsl new file mode 100644 index 00000000..209664bd --- /dev/null +++ b/Shaders/Source/RELAX_SpecularSh_TemporalAccumulation.cs.hlsl @@ -0,0 +1,22 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "NRD.hlsli" +#include "STL.hlsli" + +#define RELAX_SPECULAR +#define RELAX_SH + +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli" + +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/RELAX_Specular_AntiFirefly.cs.hlsl b/Shaders/Source/RELAX_Specular_AntiFirefly.cs.hlsl index 670ad5d7..361ca603 100644 --- a/Shaders/Source/RELAX_Specular_AntiFirefly.cs.hlsl +++ b/Shaders/Source/RELAX_Specular_AntiFirefly.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_SPECULAR -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_AntiFirefly.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_AntiFirefly.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_AntiFirefly.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_AntiFirefly.hlsli" diff --git a/Shaders/Source/RELAX_Specular_Atrous.cs.hlsl b/Shaders/Source/RELAX_Specular_Atrous.cs.hlsl index efb50a86..1eaa0a83 100644 --- a/Shaders/Source/RELAX_Specular_Atrous.cs.hlsl +++ b/Shaders/Source/RELAX_Specular_Atrous.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_SPECULAR -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_Atrous.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_Atrous.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_Atrous.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_Atrous.hlsli" diff --git a/Shaders/Source/RELAX_Specular_AtrousSmem.cs.hlsl b/Shaders/Source/RELAX_Specular_AtrousSmem.cs.hlsl index 0be5f34a..01a67637 100644 --- a/Shaders/Source/RELAX_Specular_AtrousSmem.cs.hlsl +++ b/Shaders/Source/RELAX_Specular_AtrousSmem.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_SPECULAR -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_AtrousSmem.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_AtrousSmem.hlsli" diff --git a/Shaders/Source/RELAX_Specular_HistoryClamping.cs.hlsl b/Shaders/Source/RELAX_Specular_HistoryClamping.cs.hlsl index 53bdeecc..ecfa68c8 100644 --- a/Shaders/Source/RELAX_Specular_HistoryClamping.cs.hlsl +++ b/Shaders/Source/RELAX_Specular_HistoryClamping.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_SPECULAR -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HistoryClamping.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HistoryClamping.hlsli" diff --git a/Shaders/Source/RELAX_Specular_HistoryFix.cs.hlsl b/Shaders/Source/RELAX_Specular_HistoryFix.cs.hlsl index 647e52ba..d8b111c0 100644 --- a/Shaders/Source/RELAX_Specular_HistoryFix.cs.hlsl +++ b/Shaders/Source/RELAX_Specular_HistoryFix.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_SPECULAR -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_HistoryFix.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HistoryFix.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HistoryFix.hlsli" diff --git a/Shaders/Source/RELAX_Specular_HitDistReconstruction.cs.hlsl b/Shaders/Source/RELAX_Specular_HitDistReconstruction.cs.hlsl index 3be46605..588cce1b 100644 --- a/Shaders/Source/RELAX_Specular_HitDistReconstruction.cs.hlsl +++ b/Shaders/Source/RELAX_Specular_HitDistReconstruction.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_SPECULAR -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/RELAX_Specular_HitDistReconstruction_5x5.cs.hlsl b/Shaders/Source/RELAX_Specular_HitDistReconstruction_5x5.cs.hlsl index 86d3bb3d..539b87b2 100644 --- a/Shaders/Source/RELAX_Specular_HitDistReconstruction_5x5.cs.hlsl +++ b/Shaders/Source/RELAX_Specular_HitDistReconstruction_5x5.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_SPECULAR #define RELAX_HITDIST_RECONSTRUCTION_5X5 -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_HitDistReconstruction.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_HitDistReconstruction.hlsli" diff --git a/Shaders/Source/RELAX_Specular_PrePass.cs.hlsl b/Shaders/Source/RELAX_Specular_PrePass.cs.hlsl index ad6a3212..adf6a401 100644 --- a/Shaders/Source/RELAX_Specular_PrePass.cs.hlsl +++ b/Shaders/Source/RELAX_Specular_PrePass.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_SPECULAR -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_PrePass.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_PrePass.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_PrePass.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_PrePass.hlsli" diff --git a/Shaders/Source/RELAX_Specular_SplitScreen.cs.hlsl b/Shaders/Source/RELAX_Specular_SplitScreen.cs.hlsl index e73c53a6..dbac178a 100644 --- a/Shaders/Source/RELAX_Specular_SplitScreen.cs.hlsl +++ b/Shaders/Source/RELAX_Specular_SplitScreen.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_SPECULAR -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_SplitScreen.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_SplitScreen.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_SplitScreen.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_SplitScreen.hlsli" diff --git a/Shaders/Source/RELAX_Specular_TemporalAccumulation.cs.hlsl b/Shaders/Source/RELAX_Specular_TemporalAccumulation.cs.hlsl index 05114f8e..2dcd2b13 100644 --- a/Shaders/Source/RELAX_Specular_TemporalAccumulation.cs.hlsl +++ b/Shaders/Source/RELAX_Specular_TemporalAccumulation.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define RELAX_SPECULAR -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_DiffuseSpecular_TemporalAccumulation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" -#include "../Include/RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" +#include "RELAX/RELAX_DiffuseSpecular_TemporalAccumulation.hlsli" diff --git a/Shaders/Source/RELAX_Validation.cs.hlsl b/Shaders/Source/RELAX_Validation.cs.hlsl index 650f5c74..7c846216 100644 --- a/Shaders/Source/RELAX_Validation.cs.hlsl +++ b/Shaders/Source/RELAX_Validation.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/RELAX/RELAX_Config.hlsli" -#include "../Resources/RELAX_Validation.resources.hlsli" +#include "RELAX/RELAX_Config.hlsli" +#include "RELAX_Validation.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/RELAX/RELAX_Common.hlsli" +#include "Common.hlsli" +#include "RELAX/RELAX_Common.hlsli" #define VIEWPORT_SIZE 0.25 #define OFFSET 5 diff --git a/Shaders/Source/SIGMA_ShadowTranslucency_Blur.cs.hlsl b/Shaders/Source/SIGMA_ShadowTranslucency_Blur.cs.hlsl index ab797664..9358e399 100644 --- a/Shaders/Source/SIGMA_ShadowTranslucency_Blur.cs.hlsl +++ b/Shaders/Source/SIGMA_ShadowTranslucency_Blur.cs.hlsl @@ -8,15 +8,15 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define SIGMA_TRANSLUCENT #define SIGMA_FIRST_PASS -#include "../Include/SIGMA/SIGMA_Config.hlsli" -#include "../Resources/SIGMA_Shadow_Blur.resources.hlsli" +#include "SIGMA/SIGMA_Config.hlsli" +#include "SIGMA_Shadow_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/SIGMA/SIGMA_Common.hlsli" -#include "../Include/SIGMA/SIGMA_Shadow_Blur.hlsli" +#include "Common.hlsli" +#include "SIGMA/SIGMA_Common.hlsli" +#include "SIGMA/SIGMA_Shadow_Blur.hlsli" diff --git a/Shaders/Source/SIGMA_ShadowTranslucency_ClassifyTiles.cs.hlsl b/Shaders/Source/SIGMA_ShadowTranslucency_ClassifyTiles.cs.hlsl index cb45282b..28b86df3 100644 --- a/Shaders/Source/SIGMA_ShadowTranslucency_ClassifyTiles.cs.hlsl +++ b/Shaders/Source/SIGMA_ShadowTranslucency_ClassifyTiles.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define SIGMA_TRANSLUCENT -#include "../Include/SIGMA/SIGMA_Config.hlsli" -#include "../Resources/SIGMA_Shadow_ClassifyTiles.resources.hlsli" +#include "SIGMA/SIGMA_Config.hlsli" +#include "SIGMA_Shadow_ClassifyTiles.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/SIGMA/SIGMA_Common.hlsli" -#include "../Include/SIGMA/SIGMA_Shadow_ClassifyTiles.hlsli" +#include "Common.hlsli" +#include "SIGMA/SIGMA_Common.hlsli" +#include "SIGMA/SIGMA_Shadow_ClassifyTiles.hlsli" diff --git a/Shaders/Source/SIGMA_ShadowTranslucency_PostBlur.cs.hlsl b/Shaders/Source/SIGMA_ShadowTranslucency_PostBlur.cs.hlsl index e243dcda..9ba0af31 100644 --- a/Shaders/Source/SIGMA_ShadowTranslucency_PostBlur.cs.hlsl +++ b/Shaders/Source/SIGMA_ShadowTranslucency_PostBlur.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define SIGMA_TRANSLUCENT -#include "../Include/SIGMA/SIGMA_Config.hlsli" -#include "../Resources/SIGMA_Shadow_Blur.resources.hlsli" +#include "SIGMA/SIGMA_Config.hlsli" +#include "SIGMA_Shadow_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/SIGMA/SIGMA_Common.hlsli" -#include "../Include/SIGMA/SIGMA_Shadow_Blur.hlsli" +#include "Common.hlsli" +#include "SIGMA/SIGMA_Common.hlsli" +#include "SIGMA/SIGMA_Shadow_Blur.hlsli" diff --git a/Shaders/Source/SIGMA_ShadowTranslucency_SplitScreen.cs.hlsl b/Shaders/Source/SIGMA_ShadowTranslucency_SplitScreen.cs.hlsl index fabc71bd..fd9451fd 100644 --- a/Shaders/Source/SIGMA_ShadowTranslucency_SplitScreen.cs.hlsl +++ b/Shaders/Source/SIGMA_ShadowTranslucency_SplitScreen.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define SIGMA_TRANSLUCENT -#include "../Include/SIGMA/SIGMA_Config.hlsli" -#include "../Resources/SIGMA_Shadow_SplitScreen.resources.hlsli" +#include "SIGMA/SIGMA_Config.hlsli" +#include "SIGMA_Shadow_SplitScreen.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/SIGMA/SIGMA_Common.hlsli" -#include "../Include/SIGMA/SIGMA_Shadow_SplitScreen.hlsli" +#include "Common.hlsli" +#include "SIGMA/SIGMA_Common.hlsli" +#include "SIGMA/SIGMA_Shadow_SplitScreen.hlsli" diff --git a/Shaders/Source/SIGMA_ShadowTranslucency_TemporalStabilization.cs.hlsl b/Shaders/Source/SIGMA_ShadowTranslucency_TemporalStabilization.cs.hlsl index cb3a8e01..9a9f901a 100644 --- a/Shaders/Source/SIGMA_ShadowTranslucency_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/SIGMA_ShadowTranslucency_TemporalStabilization.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define SIGMA_TRANSLUCENT -#include "../Include/SIGMA/SIGMA_Config.hlsli" -#include "../Resources/SIGMA_Shadow_TemporalStabilization.resources.hlsli" +#include "SIGMA/SIGMA_Config.hlsli" +#include "SIGMA_Shadow_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/SIGMA/SIGMA_Common.hlsli" -#include "../Include/SIGMA/SIGMA_Shadow_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "SIGMA/SIGMA_Common.hlsli" +#include "SIGMA/SIGMA_Shadow_TemporalStabilization.hlsli" diff --git a/Shaders/Source/SIGMA_Shadow_Blur.cs.hlsl b/Shaders/Source/SIGMA_Shadow_Blur.cs.hlsl index 68332f14..19d7c625 100644 --- a/Shaders/Source/SIGMA_Shadow_Blur.cs.hlsl +++ b/Shaders/Source/SIGMA_Shadow_Blur.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" #define SIGMA_FIRST_PASS -#include "../Include/SIGMA/SIGMA_Config.hlsli" -#include "../Resources/SIGMA_Shadow_Blur.resources.hlsli" +#include "SIGMA/SIGMA_Config.hlsli" +#include "SIGMA_Shadow_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/SIGMA/SIGMA_Common.hlsli" -#include "../Include/SIGMA/SIGMA_Shadow_Blur.hlsli" +#include "Common.hlsli" +#include "SIGMA/SIGMA_Common.hlsli" +#include "SIGMA/SIGMA_Shadow_Blur.hlsli" diff --git a/Shaders/Source/SIGMA_Shadow_ClassifyTiles.cs.hlsl b/Shaders/Source/SIGMA_Shadow_ClassifyTiles.cs.hlsl index 6a186336..e187711d 100644 --- a/Shaders/Source/SIGMA_Shadow_ClassifyTiles.cs.hlsl +++ b/Shaders/Source/SIGMA_Shadow_ClassifyTiles.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/SIGMA/SIGMA_Config.hlsli" -#include "../Resources/SIGMA_Shadow_ClassifyTiles.resources.hlsli" +#include "SIGMA/SIGMA_Config.hlsli" +#include "SIGMA_Shadow_ClassifyTiles.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/SIGMA/SIGMA_Common.hlsli" -#include "../Include/SIGMA/SIGMA_Shadow_ClassifyTiles.hlsli" +#include "Common.hlsli" +#include "SIGMA/SIGMA_Common.hlsli" +#include "SIGMA/SIGMA_Shadow_ClassifyTiles.hlsli" diff --git a/Shaders/Source/SIGMA_Shadow_PostBlur.cs.hlsl b/Shaders/Source/SIGMA_Shadow_PostBlur.cs.hlsl index 513d98e7..d75cb8aa 100644 --- a/Shaders/Source/SIGMA_Shadow_PostBlur.cs.hlsl +++ b/Shaders/Source/SIGMA_Shadow_PostBlur.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/SIGMA/SIGMA_Config.hlsli" -#include "../Resources/SIGMA_Shadow_Blur.resources.hlsli" +#include "SIGMA/SIGMA_Config.hlsli" +#include "SIGMA_Shadow_Blur.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/SIGMA/SIGMA_Common.hlsli" -#include "../Include/SIGMA/SIGMA_Shadow_Blur.hlsli" +#include "Common.hlsli" +#include "SIGMA/SIGMA_Common.hlsli" +#include "SIGMA/SIGMA_Shadow_Blur.hlsli" diff --git a/Shaders/Source/SIGMA_Shadow_SmoothTiles.cs.hlsl b/Shaders/Source/SIGMA_Shadow_SmoothTiles.cs.hlsl index 3f17045e..449bd074 100644 --- a/Shaders/Source/SIGMA_Shadow_SmoothTiles.cs.hlsl +++ b/Shaders/Source/SIGMA_Shadow_SmoothTiles.cs.hlsl @@ -8,14 +8,14 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/SIGMA/SIGMA_Config.hlsli" -#include "../Resources/SIGMA_Shadow_SmoothTiles.resources.hlsli" +#include "SIGMA/SIGMA_Config.hlsli" +#include "SIGMA_Shadow_SmoothTiles.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/SIGMA/SIGMA_Common.hlsli" +#include "Common.hlsli" +#include "SIGMA/SIGMA_Common.hlsli" groupshared float2 s_Tile[ BUFFER_Y ][ BUFFER_X ]; diff --git a/Shaders/Source/SIGMA_Shadow_SplitScreen.cs.hlsl b/Shaders/Source/SIGMA_Shadow_SplitScreen.cs.hlsl index 49b520c5..6b334635 100644 --- a/Shaders/Source/SIGMA_Shadow_SplitScreen.cs.hlsl +++ b/Shaders/Source/SIGMA_Shadow_SplitScreen.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/SIGMA/SIGMA_Config.hlsli" -#include "../Resources/SIGMA_Shadow_SplitScreen.resources.hlsli" +#include "SIGMA/SIGMA_Config.hlsli" +#include "SIGMA_Shadow_SplitScreen.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/SIGMA/SIGMA_Common.hlsli" -#include "../Include/SIGMA/SIGMA_Shadow_SplitScreen.hlsli" +#include "Common.hlsli" +#include "SIGMA/SIGMA_Common.hlsli" +#include "SIGMA/SIGMA_Shadow_SplitScreen.hlsli" diff --git a/Shaders/Source/SIGMA_Shadow_TemporalStabilization.cs.hlsl b/Shaders/Source/SIGMA_Shadow_TemporalStabilization.cs.hlsl index ec4437d9..0c6b91cf 100644 --- a/Shaders/Source/SIGMA_Shadow_TemporalStabilization.cs.hlsl +++ b/Shaders/Source/SIGMA_Shadow_TemporalStabilization.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Include/SIGMA/SIGMA_Config.hlsli" -#include "../Resources/SIGMA_Shadow_TemporalStabilization.resources.hlsli" +#include "SIGMA/SIGMA_Config.hlsli" +#include "SIGMA_Shadow_TemporalStabilization.resources.hlsli" -#include "../Include/Common.hlsli" -#include "../Include/SIGMA/SIGMA_Common.hlsli" -#include "../Include/SIGMA/SIGMA_Shadow_TemporalStabilization.hlsli" +#include "Common.hlsli" +#include "SIGMA/SIGMA_Common.hlsli" +#include "SIGMA/SIGMA_Shadow_TemporalStabilization.hlsli" diff --git a/Shaders/Source/SpecularDeltaMv_Compute.cs.hlsl b/Shaders/Source/SpecularDeltaMv_Compute.cs.hlsl index 859fddf4..ce33089b 100644 --- a/Shaders/Source/SpecularDeltaMv_Compute.cs.hlsl +++ b/Shaders/Source/SpecularDeltaMv_Compute.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Resources/SpecularDeltaMv_Compute.resources.hlsli" +#include "SpecularDeltaMv_Compute.resources.hlsli" -#include "../Include/Common.hlsli" +#include "Common.hlsli" // acos(dot(a,b)) has severe precision issues for small angles // length(cross(a,b)) == length(a) * length(b) * sin(angle) diff --git a/Shaders/Source/SpecularReflectionMv_Compute.cs.hlsl b/Shaders/Source/SpecularReflectionMv_Compute.cs.hlsl index 534f8b07..40ee1b0b 100644 --- a/Shaders/Source/SpecularReflectionMv_Compute.cs.hlsl +++ b/Shaders/Source/SpecularReflectionMv_Compute.cs.hlsl @@ -8,12 +8,12 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#include "../Include/NRD.hlsli" +#include "NRD.hlsli" #include "STL.hlsli" -#include "../Resources/SpecularReflectionMv_Compute.resources.hlsli" +#include "SpecularReflectionMv_Compute.resources.hlsli" -#include "../Include/Common.hlsli" +#include "Common.hlsli" groupshared float4 s_Normal_Roughness[ BUFFER_Y ][ BUFFER_X ]; diff --git a/Source/DenoiserImpl.cpp b/Source/DenoiserImpl.cpp index 9a1ec6e6..84211eec 100644 --- a/Source/DenoiserImpl.cpp +++ b/Source/DenoiserImpl.cpp @@ -8,17 +8,11 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ +#include "../Shaders/Include/NRD.hlsli" #include "DenoiserImpl.h" #include -#define NRD_HEADER_ONLY -#include "../Shaders/Include/NRD.hlsli" - -#ifndef BYTE - #define BYTE unsigned char -#endif - constexpr std::array g_Samplers = { nrd::Sampler::NEAREST_CLAMP, @@ -75,10 +69,6 @@ constexpr std::array g_IsIntegerFormat = false, // R9_G9_B9_E5_UFLOAT }; -//============================================================================================================================= -// SHADERS -//============================================================================================================================= - #ifdef NRD_USE_PRECOMPILED_SHADERS // NRD @@ -92,736 +82,8 @@ constexpr std::array g_IsIntegerFormat = #include "Clear_f.cs.spirv.h" #include "Clear_ui.cs.spirv.h" - // REBLUR_DIFFUSE - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "REBLUR_Diffuse_HitDistReconstruction.cs.dxbc.h" - #include "REBLUR_Diffuse_HitDistReconstruction.cs.dxil.h" - #include "REBLUR_Diffuse_HitDistReconstruction_5x5.cs.dxbc.h" - #include "REBLUR_Diffuse_HitDistReconstruction_5x5.cs.dxil.h" - #include "REBLUR_Diffuse_PrePass.cs.dxbc.h" - #include "REBLUR_Diffuse_PrePass.cs.dxil.h" - #include "REBLUR_Diffuse_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_Diffuse_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_Diffuse_HistoryFix.cs.dxbc.h" - #include "REBLUR_Diffuse_HistoryFix.cs.dxil.h" - #include "REBLUR_Diffuse_Blur.cs.dxbc.h" - #include "REBLUR_Diffuse_Blur.cs.dxil.h" - #include "REBLUR_Diffuse_PostBlur.cs.dxbc.h" - #include "REBLUR_Diffuse_PostBlur.cs.dxil.h" - #include "REBLUR_Diffuse_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_Diffuse_PostBlur_NoTemporalStabilization.cs.dxil.h" - #include "REBLUR_Diffuse_CopyStabilizedHistory.cs.dxbc.h" - #include "REBLUR_Diffuse_CopyStabilizedHistory.cs.dxil.h" - #include "REBLUR_Diffuse_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_Diffuse_TemporalStabilization.cs.dxil.h" - #include "REBLUR_Diffuse_SplitScreen.cs.dxbc.h" - #include "REBLUR_Diffuse_SplitScreen.cs.dxil.h" - #include "REBLUR_Validation.cs.dxbc.h" - #include "REBLUR_Validation.cs.dxil.h" - - #include "REBLUR_Perf_Diffuse_HitDistReconstruction.cs.dxbc.h" - #include "REBLUR_Perf_Diffuse_HitDistReconstruction.cs.dxil.h" - #include "REBLUR_Perf_Diffuse_HitDistReconstruction_5x5.cs.dxil.h" - #include "REBLUR_Perf_Diffuse_HitDistReconstruction_5x5.cs.dxbc.h" - #include "REBLUR_Perf_Diffuse_PrePass.cs.dxbc.h" - #include "REBLUR_Perf_Diffuse_PrePass.cs.dxil.h" - #include "REBLUR_Perf_Diffuse_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_Perf_Diffuse_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_Perf_Diffuse_HistoryFix.cs.dxbc.h" - #include "REBLUR_Perf_Diffuse_HistoryFix.cs.dxil.h" - #include "REBLUR_Perf_Diffuse_Blur.cs.dxbc.h" - #include "REBLUR_Perf_Diffuse_Blur.cs.dxil.h" - #include "REBLUR_Perf_Diffuse_PostBlur.cs.dxbc.h" - #include "REBLUR_Perf_Diffuse_PostBlur.cs.dxil.h" - #include "REBLUR_Perf_Diffuse_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_Diffuse_PostBlur_NoTemporalStabilization.cs.dxil.h" - #include "REBLUR_Perf_Diffuse_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_Diffuse_TemporalStabilization.cs.dxil.h" - #endif - - #include "REBLUR_Diffuse_HitDistReconstruction.cs.spirv.h" - #include "REBLUR_Diffuse_HitDistReconstruction_5x5.cs.spirv.h" - #include "REBLUR_Diffuse_PrePass.cs.spirv.h" - #include "REBLUR_Diffuse_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_Diffuse_HistoryFix.cs.spirv.h" - #include "REBLUR_Diffuse_Blur.cs.spirv.h" - #include "REBLUR_Diffuse_CopyStabilizedHistory.cs.spirv.h" - #include "REBLUR_Diffuse_TemporalStabilization.cs.spirv.h" - #include "REBLUR_Diffuse_PostBlur.cs.spirv.h" - #include "REBLUR_Diffuse_PostBlur_NoTemporalStabilization.cs.spirv.h" - #include "REBLUR_Diffuse_SplitScreen.cs.spirv.h" - #include "REBLUR_Validation.cs.spirv.h" - - #include "REBLUR_Perf_Diffuse_HitDistReconstruction.cs.spirv.h" - #include "REBLUR_Perf_Diffuse_HitDistReconstruction_5x5.cs.spirv.h" - #include "REBLUR_Perf_Diffuse_PrePass.cs.spirv.h" - #include "REBLUR_Perf_Diffuse_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_Perf_Diffuse_HistoryFix.cs.spirv.h" - #include "REBLUR_Perf_Diffuse_Blur.cs.spirv.h" - #include "REBLUR_Perf_Diffuse_TemporalStabilization.cs.spirv.h" - #include "REBLUR_Perf_Diffuse_PostBlur.cs.spirv.h" - #include "REBLUR_Perf_Diffuse_PostBlur_NoTemporalStabilization.cs.spirv.h" - - // REBLUR_DIFFUSE_OCCLUSION - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "REBLUR_DiffuseOcclusion_HitDistReconstruction.cs.dxbc.h" - #include "REBLUR_DiffuseOcclusion_HitDistReconstruction.cs.dxil.h" - #include "REBLUR_DiffuseOcclusion_HitDistReconstruction_5x5.cs.dxbc.h" - #include "REBLUR_DiffuseOcclusion_HitDistReconstruction_5x5.cs.dxil.h" - #include "REBLUR_DiffuseOcclusion_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_DiffuseOcclusion_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_DiffuseOcclusion_HistoryFix.cs.dxbc.h" - #include "REBLUR_DiffuseOcclusion_HistoryFix.cs.dxil.h" - #include "REBLUR_DiffuseOcclusion_Blur.cs.dxbc.h" - #include "REBLUR_DiffuseOcclusion_Blur.cs.dxil.h" - #include "REBLUR_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" - - #include "REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction.cs.dxil.h" - #include "REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction_5x5.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction_5x5.cs.dxil.h" - #include "REBLUR_Perf_DiffuseOcclusion_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseOcclusion_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_Perf_DiffuseOcclusion_HistoryFix.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseOcclusion_HistoryFix.cs.dxil.h" - #include "REBLUR_Perf_DiffuseOcclusion_Blur.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseOcclusion_Blur.cs.dxil.h" - #include "REBLUR_Perf_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" - #endif - - #include "REBLUR_DiffuseOcclusion_HitDistReconstruction.cs.spirv.h" - #include "REBLUR_DiffuseOcclusion_HitDistReconstruction_5x5.cs.spirv.h" - #include "REBLUR_DiffuseOcclusion_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_DiffuseOcclusion_HistoryFix.cs.spirv.h" - #include "REBLUR_DiffuseOcclusion_Blur.cs.spirv.h" - #include "REBLUR_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" - - #include "REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction.cs.spirv.h" - #include "REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction_5x5.cs.spirv.h" - #include "REBLUR_Perf_DiffuseOcclusion_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_Perf_DiffuseOcclusion_HistoryFix.cs.spirv.h" - #include "REBLUR_Perf_DiffuseOcclusion_Blur.cs.spirv.h" - #include "REBLUR_Perf_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" - - // REBLUR_DIFFUSE_SH - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "REBLUR_DiffuseSh_PrePass.cs.dxbc.h" - #include "REBLUR_DiffuseSh_PrePass.cs.dxil.h" - #include "REBLUR_DiffuseSh_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_DiffuseSh_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_DiffuseSh_HistoryFix.cs.dxbc.h" - #include "REBLUR_DiffuseSh_HistoryFix.cs.dxil.h" - #include "REBLUR_DiffuseSh_Blur.cs.dxbc.h" - #include "REBLUR_DiffuseSh_Blur.cs.dxil.h" - #include "REBLUR_DiffuseSh_PostBlur.cs.dxbc.h" - #include "REBLUR_DiffuseSh_PostBlur.cs.dxil.h" - #include "REBLUR_DiffuseSh_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_DiffuseSh_PostBlur_NoTemporalStabilization.cs.dxil.h" - #include "REBLUR_DiffuseSh_CopyStabilizedHistory.cs.dxbc.h" - #include "REBLUR_DiffuseSh_CopyStabilizedHistory.cs.dxil.h" - #include "REBLUR_DiffuseSh_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_DiffuseSh_TemporalStabilization.cs.dxil.h" - #include "REBLUR_DiffuseSh_SplitScreen.cs.dxbc.h" - #include "REBLUR_DiffuseSh_SplitScreen.cs.dxil.h" - - #include "REBLUR_Perf_DiffuseSh_PrePass.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSh_PrePass.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSh_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSh_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSh_HistoryFix.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSh_HistoryFix.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSh_Blur.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSh_Blur.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSh_PostBlur.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSh_PostBlur.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSh_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSh_PostBlur_NoTemporalStabilization.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSh_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSh_TemporalStabilization.cs.dxil.h" - #endif - - #include "REBLUR_DiffuseSh_PrePass.cs.spirv.h" - #include "REBLUR_DiffuseSh_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_DiffuseSh_HistoryFix.cs.spirv.h" - #include "REBLUR_DiffuseSh_Blur.cs.spirv.h" - #include "REBLUR_DiffuseSh_CopyStabilizedHistory.cs.spirv.h" - #include "REBLUR_DiffuseSh_TemporalStabilization.cs.spirv.h" - #include "REBLUR_DiffuseSh_PostBlur.cs.spirv.h" - #include "REBLUR_DiffuseSh_PostBlur_NoTemporalStabilization.cs.spirv.h" - #include "REBLUR_DiffuseSh_SplitScreen.cs.spirv.h" - - #include "REBLUR_Perf_DiffuseSh_PrePass.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSh_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSh_HistoryFix.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSh_Blur.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSh_TemporalStabilization.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSh_PostBlur.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSh_PostBlur_NoTemporalStabilization.cs.spirv.h" - - // REBLUR_SPECULAR - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "REBLUR_Specular_HitDistReconstruction.cs.dxbc.h" - #include "REBLUR_Specular_HitDistReconstruction.cs.dxil.h" - #include "REBLUR_Specular_HitDistReconstruction_5x5.cs.dxbc.h" - #include "REBLUR_Specular_HitDistReconstruction_5x5.cs.dxil.h" - #include "REBLUR_Specular_PrePass.cs.dxbc.h" - #include "REBLUR_Specular_PrePass.cs.dxil.h" - #include "REBLUR_Specular_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_Specular_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_Specular_HistoryFix.cs.dxbc.h" - #include "REBLUR_Specular_HistoryFix.cs.dxil.h" - #include "REBLUR_Specular_Blur.cs.dxbc.h" - #include "REBLUR_Specular_Blur.cs.dxil.h" - #include "REBLUR_Specular_PostBlur.cs.dxbc.h" - #include "REBLUR_Specular_PostBlur.cs.dxil.h" - #include "REBLUR_Specular_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_Specular_PostBlur_NoTemporalStabilization.cs.dxil.h" - #include "REBLUR_Specular_CopyStabilizedHistory.cs.dxbc.h" - #include "REBLUR_Specular_CopyStabilizedHistory.cs.dxil.h" - #include "REBLUR_Specular_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_Specular_TemporalStabilization.cs.dxil.h" - #include "REBLUR_Specular_SplitScreen.cs.dxbc.h" - #include "REBLUR_Specular_SplitScreen.cs.dxil.h" - - #include "REBLUR_Perf_Specular_HitDistReconstruction.cs.dxbc.h" - #include "REBLUR_Perf_Specular_HitDistReconstruction.cs.dxil.h" - #include "REBLUR_Perf_Specular_HitDistReconstruction_5x5.cs.dxbc.h" - #include "REBLUR_Perf_Specular_HitDistReconstruction_5x5.cs.dxil.h" - #include "REBLUR_Perf_Specular_PrePass.cs.dxbc.h" - #include "REBLUR_Perf_Specular_PrePass.cs.dxil.h" - #include "REBLUR_Perf_Specular_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_Perf_Specular_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_Perf_Specular_HistoryFix.cs.dxbc.h" - #include "REBLUR_Perf_Specular_HistoryFix.cs.dxil.h" - #include "REBLUR_Perf_Specular_Blur.cs.dxbc.h" - #include "REBLUR_Perf_Specular_Blur.cs.dxil.h" - #include "REBLUR_Perf_Specular_PostBlur.cs.dxbc.h" - #include "REBLUR_Perf_Specular_PostBlur.cs.dxil.h" - #include "REBLUR_Perf_Specular_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_Specular_PostBlur_NoTemporalStabilization.cs.dxil.h" - #include "REBLUR_Perf_Specular_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_Specular_TemporalStabilization.cs.dxil.h" - #endif - - #include "REBLUR_Specular_HitDistReconstruction.cs.spirv.h" - #include "REBLUR_Specular_HitDistReconstruction_5x5.cs.spirv.h" - #include "REBLUR_Specular_PrePass.cs.spirv.h" - #include "REBLUR_Specular_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_Specular_HistoryFix.cs.spirv.h" - #include "REBLUR_Specular_Blur.cs.spirv.h" - #include "REBLUR_Specular_PostBlur.cs.spirv.h" - #include "REBLUR_Specular_PostBlur_NoTemporalStabilization.cs.spirv.h" - #include "REBLUR_Specular_CopyStabilizedHistory.cs.spirv.h" - #include "REBLUR_Specular_TemporalStabilization.cs.spirv.h" - #include "REBLUR_Specular_SplitScreen.cs.spirv.h" - - #include "REBLUR_Perf_Specular_HitDistReconstruction.cs.spirv.h" - #include "REBLUR_Perf_Specular_HitDistReconstruction_5x5.cs.spirv.h" - #include "REBLUR_Perf_Specular_PrePass.cs.spirv.h" - #include "REBLUR_Perf_Specular_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_Perf_Specular_HistoryFix.cs.spirv.h" - #include "REBLUR_Perf_Specular_Blur.cs.spirv.h" - #include "REBLUR_Perf_Specular_PostBlur.cs.spirv.h" - #include "REBLUR_Perf_Specular_PostBlur_NoTemporalStabilization.cs.spirv.h" - #include "REBLUR_Perf_Specular_TemporalStabilization.cs.spirv.h" - - // REBLUR_SPECULAR_OCCLUSION - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "REBLUR_SpecularOcclusion_HitDistReconstruction.cs.dxbc.h" - #include "REBLUR_SpecularOcclusion_HitDistReconstruction.cs.dxil.h" - #include "REBLUR_SpecularOcclusion_HitDistReconstruction_5x5.cs.dxbc.h" - #include "REBLUR_SpecularOcclusion_HitDistReconstruction_5x5.cs.dxil.h" - #include "REBLUR_SpecularOcclusion_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_SpecularOcclusion_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_SpecularOcclusion_HistoryFix.cs.dxbc.h" - #include "REBLUR_SpecularOcclusion_HistoryFix.cs.dxil.h" - #include "REBLUR_SpecularOcclusion_Blur.cs.dxbc.h" - #include "REBLUR_SpecularOcclusion_Blur.cs.dxil.h" - #include "REBLUR_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" - - #include "REBLUR_Perf_SpecularOcclusion_HitDistReconstruction.cs.dxbc.h" - #include "REBLUR_Perf_SpecularOcclusion_HitDistReconstruction.cs.dxil.h" - #include "REBLUR_Perf_SpecularOcclusion_HitDistReconstruction_5x5.cs.dxbc.h" - #include "REBLUR_Perf_SpecularOcclusion_HitDistReconstruction_5x5.cs.dxil.h" - #include "REBLUR_Perf_SpecularOcclusion_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_Perf_SpecularOcclusion_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_Perf_SpecularOcclusion_HistoryFix.cs.dxbc.h" - #include "REBLUR_Perf_SpecularOcclusion_HistoryFix.cs.dxil.h" - #include "REBLUR_Perf_SpecularOcclusion_Blur.cs.dxbc.h" - #include "REBLUR_Perf_SpecularOcclusion_Blur.cs.dxil.h" - #include "REBLUR_Perf_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" - #endif - - #include "REBLUR_SpecularOcclusion_HitDistReconstruction.cs.spirv.h" - #include "REBLUR_SpecularOcclusion_HitDistReconstruction_5x5.cs.spirv.h" - #include "REBLUR_SpecularOcclusion_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_SpecularOcclusion_HistoryFix.cs.spirv.h" - #include "REBLUR_SpecularOcclusion_Blur.cs.spirv.h" - #include "REBLUR_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" - - #include "REBLUR_Perf_SpecularOcclusion_HitDistReconstruction.cs.spirv.h" - #include "REBLUR_Perf_SpecularOcclusion_HitDistReconstruction_5x5.cs.spirv.h" - #include "REBLUR_Perf_SpecularOcclusion_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_Perf_SpecularOcclusion_HistoryFix.cs.spirv.h" - #include "REBLUR_Perf_SpecularOcclusion_Blur.cs.spirv.h" - #include "REBLUR_Perf_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" - - // REBLUR_SPECULAR_SH - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "REBLUR_SpecularSh_PrePass.cs.dxbc.h" - #include "REBLUR_SpecularSh_PrePass.cs.dxil.h" - #include "REBLUR_SpecularSh_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_SpecularSh_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_SpecularSh_HistoryFix.cs.dxbc.h" - #include "REBLUR_SpecularSh_HistoryFix.cs.dxil.h" - #include "REBLUR_SpecularSh_Blur.cs.dxbc.h" - #include "REBLUR_SpecularSh_Blur.cs.dxil.h" - #include "REBLUR_SpecularSh_PostBlur.cs.dxbc.h" - #include "REBLUR_SpecularSh_PostBlur.cs.dxil.h" - #include "REBLUR_SpecularSh_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_SpecularSh_PostBlur_NoTemporalStabilization.cs.dxil.h" - #include "REBLUR_SpecularSh_CopyStabilizedHistory.cs.dxbc.h" - #include "REBLUR_SpecularSh_CopyStabilizedHistory.cs.dxil.h" - #include "REBLUR_SpecularSh_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_SpecularSh_TemporalStabilization.cs.dxil.h" - #include "REBLUR_SpecularSh_SplitScreen.cs.dxbc.h" - #include "REBLUR_SpecularSh_SplitScreen.cs.dxil.h" - - #include "REBLUR_Perf_SpecularSh_PrePass.cs.dxbc.h" - #include "REBLUR_Perf_SpecularSh_PrePass.cs.dxil.h" - #include "REBLUR_Perf_SpecularSh_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_Perf_SpecularSh_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_Perf_SpecularSh_HistoryFix.cs.dxbc.h" - #include "REBLUR_Perf_SpecularSh_HistoryFix.cs.dxil.h" - #include "REBLUR_Perf_SpecularSh_Blur.cs.dxbc.h" - #include "REBLUR_Perf_SpecularSh_Blur.cs.dxil.h" - #include "REBLUR_Perf_SpecularSh_PostBlur.cs.dxbc.h" - #include "REBLUR_Perf_SpecularSh_PostBlur.cs.dxil.h" - #include "REBLUR_Perf_SpecularSh_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_SpecularSh_PostBlur_NoTemporalStabilization.cs.dxil.h" - #include "REBLUR_Perf_SpecularSh_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_SpecularSh_TemporalStabilization.cs.dxil.h" - #endif - - #include "REBLUR_SpecularSh_PrePass.cs.spirv.h" - #include "REBLUR_SpecularSh_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_SpecularSh_HistoryFix.cs.spirv.h" - #include "REBLUR_SpecularSh_Blur.cs.spirv.h" - #include "REBLUR_SpecularSh_PostBlur.cs.spirv.h" - #include "REBLUR_SpecularSh_PostBlur_NoTemporalStabilization.cs.spirv.h" - #include "REBLUR_SpecularSh_CopyStabilizedHistory.cs.spirv.h" - #include "REBLUR_SpecularSh_TemporalStabilization.cs.spirv.h" - #include "REBLUR_SpecularSh_SplitScreen.cs.spirv.h" - - #include "REBLUR_Perf_SpecularSh_PrePass.cs.spirv.h" - #include "REBLUR_Perf_SpecularSh_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_Perf_SpecularSh_HistoryFix.cs.spirv.h" - #include "REBLUR_Perf_SpecularSh_Blur.cs.spirv.h" - #include "REBLUR_Perf_SpecularSh_PostBlur.cs.spirv.h" - #include "REBLUR_Perf_SpecularSh_PostBlur_NoTemporalStabilization.cs.spirv.h" - #include "REBLUR_Perf_SpecularSh_TemporalStabilization.cs.spirv.h" - - // REBLUR_DIFFUSE_SPECULAR - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "REBLUR_DiffuseSpecular_HitDistReconstruction.cs.dxbc.h" - #include "REBLUR_DiffuseSpecular_HitDistReconstruction.cs.dxil.h" - #include "REBLUR_DiffuseSpecular_HitDistReconstruction_5x5.cs.dxbc.h" - #include "REBLUR_DiffuseSpecular_HitDistReconstruction_5x5.cs.dxil.h" - #include "REBLUR_DiffuseSpecular_PrePass.cs.dxbc.h" - #include "REBLUR_DiffuseSpecular_PrePass.cs.dxil.h" - #include "REBLUR_DiffuseSpecular_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_DiffuseSpecular_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_DiffuseSpecular_HistoryFix.cs.dxbc.h" - #include "REBLUR_DiffuseSpecular_HistoryFix.cs.dxil.h" - #include "REBLUR_DiffuseSpecular_Blur.cs.dxbc.h" - #include "REBLUR_DiffuseSpecular_Blur.cs.dxil.h" - #include "REBLUR_DiffuseSpecular_CopyStabilizedHistory.cs.dxbc.h" - #include "REBLUR_DiffuseSpecular_CopyStabilizedHistory.cs.dxil.h" - #include "REBLUR_DiffuseSpecular_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_DiffuseSpecular_TemporalStabilization.cs.dxil.h" - #include "REBLUR_DiffuseSpecular_PostBlur.cs.dxbc.h" - #include "REBLUR_DiffuseSpecular_PostBlur.cs.dxil.h" - #include "REBLUR_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.dxil.h" - #include "REBLUR_DiffuseSpecular_SplitScreen.cs.dxbc.h" - #include "REBLUR_DiffuseSpecular_SplitScreen.cs.dxil.h" - - #include "REBLUR_Perf_DiffuseSpecular_HitDistReconstruction.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecular_HitDistReconstruction.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecular_HitDistReconstruction_5x5.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecular_HitDistReconstruction_5x5.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecular_PrePass.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecular_PrePass.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecular_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecular_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecular_HistoryFix.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecular_HistoryFix.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecular_Blur.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecular_Blur.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecular_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecular_TemporalStabilization.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecular_PostBlur.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecular_PostBlur.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.dxil.h" - #endif - - #include "REBLUR_DiffuseSpecular_HitDistReconstruction.cs.spirv.h" - #include "REBLUR_DiffuseSpecular_HitDistReconstruction_5x5.cs.spirv.h" - #include "REBLUR_DiffuseSpecular_PrePass.cs.spirv.h" - #include "REBLUR_DiffuseSpecular_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_DiffuseSpecular_HistoryFix.cs.spirv.h" - #include "REBLUR_DiffuseSpecular_Blur.cs.spirv.h" - #include "REBLUR_DiffuseSpecular_CopyStabilizedHistory.cs.spirv.h" - #include "REBLUR_DiffuseSpecular_TemporalStabilization.cs.spirv.h" - #include "REBLUR_DiffuseSpecular_PostBlur.cs.spirv.h" - #include "REBLUR_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.spirv.h" - #include "REBLUR_DiffuseSpecular_SplitScreen.cs.spirv.h" - - #include "REBLUR_Perf_DiffuseSpecular_HitDistReconstruction.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecular_HitDistReconstruction_5x5.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecular_PrePass.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecular_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecular_HistoryFix.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecular_Blur.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecular_TemporalStabilization.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecular_PostBlur.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.spirv.h" - - // REBLUR_DIFFUSE_SPECULAR_OCCLUSION - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction.cs.dxil.h" - #include "REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.dxil.h" - #include "REBLUR_DiffuseSpecularOcclusion_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularOcclusion_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_DiffuseSpecularOcclusion_HistoryFix.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularOcclusion_HistoryFix.cs.dxil.h" - #include "REBLUR_DiffuseSpecularOcclusion_Blur.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularOcclusion_Blur.cs.dxil.h" - #include "REBLUR_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" - - #include "REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_HistoryFix.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_HistoryFix.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_Blur.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_Blur.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" - #endif - - #include "REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction.cs.spirv.h" - #include "REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.spirv.h" - #include "REBLUR_DiffuseSpecularOcclusion_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_DiffuseSpecularOcclusion_HistoryFix.cs.spirv.h" - #include "REBLUR_DiffuseSpecularOcclusion_Blur.cs.spirv.h" - #include "REBLUR_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" - - #include "REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_HistoryFix.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_Blur.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" - - // REBLUR_DIFFUSE_SPECULAR_SH - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "REBLUR_DiffuseSpecularSh_PrePass.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularSh_PrePass.cs.dxil.h" - #include "REBLUR_DiffuseSpecularSh_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularSh_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_DiffuseSpecularSh_HistoryFix.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularSh_HistoryFix.cs.dxil.h" - #include "REBLUR_DiffuseSpecularSh_Blur.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularSh_Blur.cs.dxil.h" - #include "REBLUR_DiffuseSpecularSh_CopyStabilizedHistory.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularSh_CopyStabilizedHistory.cs.dxil.h" - #include "REBLUR_DiffuseSpecularSh_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularSh_TemporalStabilization.cs.dxil.h" - #include "REBLUR_DiffuseSpecularSh_PostBlur.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularSh_PostBlur.cs.dxil.h" - #include "REBLUR_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.dxil.h" - #include "REBLUR_DiffuseSpecularSh_SplitScreen.cs.dxbc.h" - #include "REBLUR_DiffuseSpecularSh_SplitScreen.cs.dxil.h" - - #include "REBLUR_Perf_DiffuseSpecularSh_PrePass.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularSh_PrePass.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecularSh_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularSh_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecularSh_HistoryFix.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularSh_HistoryFix.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecularSh_Blur.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularSh_Blur.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecularSh_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularSh_TemporalStabilization.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecularSh_PostBlur.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularSh_PostBlur.cs.dxil.h" - #include "REBLUR_Perf_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.dxil.h" - #endif - - #include "REBLUR_DiffuseSpecularSh_PrePass.cs.spirv.h" - #include "REBLUR_DiffuseSpecularSh_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_DiffuseSpecularSh_HistoryFix.cs.spirv.h" - #include "REBLUR_DiffuseSpecularSh_Blur.cs.spirv.h" - #include "REBLUR_DiffuseSpecularSh_CopyStabilizedHistory.cs.spirv.h" - #include "REBLUR_DiffuseSpecularSh_TemporalStabilization.cs.spirv.h" - #include "REBLUR_DiffuseSpecularSh_PostBlur.cs.spirv.h" - #include "REBLUR_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.spirv.h" - #include "REBLUR_DiffuseSpecularSh_SplitScreen.cs.spirv.h" - - #include "REBLUR_Perf_DiffuseSpecularSh_PrePass.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecularSh_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecularSh_HistoryFix.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecularSh_Blur.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecularSh_TemporalStabilization.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecularSh_PostBlur.cs.spirv.h" - #include "REBLUR_Perf_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.spirv.h" - - // REBLUR_DIFFUSE_DIRECTIONAL_OCCLUSION - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "REBLUR_DiffuseDirectionalOcclusion_PrePass.cs.dxbc.h" - #include "REBLUR_DiffuseDirectionalOcclusion_PrePass.cs.dxil.h" - #include "REBLUR_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_DiffuseDirectionalOcclusion_HistoryFix.cs.dxbc.h" - #include "REBLUR_DiffuseDirectionalOcclusion_HistoryFix.cs.dxil.h" - #include "REBLUR_DiffuseDirectionalOcclusion_Blur.cs.dxbc.h" - #include "REBLUR_DiffuseDirectionalOcclusion_Blur.cs.dxil.h" - #include "REBLUR_DiffuseDirectionalOcclusion_PostBlur.cs.dxbc.h" - #include "REBLUR_DiffuseDirectionalOcclusion_PostBlur.cs.dxil.h" - #include "REBLUR_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" - #include "REBLUR_DiffuseDirectionalOcclusion_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_DiffuseDirectionalOcclusion_TemporalStabilization.cs.dxil.h" - - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PrePass.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PrePass.cs.dxil.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.dxil.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_HistoryFix.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_HistoryFix.cs.dxil.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_Blur.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_Blur.cs.dxil.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur.cs.dxil.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalStabilization.cs.dxbc.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalStabilization.cs.dxil.h" - #endif - - #include "REBLUR_DiffuseDirectionalOcclusion_PrePass.cs.spirv.h" - #include "REBLUR_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_DiffuseDirectionalOcclusion_HistoryFix.cs.spirv.h" - #include "REBLUR_DiffuseDirectionalOcclusion_Blur.cs.spirv.h" - #include "REBLUR_DiffuseDirectionalOcclusion_TemporalStabilization.cs.spirv.h" - #include "REBLUR_DiffuseDirectionalOcclusion_PostBlur.cs.spirv.h" - #include "REBLUR_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" - - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PrePass.cs.spirv.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.spirv.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_HistoryFix.cs.spirv.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_Blur.cs.spirv.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalStabilization.cs.spirv.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur.cs.spirv.h" - #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" - - // SIGMA_SHADOW - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "SIGMA_Shadow_ClassifyTiles.cs.dxbc.h" - #include "SIGMA_Shadow_ClassifyTiles.cs.dxil.h" - #include "SIGMA_Shadow_SmoothTiles.cs.dxbc.h" - #include "SIGMA_Shadow_SmoothTiles.cs.dxil.h" - #include "SIGMA_Shadow_Blur.cs.dxbc.h" - #include "SIGMA_Shadow_Blur.cs.dxil.h" - #include "SIGMA_Shadow_PostBlur.cs.dxbc.h" - #include "SIGMA_Shadow_PostBlur.cs.dxil.h" - #include "SIGMA_Shadow_TemporalStabilization.cs.dxbc.h" - #include "SIGMA_Shadow_TemporalStabilization.cs.dxil.h" - #include "SIGMA_Shadow_SplitScreen.cs.dxbc.h" - #include "SIGMA_Shadow_SplitScreen.cs.dxil.h" - #endif - - #include "SIGMA_Shadow_ClassifyTiles.cs.spirv.h" - #include "SIGMA_Shadow_SmoothTiles.cs.spirv.h" - #include "SIGMA_Shadow_Blur.cs.spirv.h" - #include "SIGMA_Shadow_PostBlur.cs.spirv.h" - #include "SIGMA_Shadow_TemporalStabilization.cs.spirv.h" - #include "SIGMA_Shadow_SplitScreen.cs.spirv.h" - - // SIGMA_SHADOW_TRANSLUCENCY - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "SIGMA_ShadowTranslucency_ClassifyTiles.cs.dxbc.h" - #include "SIGMA_ShadowTranslucency_ClassifyTiles.cs.dxil.h" - #include "SIGMA_ShadowTranslucency_Blur.cs.dxbc.h" - #include "SIGMA_ShadowTranslucency_Blur.cs.dxil.h" - #include "SIGMA_ShadowTranslucency_PostBlur.cs.dxbc.h" - #include "SIGMA_ShadowTranslucency_PostBlur.cs.dxil.h" - #include "SIGMA_ShadowTranslucency_TemporalStabilization.cs.dxbc.h" - #include "SIGMA_ShadowTranslucency_TemporalStabilization.cs.dxil.h" - #include "SIGMA_ShadowTranslucency_SplitScreen.cs.dxbc.h" - #include "SIGMA_ShadowTranslucency_SplitScreen.cs.dxil.h" - #endif - - #include "SIGMA_ShadowTranslucency_ClassifyTiles.cs.spirv.h" - #include "SIGMA_ShadowTranslucency_Blur.cs.spirv.h" - #include "SIGMA_ShadowTranslucency_PostBlur.cs.spirv.h" - #include "SIGMA_ShadowTranslucency_TemporalStabilization.cs.spirv.h" - #include "SIGMA_ShadowTranslucency_SplitScreen.cs.spirv.h" - - // RELAX_DIFFUSE - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "RELAX_Diffuse_HitDistReconstruction.cs.dxbc.h" - #include "RELAX_Diffuse_HitDistReconstruction.cs.dxil.h" - #include "RELAX_Diffuse_HitDistReconstruction_5x5.cs.dxbc.h" - #include "RELAX_Diffuse_HitDistReconstruction_5x5.cs.dxil.h" - #include "RELAX_Diffuse_PrePass.cs.dxbc.h" - #include "RELAX_Diffuse_PrePass.cs.dxil.h" - #include "RELAX_Diffuse_TemporalAccumulation.cs.dxbc.h" - #include "RELAX_Diffuse_TemporalAccumulation.cs.dxil.h" - #include "RELAX_Diffuse_HistoryFix.cs.dxbc.h" - #include "RELAX_Diffuse_HistoryFix.cs.dxil.h" - #include "RELAX_Diffuse_HistoryClamping.cs.dxbc.h" - #include "RELAX_Diffuse_HistoryClamping.cs.dxil.h" - #include "RELAX_Diffuse_AntiFirefly.cs.dxbc.h" - #include "RELAX_Diffuse_AntiFirefly.cs.dxil.h" - #include "RELAX_Diffuse_AtrousSmem.cs.dxbc.h" - #include "RELAX_Diffuse_AtrousSmem.cs.dxil.h" - #include "RELAX_Diffuse_Atrous.cs.dxbc.h" - #include "RELAX_Diffuse_Atrous.cs.dxil.h" - #include "RELAX_Diffuse_SplitScreen.cs.dxbc.h" - #include "RELAX_Diffuse_SplitScreen.cs.dxil.h" - #include "RELAX_Validation.cs.dxbc.h" - #include "RELAX_Validation.cs.dxil.h" - #endif - - #include "RELAX_Diffuse_HitDistReconstruction.cs.spirv.h" - #include "RELAX_Diffuse_HitDistReconstruction_5x5.cs.spirv.h" - #include "RELAX_Diffuse_PrePass.cs.spirv.h" - #include "RELAX_Diffuse_TemporalAccumulation.cs.spirv.h" - #include "RELAX_Diffuse_HistoryFix.cs.spirv.h" - #include "RELAX_Diffuse_HistoryClamping.cs.spirv.h" - #include "RELAX_Diffuse_AntiFirefly.cs.spirv.h" - #include "RELAX_Diffuse_AtrousSmem.cs.spirv.h" - #include "RELAX_Diffuse_Atrous.cs.spirv.h" - #include "RELAX_Diffuse_SplitScreen.cs.spirv.h" - #include "RELAX_Validation.cs.spirv.h" - - // RELAX_SPECULAR - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "RELAX_Specular_HitDistReconstruction.cs.dxbc.h" - #include "RELAX_Specular_HitDistReconstruction.cs.dxil.h" - #include "RELAX_Specular_HitDistReconstruction_5x5.cs.dxbc.h" - #include "RELAX_Specular_HitDistReconstruction_5x5.cs.dxil.h" - #include "RELAX_Specular_PrePass.cs.dxbc.h" - #include "RELAX_Specular_PrePass.cs.dxil.h" - #include "RELAX_Specular_TemporalAccumulation.cs.dxbc.h" - #include "RELAX_Specular_TemporalAccumulation.cs.dxil.h" - #include "RELAX_Specular_HistoryFix.cs.dxbc.h" - #include "RELAX_Specular_HistoryFix.cs.dxil.h" - #include "RELAX_Specular_HistoryClamping.cs.dxbc.h" - #include "RELAX_Specular_HistoryClamping.cs.dxil.h" - #include "RELAX_Specular_AntiFirefly.cs.dxbc.h" - #include "RELAX_Specular_AntiFirefly.cs.dxil.h" - #include "RELAX_Specular_AtrousSmem.cs.dxbc.h" - #include "RELAX_Specular_AtrousSmem.cs.dxil.h" - #include "RELAX_Specular_Atrous.cs.dxbc.h" - #include "RELAX_Specular_Atrous.cs.dxil.h" - #include "RELAX_Specular_SplitScreen.cs.dxbc.h" - #include "RELAX_Specular_SplitScreen.cs.dxil.h" - #endif - - #include "RELAX_Specular_HitDistReconstruction.cs.spirv.h" - #include "RELAX_Specular_HitDistReconstruction_5x5.cs.spirv.h" - #include "RELAX_Specular_PrePass.cs.spirv.h" - #include "RELAX_Specular_TemporalAccumulation.cs.spirv.h" - #include "RELAX_Specular_HistoryFix.cs.spirv.h" - #include "RELAX_Specular_HistoryClamping.cs.spirv.h" - #include "RELAX_Specular_AntiFirefly.cs.spirv.h" - #include "RELAX_Specular_AtrousSmem.cs.spirv.h" - #include "RELAX_Specular_Atrous.cs.spirv.h" - #include "RELAX_Specular_SplitScreen.cs.spirv.h" - - // RELAX_DIFFUSE_SPECULAR - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "RELAX_DiffuseSpecular_HitDistReconstruction.cs.dxbc.h" - #include "RELAX_DiffuseSpecular_HitDistReconstruction.cs.dxil.h" - #include "RELAX_DiffuseSpecular_HitDistReconstruction_5x5.cs.dxbc.h" - #include "RELAX_DiffuseSpecular_HitDistReconstruction_5x5.cs.dxil.h" - #include "RELAX_DiffuseSpecular_PrePass.cs.dxbc.h" - #include "RELAX_DiffuseSpecular_PrePass.cs.dxil.h" - #include "RELAX_DiffuseSpecular_TemporalAccumulation.cs.dxbc.h" - #include "RELAX_DiffuseSpecular_TemporalAccumulation.cs.dxil.h" - #include "RELAX_DiffuseSpecular_HistoryFix.cs.dxbc.h" - #include "RELAX_DiffuseSpecular_HistoryFix.cs.dxil.h" - #include "RELAX_DiffuseSpecular_HistoryClamping.cs.dxbc.h" - #include "RELAX_DiffuseSpecular_HistoryClamping.cs.dxil.h" - #include "RELAX_DiffuseSpecular_AntiFirefly.cs.dxbc.h" - #include "RELAX_DiffuseSpecular_AntiFirefly.cs.dxil.h" - #include "RELAX_DiffuseSpecular_AtrousSmem.cs.dxbc.h" - #include "RELAX_DiffuseSpecular_AtrousSmem.cs.dxil.h" - #include "RELAX_DiffuseSpecular_Atrous.cs.dxbc.h" - #include "RELAX_DiffuseSpecular_Atrous.cs.dxil.h" - #include "RELAX_DiffuseSpecular_SplitScreen.cs.dxbc.h" - #include "RELAX_DiffuseSpecular_SplitScreen.cs.dxil.h" - #endif - - #include "RELAX_DiffuseSpecular_HitDistReconstruction.cs.spirv.h" - #include "RELAX_DiffuseSpecular_HitDistReconstruction_5x5.cs.spirv.h" - #include "RELAX_DiffuseSpecular_PrePass.cs.spirv.h" - #include "RELAX_DiffuseSpecular_TemporalAccumulation.cs.spirv.h" - #include "RELAX_DiffuseSpecular_HistoryFix.cs.spirv.h" - #include "RELAX_DiffuseSpecular_HistoryClamping.cs.spirv.h" - #include "RELAX_DiffuseSpecular_AntiFirefly.cs.spirv.h" - #include "RELAX_DiffuseSpecular_AtrousSmem.cs.spirv.h" - #include "RELAX_DiffuseSpecular_Atrous.cs.spirv.h" - #include "RELAX_DiffuseSpecular_SplitScreen.cs.spirv.h" - - // REFERENCE - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "REFERENCE_TemporalAccumulation.cs.dxbc.h" - #include "REFERENCE_TemporalAccumulation.cs.dxil.h" - #include "REFERENCE_SplitScreen.cs.dxbc.h" - #include "REFERENCE_SplitScreen.cs.dxil.h" - #endif - - #include "REFERENCE_TemporalAccumulation.cs.spirv.h" - #include "REFERENCE_SplitScreen.cs.spirv.h" - - // SPECULAR_REFLECTION_MV - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "SpecularReflectionMv_Compute.cs.dxbc.h" - #include "SpecularReflectionMv_Compute.cs.dxil.h" - #endif - - #include "SpecularReflectionMv_Compute.cs.spirv.h" - - // SPECULAR_DELTA_MV - #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE - #include "SpecularDeltaMv_Compute.cs.dxbc.h" - #include "SpecularDeltaMv_Compute.cs.dxil.h" - #endif - - #include "SpecularDeltaMv_Compute.cs.spirv.h" #endif -//============================================================================================================================= -// DenoiserImpl -//============================================================================================================================= - nrd::Result nrd::DenoiserImpl::Create(const DenoiserCreationDesc& denoiserCreationDesc) { const LibraryDesc& libraryDesc = GetLibraryDesc(); @@ -876,10 +138,16 @@ nrd::Result nrd::DenoiserImpl::Create(const DenoiserCreationDesc& denoiserCreati AddMethod_SigmaShadowTranslucency(methodData); else if (methodDesc.method == Method::RELAX_DIFFUSE) AddMethod_RelaxDiffuse(methodData); + else if (methodDesc.method == Method::RELAX_DIFFUSE_SH) + AddMethod_RelaxDiffuseSh(methodData); else if (methodDesc.method == Method::RELAX_SPECULAR) AddMethod_RelaxSpecular(methodData); + else if (methodDesc.method == Method::RELAX_SPECULAR_SH) + AddMethod_RelaxSpecularSh(methodData); else if (methodDesc.method == Method::RELAX_DIFFUSE_SPECULAR) AddMethod_RelaxDiffuseSpecular(methodData); + else if (methodDesc.method == Method::RELAX_DIFFUSE_SPECULAR_SH) + AddMethod_RelaxDiffuseSpecularSh(methodData); else if (methodDesc.method == Method::REFERENCE) AddMethod_Reference(methodData); else if (methodDesc.method == Method::SPECULAR_REFLECTION_MV) @@ -1022,10 +290,16 @@ void nrd::DenoiserImpl::GetComputeDispatches(const CommonSettings& commonSetting UpdateMethod_SigmaShadow(methodData); else if (methodData.desc.method == Method::RELAX_DIFFUSE) UpdateMethod_RelaxDiffuse(methodData); + else if (methodData.desc.method == Method::RELAX_DIFFUSE_SH) + UpdateMethod_RelaxDiffuseSh(methodData); else if (methodData.desc.method == Method::RELAX_SPECULAR) UpdateMethod_RelaxSpecular(methodData); + else if (methodData.desc.method == Method::RELAX_SPECULAR_SH) + UpdateMethod_RelaxSpecularSh(methodData); else if (methodData.desc.method == Method::RELAX_DIFFUSE_SPECULAR) UpdateMethod_RelaxDiffuseSpecular(methodData); + else if (methodData.desc.method == Method::RELAX_DIFFUSE_SPECULAR_SH) + UpdateMethod_RelaxDiffuseSpecularSh(methodData); else if (methodData.desc.method == Method::REFERENCE) UpdateMethod_Reference(methodData); else if (methodData.desc.method == Method::SPECULAR_REFLECTION_MV) @@ -1159,7 +433,7 @@ void nrd::DenoiserImpl::AddComputeDispatchDesc { PipelineDesc pipelineDesc = {}; pipelineDesc.shaderFileName = shaderFileName; - pipelineDesc.shaderEntryPointName = NRD_CS_MAIN; + pipelineDesc.shaderEntryPointName = NRD_STRINGIFY(NRD_CS_MAIN); pipelineDesc.computeShaderDXBC = dxbc; pipelineDesc.computeShaderDXIL = dxil; pipelineDesc.computeShaderSPIRV = spirv; @@ -1235,6 +509,49 @@ void nrd::DenoiserImpl::PushTexture(DescriptorType descriptorType, uint16_t inde m_Resources.push_back( {descriptorType, resourceType, indexInPool, mipOffset, mipNum} ); } +nrd::Constant* nrd::DenoiserImpl::PushDispatch(const MethodData& methodData, uint32_t localIndex) +{ + size_t dispatchIndex = methodData.dispatchOffset + localIndex; + const InternalDispatchDesc& internalDispatchDesc = m_Dispatches[dispatchIndex]; + + // Copy data + DispatchDesc dispatchDesc = {}; + dispatchDesc.name = internalDispatchDesc.name; + dispatchDesc.resources = internalDispatchDesc.resources; + dispatchDesc.resourcesNum = internalDispatchDesc.resourcesNum; + dispatchDesc.pipelineIndex = internalDispatchDesc.pipelineIndex; + + // Update constant data + if (m_ConstantDataOffset + internalDispatchDesc.constantBufferDataSize > CONSTANT_DATA_SIZE) + m_ConstantDataOffset = 0; + dispatchDesc.constantBufferData = m_ConstantData + m_ConstantDataOffset; + dispatchDesc.constantBufferDataSize = internalDispatchDesc.constantBufferDataSize; + m_ConstantDataOffset += internalDispatchDesc.constantBufferDataSize; + + // Update grid size + float sx = ml::Max(internalDispatchDesc.downsampleFactor == USE_MAX_DIMS ? m_ResolutionScalePrev.x : 0.0f, m_CommonSettings.resolutionScale[0]); + float sy = ml::Max(internalDispatchDesc.downsampleFactor == USE_MAX_DIMS ? m_ResolutionScalePrev.y : 0.0f, m_CommonSettings.resolutionScale[1]); + uint16_t d = internalDispatchDesc.downsampleFactor == USE_MAX_DIMS ? 1 : internalDispatchDesc.downsampleFactor; + + if (internalDispatchDesc.downsampleFactor == IGNORE_RS) + { + sx = 1.0f; + sy = 1.0f; + d = 1; + } + + uint16_t w = uint16_t( float(DivideUp(methodData.desc.fullResolutionWidth, d)) * sx + 0.5f ); + uint16_t h = uint16_t( float(DivideUp(methodData.desc.fullResolutionHeight, d)) * sy + 0.5f ); + + dispatchDesc.gridWidth = DivideUp(w, internalDispatchDesc.numThreads.width); + dispatchDesc.gridHeight = DivideUp(h, internalDispatchDesc.numThreads.height); + + // Store + m_ActiveDispatches.push_back(dispatchDesc); + + return (Constant*)dispatchDesc.constantBufferData; +} + void nrd::DenoiserImpl::UpdatePingPong(const MethodData& methodData) { for (uint32_t i = 0; i < methodData.pingPongNum; i++) @@ -1401,26 +718,3 @@ void nrd::DenoiserImpl::UpdateCommonSettings(const CommonSettings& commonSetting float nonLinearAccumSpeed = FPS * 0.25f / (1.0f + FPS * 0.25f); m_CheckerboardResolveAccumSpeed = ml::Lerp(nonLinearAccumSpeed, 0.5f, m_JitterDelta); } - -//============================================================================================================================= -// METHODS -//============================================================================================================================= - -#include "Methods/Reblur_Diffuse.hpp" -#include "Methods/Reblur_DiffuseOcclusion.hpp" -#include "Methods/Reblur_DiffuseSh.hpp" -#include "Methods/Reblur_Specular.hpp" -#include "Methods/Reblur_SpecularOcclusion.hpp" -#include "Methods/Reblur_SpecularSh.hpp" -#include "Methods/Reblur_DiffuseSpecular.hpp" -#include "Methods/Reblur_DiffuseSpecularOcclusion.hpp" -#include "Methods/Reblur_DiffuseSpecularSh.hpp" -#include "Methods/Reblur_DiffuseDirectionalOcclusion.hpp" -#include "Methods/Sigma_Shadow.hpp" -#include "Methods/Sigma_ShadowTranslucency.hpp" -#include "Methods/Relax_Diffuse.hpp" -#include "Methods/Relax_Specular.hpp" -#include "Methods/Relax_DiffuseSpecular.hpp" -#include "Methods/Reference.hpp" -#include "Methods/SpecularReflectionMv.hpp" -#include "Methods/SpecularDeltaMv.hpp" diff --git a/Source/DenoiserImpl.h b/Source/DenoiserImpl.h index 95f13f91..28b68c95 100644 --- a/Source/DenoiserImpl.h +++ b/Source/DenoiserImpl.h @@ -12,9 +12,6 @@ license agreement from NVIDIA CORPORATION is strictly prohibited. #include "NRD.h" -// TODO: move to a C++ / HLSL shared file (most likely with CB layout declarations) -#define NRD_CS_MAIN "main" - #define MATH_NAMESPACE #include "MathLib/MathLib.h" @@ -174,12 +171,18 @@ namespace nrd // Relax void AddMethod_RelaxDiffuse(MethodData& methodData); + void AddMethod_RelaxDiffuseSh(MethodData& methodData); void AddMethod_RelaxSpecular(MethodData& methodData); + void AddMethod_RelaxSpecularSh(MethodData& methodData); void AddMethod_RelaxDiffuseSpecular(MethodData& methodData); + void AddMethod_RelaxDiffuseSpecularSh(MethodData& methodData); void UpdateMethod_RelaxDiffuse(const MethodData& methodData); + void UpdateMethod_RelaxDiffuseSh(const MethodData& methodData); void UpdateMethod_RelaxSpecular(const MethodData& methodData); + void UpdateMethod_RelaxSpecularSh(const MethodData& methodData); void UpdateMethod_RelaxDiffuseSpecular(const MethodData& methodData); + void UpdateMethod_RelaxDiffuseSpecularSh(const MethodData& methodData); void AddSharedConstants_Relax(const MethodData& methodData, Constant*& data, Method method); @@ -270,48 +273,7 @@ namespace nrd void PushOutput(uint16_t indexInPool, uint16_t mipOffset = 0, uint16_t mipNum = 1, uint16_t indexToSwapWith = uint16_t(-1)) { PushTexture(DescriptorType::STORAGE_TEXTURE, indexInPool, mipOffset, mipNum, indexToSwapWith); } - inline Constant* PushDispatch(const MethodData& methodData, uint32_t localIndex) - { - size_t dispatchIndex = methodData.dispatchOffset + localIndex; - const InternalDispatchDesc& internalDispatchDesc = m_Dispatches[dispatchIndex]; - - // Copy data - DispatchDesc dispatchDesc = {}; - dispatchDesc.name = internalDispatchDesc.name; - dispatchDesc.resources = internalDispatchDesc.resources; - dispatchDesc.resourcesNum = internalDispatchDesc.resourcesNum; - dispatchDesc.pipelineIndex = internalDispatchDesc.pipelineIndex; - - // Update constant data - if (m_ConstantDataOffset + internalDispatchDesc.constantBufferDataSize > CONSTANT_DATA_SIZE) - m_ConstantDataOffset = 0; - dispatchDesc.constantBufferData = m_ConstantData + m_ConstantDataOffset; - dispatchDesc.constantBufferDataSize = internalDispatchDesc.constantBufferDataSize; - m_ConstantDataOffset += internalDispatchDesc.constantBufferDataSize; - - // Update grid size - float sx = ml::Max(internalDispatchDesc.downsampleFactor == USE_MAX_DIMS ? m_ResolutionScalePrev.x : 0.0f, m_CommonSettings.resolutionScale[0]); - float sy = ml::Max(internalDispatchDesc.downsampleFactor == USE_MAX_DIMS ? m_ResolutionScalePrev.y : 0.0f, m_CommonSettings.resolutionScale[1]); - uint16_t d = internalDispatchDesc.downsampleFactor == USE_MAX_DIMS ? 1 : internalDispatchDesc.downsampleFactor; - - if (internalDispatchDesc.downsampleFactor == IGNORE_RS) - { - sx = 1.0f; - sy = 1.0f; - d = 1; - } - - uint16_t w = uint16_t( float(DivideUp(methodData.desc.fullResolutionWidth, d)) * sx + 0.5f ); - uint16_t h = uint16_t( float(DivideUp(methodData.desc.fullResolutionHeight, d)) * sy + 0.5f ); - - dispatchDesc.gridWidth = DivideUp(w, internalDispatchDesc.numThreads.width); - dispatchDesc.gridHeight = DivideUp(h, internalDispatchDesc.numThreads.height); - - // Store - m_ActiveDispatches.push_back(dispatchDesc); - - return (Constant*)dispatchDesc.constantBufferData; - } + Constant* PushDispatch(const MethodData& methodData, uint32_t localIndex); inline void _PushPass(const char* name) { diff --git a/Source/Methods/Reblur_Diffuse.hpp b/Source/Methods/Reblur_Diffuse.hpp index 1d615a1b..8bd33215 100644 --- a/Source/Methods/Reblur_Diffuse.hpp +++ b/Source/Methods/Reblur_Diffuse.hpp @@ -8,108 +8,6 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -// Constants -#define REBLUR_SET_SHARED_CONSTANTS SetSharedConstants(2, 5, 9, 22) - -#define REBLUR_HITDIST_RECONSTRUCTION_CONSTANT_NUM SumConstants(0, 0, 0, 0) -#define REBLUR_HITDIST_RECONSTRUCTION_NUM_THREADS NumThreads(8, 8) - -#define REBLUR_PREPASS_CONSTANT_NUM SumConstants(0, 1, 0, 2) -#define REBLUR_PREPASS_NUM_THREADS NumThreads(16, 16) - -#define REBLUR_TEMPORAL_ACCUMULATION_CONSTANT_NUM SumConstants(4, 2, 0, 7) -#define REBLUR_TEMPORAL_ACCUMULATION_NUM_THREADS NumThreads(8, 8) - -#define REBLUR_HISTORY_FIX_CONSTANT_NUM SumConstants(0, 0, 0, 1) -#define REBLUR_HISTORY_FIX_NUM_THREADS NumThreads(16, 16) - -#define REBLUR_BLUR_CONSTANT_NUM SumConstants(0, 1, 0, 0) -#define REBLUR_BLUR_NUM_THREADS NumThreads(8, 8) - -#define REBLUR_POST_BLUR_CONSTANT_NUM SumConstants(0, 1, 0, 0) -#define REBLUR_POST_BLUR_NUM_THREADS NumThreads(8, 8) - -#define REBLUR_COPY_STABILIZED_HISTORY_CONSTANT_NUM SumConstants(0, 0, 0, 0, false) -#define REBLUR_COPY_STABILIZED_HISTORY_NUM_THREADS NumThreads(16, 16) - -#define REBLUR_TEMPORAL_STABILIZATION_CONSTANT_NUM SumConstants(3, 3, 2, 1) -#define REBLUR_TEMPORAL_STABILIZATION_NUM_THREADS NumThreads(8, 8) - -#define REBLUR_SPLIT_SCREEN_CONSTANT_NUM SumConstants(0, 0, 0, 3) -#define REBLUR_SPLIT_SCREEN_NUM_THREADS NumThreads(16, 16) - -// Permutations -#define REBLUR_HITDIST_RECONSTRUCTION_PERMUTATION_NUM 4 -#define REBLUR_PREPASS_PERMUTATION_NUM 2 -#define REBLUR_TEMPORAL_ACCUMULATION_PERMUTATION_NUM 16 -#define REBLUR_HISTORY_FIX_PERMUTATION_NUM 1 -#define REBLUR_BLUR_PERMUTATION_NUM 1 -#define REBLUR_POST_BLUR_PERMUTATION_NUM 2 -#define REBLUR_COPY_STABILIZED_HISTORY_PERMUTATION_NUM 1 -#define REBLUR_TEMPORAL_STABILIZATION_PERMUTATION_NUM 2 -#define REBLUR_SPLIT_SCREEN_PERMUTATION_NUM 1 - -#define REBLUR_OCCLUSION_HITDIST_RECONSTRUCTION_PERMUTATION_NUM 2 -#define REBLUR_OCCLUSION_TEMPORAL_ACCUMULATION_PERMUTATION_NUM 8 -#define REBLUR_OCCLUSION_HISTORY_FIX_PERMUTATION_NUM 1 -#define REBLUR_OCCLUSION_BLUR_PERMUTATION_NUM 1 -#define REBLUR_OCCLUSION_POST_BLUR_PERMUTATION_NUM 1 -#define REBLUR_OCCLUSION_SPLIT_SCREEN_PERMUTATION_NUM 1 - -// Formats -#define REBLUR_FORMAT Format::RGBA16_SFLOAT - -#define REBLUR_FORMAT_DIFF_FAST_HISTORY Format::R16_SFLOAT -#define REBLUR_FORMAT_SPEC_FAST_HISTORY Format::RG16_SFLOAT // .y = hit distance for tracking - -#define REBLUR_FORMAT_SPEC_HITDIST_FOR_TRACKING Format::R16_UNORM // use R16_SFLOAT if pre-pass outputs unnormalized hit distance - -#define REBLUR_FORMAT_OCCLUSION Format::R16_UNORM - -#define REBLUR_FORMAT_DIRECTIONAL_OCCLUSION Format::RGBA16_SNORM -#define REBLUR_FORMAT_DIRECTIONAL_OCCLUSION_FAST_HISTORY REBLUR_FORMAT_OCCLUSION - -#define REBLUR_FORMAT_PREV_VIEWZ Format::R32_SFLOAT -#define REBLUR_FORMAT_PREV_NORMAL_ROUGHNESS Format::RGBA8_UNORM -#define REBLUR_FORMAT_PREV_INTERNAL_DATA Format::R16_UINT - -// Other -#define REBLUR_DUMMY AsUint(ResourceType::IN_VIEWZ) - -#define REBLUR_ADD_VALIDATION_DISPATCH( data2, diff, spec ) \ - PushPass("Validation"); \ - { \ - PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); \ - PushInput( AsUint(ResourceType::IN_VIEWZ) ); \ - PushInput( AsUint(ResourceType::IN_MV) ); \ - PushInput( AsUint(Transient::DATA1) ); \ - PushInput( AsUint(data2) ); \ - PushInput( AsUint(diff) ); \ - PushInput( AsUint(spec) ); \ - PushOutput( AsUint(ResourceType::OUT_VALIDATION) ); \ - AddDispatch( REBLUR_Validation, SumConstants(1, 0, 1, 4), NumThreads(16, 16), IGNORE_RS ); \ - } - -struct ReblurProps -{ - bool hasDiffuse; - bool hasSpecular; -}; - -constexpr std::array g_ReblurProps = -{{ - {true, false}, // REBLUR_DIFFUSE - {true, false}, // REBLUR_DIFFUSE_OCCLUSION - {true, false}, // REBLUR_DIFFUSE_SH - {false, true}, // REBLUR_SPECULAR - {false, true}, // REBLUR_SPECULAR_OCCLUSION - {false, true}, // REBLUR_SPECULAR_SH - {true, true}, // REBLUR_DIFFUSE_SPECULAR - {true, true}, // REBLUR_DIFFUSE_SPECULAR_OCCLUSION - {true, true}, // REBLUR_DIFFUSE_SPECULAR_SH - {true, false}, // REBLUR_DIFFUSE_DIRECTIONAL_OCCLUSION -}}; - void nrd::DenoiserImpl::AddMethod_ReblurDiffuse(MethodData& methodData) { #define METHOD_NAME REBLUR_Diffuse @@ -374,255 +272,3 @@ void nrd::DenoiserImpl::AddMethod_ReblurDiffuse(MethodData& methodData) #undef DIFF_TEMP1 #undef DIFF_TEMP2 } - -void nrd::DenoiserImpl::UpdateMethod_Reblur(const MethodData& methodData) -{ - enum class Dispatch - { - HITDIST_RECONSTRUCTION, - PREPASS = HITDIST_RECONSTRUCTION + REBLUR_HITDIST_RECONSTRUCTION_PERMUTATION_NUM * 2, - TEMPORAL_ACCUMULATION = PREPASS + REBLUR_PREPASS_PERMUTATION_NUM * 2, - HISTORY_FIX = TEMPORAL_ACCUMULATION + REBLUR_TEMPORAL_ACCUMULATION_PERMUTATION_NUM * 2, - BLUR = HISTORY_FIX + REBLUR_HISTORY_FIX_PERMUTATION_NUM * 2, - POST_BLUR = BLUR + REBLUR_BLUR_PERMUTATION_NUM * 2, - COPY_STABILIZED_HISTORY = POST_BLUR + REBLUR_POST_BLUR_PERMUTATION_NUM * 2, - TEMPORAL_STABILIZATION = COPY_STABILIZED_HISTORY + REBLUR_COPY_STABILIZED_HISTORY_PERMUTATION_NUM * 1, // no perf mode for copy - SPLIT_SCREEN = TEMPORAL_STABILIZATION + REBLUR_TEMPORAL_STABILIZATION_PERMUTATION_NUM * 2, - VALIDATION = SPLIT_SCREEN + REBLUR_SPLIT_SCREEN_PERMUTATION_NUM * 1, // no perf mode for split screen - }; - - NRD_DECLARE_DIMS; - - const ReblurSettings& settings = methodData.settings.reblur; - const ReblurProps& props = g_ReblurProps[ size_t(methodData.desc.method) - size_t(Method::REBLUR_DIFFUSE) ]; - - bool enableHitDistanceReconstruction = settings.hitDistanceReconstructionMode != HitDistanceReconstructionMode::OFF && settings.checkerboardMode == CheckerboardMode::OFF; - bool skipTemporalStabilization = settings.stabilizationStrength == 0.0f; - bool skipPrePass = (settings.diffusePrepassBlurRadius == 0.0f || !props.hasDiffuse) && - (settings.specularPrepassBlurRadius == 0.0f || !props.hasSpecular) && - settings.checkerboardMode == CheckerboardMode::OFF; - - float disocclusionThresholdBonus = (1.0f + m_JitterDelta) / float(rectH); - float disocclusionThreshold = m_CommonSettings.disocclusionThreshold + disocclusionThresholdBonus; - float disocclusionThresholdAlternate = m_CommonSettings.disocclusionThresholdAlternate + disocclusionThresholdBonus; - - ml::float4 antilagMinMaxThreshold = ml::float4(settings.antilagIntensitySettings.thresholdMin, settings.antilagHitDistanceSettings.thresholdMin, settings.antilagIntensitySettings.thresholdMax, settings.antilagHitDistanceSettings.thresholdMax); - - if (!settings.antilagIntensitySettings.enable || settings.enableReferenceAccumulation) - { - antilagMinMaxThreshold.x = 99998.0f; - antilagMinMaxThreshold.z = 99999.0f; - } - - if (!settings.antilagHitDistanceSettings.enable || settings.enableReferenceAccumulation) - { - antilagMinMaxThreshold.y = 99998.0f; - antilagMinMaxThreshold.w = 99999.0f; - } - - uint32_t specCheckerboard = 2; - uint32_t diffCheckerboard = 2; - - switch (settings.checkerboardMode) - { - case CheckerboardMode::BLACK: - diffCheckerboard = 0; - specCheckerboard = 1; - break; - case CheckerboardMode::WHITE: - diffCheckerboard = 1; - specCheckerboard = 0; - break; - default: - break; - } - - // SPLIT_SCREEN (passthrough) - if (m_CommonSettings.splitScreen >= 1.0f) - { - Constant* data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat(data, m_CommonSettings.splitScreen); - AddUint(data, diffCheckerboard); - AddUint(data, specCheckerboard); - ValidateConstants(data); - - return; - } - - // HITDIST_RECONSTRUCTION - if (enableHitDistanceReconstruction) - { - uint32_t passIndex = AsUint(Dispatch::HITDIST_RECONSTRUCTION) + (settings.hitDistanceReconstructionMode == HitDistanceReconstructionMode::AREA_5X5 ? 4 : 0) + (!skipPrePass ? 2 : 0) + (settings.enablePerformanceMode ? 1 : 0); - Constant* data = PushDispatch(methodData, passIndex); - AddSharedConstants_Reblur(methodData, settings, data); - ValidateConstants(data); - } - - // PREPASS - if (!skipPrePass) - { - uint32_t passIndex = AsUint(Dispatch::PREPASS) + (enableHitDistanceReconstruction ? 2 : 0) + (settings.enablePerformanceMode ? 1 : 0); - Constant* data = PushDispatch(methodData, passIndex); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat4(data, m_Rotator_PrePass); - AddUint(data, diffCheckerboard); - AddUint(data, specCheckerboard); - ValidateConstants(data); - } - - // TEMPORAL_ACCUMULATION - uint32_t passIndex = AsUint(Dispatch::TEMPORAL_ACCUMULATION) + (m_CommonSettings.isDisocclusionThresholdMixAvailable ? 16 : 0) + - (!skipTemporalStabilization ? 8 : 0) + (m_CommonSettings.isHistoryConfidenceAvailable ? 4 : 0) + - ((!skipPrePass || enableHitDistanceReconstruction) ? 2 : 0) + (settings.enablePerformanceMode ? 1 : 0); - Constant* data = PushDispatch(methodData, passIndex); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat4x4(data, m_WorldToViewPrev); - AddFloat4x4(data, m_WorldToClipPrev); - AddFloat4x4(data, m_WorldToClip); - AddFloat4x4(data, m_WorldPrevToWorld); - AddFloat4(data, m_FrustumPrev); - AddFloat4(data, ml::float4(m_CameraDelta.x, m_CameraDelta.y, m_CameraDelta.z, disocclusionThreshold)); - AddFloat(data, disocclusionThresholdAlternate); - AddFloat(data, m_CheckerboardResolveAccumSpeed); - AddUint(data, diffCheckerboard); - AddUint(data, specCheckerboard); - AddUint(data, skipPrePass ? 0 : 1); - AddUint(data, m_CommonSettings.isHistoryConfidenceAvailable ? 1 : 0); - AddUint(data, m_CommonSettings.isDisocclusionThresholdMixAvailable ? 1 : 0); - ValidateConstants(data); - - // HISTORY_FIX - passIndex = AsUint(Dispatch::HISTORY_FIX) + (settings.enablePerformanceMode ? 1 : 0); - data = PushDispatch(methodData, passIndex); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat(data, settings.historyFixStrideBetweenSamples); - ValidateConstants(data); - - // BLUR - passIndex = AsUint(Dispatch::BLUR) + (settings.enablePerformanceMode ? 1 : 0); - data = PushDispatch(methodData, passIndex); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat4(data, m_Rotator_Blur); - ValidateConstants(data); - - // POST_BLUR - passIndex = AsUint(Dispatch::POST_BLUR) + (skipTemporalStabilization ? 0 : 2) + (settings.enablePerformanceMode ? 1 : 0); - data = PushDispatch(methodData, passIndex); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat4(data, m_Rotator_PostBlur); - ValidateConstants(data); - - // COPY_STABILIZED_HISTORY - if (!skipTemporalStabilization) - { - passIndex = AsUint(Dispatch::COPY_STABILIZED_HISTORY); - data = PushDispatch(methodData, passIndex); - ValidateConstants(data); - } - - // TEMPORAL_STABILIZATION - if (!skipTemporalStabilization) - { - passIndex = AsUint(Dispatch::TEMPORAL_STABILIZATION) + (m_CommonSettings.isBaseColorMetalnessAvailable ? 2 : 0) + (settings.enablePerformanceMode ? 1 : 0); - data = PushDispatch(methodData, passIndex); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat4x4(data, m_WorldToClip); - AddFloat4x4(data, m_WorldToClipPrev); - AddFloat4x4(data, m_WorldToViewPrev); - AddFloat4(data, m_FrustumPrev); - AddFloat4(data, antilagMinMaxThreshold ); - AddFloat4(data, ml::float4(m_CameraDelta.x, m_CameraDelta.y, m_CameraDelta.z, settings.stabilizationStrength)); - AddFloat2(data, settings.antilagIntensitySettings.sigmaScale, settings.antilagHitDistanceSettings.sigmaScale); - if (m_CommonSettings.isBaseColorMetalnessAvailable) - AddFloat2(data, settings.specularProbabilityThresholdsForMvModification[0], settings.specularProbabilityThresholdsForMvModification[1]); - else - AddFloat2(data, 2.0f, 3.0f); - AddFloat(data, m_CommonSettings.splitScreen); - ValidateConstants(data); - } - - // SPLIT_SCREEN - if (m_CommonSettings.splitScreen > 0.0f) - { - data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat(data, m_CommonSettings.splitScreen); - AddUint(data, diffCheckerboard); - AddUint(data, specCheckerboard); - ValidateConstants(data); - } - - // VALIDATION - if (m_CommonSettings.enableValidation) - { - data = PushDispatch(methodData, AsUint(Dispatch::VALIDATION)); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat4x4(data, m_WorldToClipPrev); - AddFloat2(data, m_CommonSettings.cameraJitter[0], m_CommonSettings.cameraJitter[1]); - AddUint(data, props.hasDiffuse ? 1 : 0); - AddUint(data, props.hasSpecular ? 1 : 0); - AddUint(data, diffCheckerboard); - AddUint(data, specCheckerboard); - ValidateConstants(data); - } -} - -void nrd::DenoiserImpl::AddSharedConstants_Reblur(const MethodData& methodData, const ReblurSettings& settings, Constant*& data) -{ - NRD_DECLARE_DIMS; - - bool isHistoryReset = m_CommonSettings.accumulationMode != AccumulationMode::CONTINUE; - float unproject = 1.0f / (0.5f * rectH * m_ProjectY); - uint32_t maxAccumulatedFrameNum = ml::Min(settings.maxAccumulatedFrameNum, REBLUR_MAX_HISTORY_FRAME_NUM); - - AddFloat4x4(data, m_ViewToClip); - AddFloat4x4(data, m_ViewToWorld); - - AddFloat4(data, m_Frustum); - AddFloat4(data, ml::float4(settings.hitDistanceParameters.A, settings.hitDistanceParameters.B, settings.hitDistanceParameters.C, settings.hitDistanceParameters.D)); - AddFloat4(data, ml::float4(m_ViewDirection.x, m_ViewDirection.y, m_ViewDirection.z, 0.0f)); - AddFloat4(data, ml::float4(m_ViewDirectionPrev.x, m_ViewDirectionPrev.y, m_ViewDirectionPrev.z, 0.0f)); - AddFloat4(data, ml::float4(m_CommonSettings.motionVectorScale[0], m_CommonSettings.motionVectorScale[1], m_CommonSettings.motionVectorScale[2], m_CommonSettings.debug)); - - AddFloat2(data, 1.0f / float(screenW), 1.0f / float(screenH)); - AddFloat2(data, float(screenW), float(screenH)); - - AddFloat2(data, 1.0f / float(rectW), 1.0f / float(rectH)); - AddFloat2(data, float(rectW), float(rectH)); - - AddFloat2(data, float(rectWprev), float(rectHprev)); - AddFloat2(data, float(rectW) / float(screenW), float(rectH) / float(screenH)); - - AddFloat2(data, float(m_CommonSettings.inputSubrectOrigin[0]) / float(screenW), float(m_CommonSettings.inputSubrectOrigin[1]) / float(screenH)); - AddFloat2(data, settings.antilagIntensitySettings.sensitivityToDarkness + 1e-6f, settings.antilagHitDistanceSettings.sensitivityToDarkness + 1e-6f); - - AddUint2(data, m_CommonSettings.inputSubrectOrigin[0], m_CommonSettings.inputSubrectOrigin[1]); - AddFloat(data, settings.enableReferenceAccumulation ? 0.0f : 1.0f); - AddFloat(data, m_IsOrtho); - - AddFloat(data, unproject); - AddFloat(data, m_CommonSettings.denoisingRange); - AddFloat(data, settings.planeDistanceSensitivity); - AddFloat(data, m_FrameRateScale); - - AddFloat(data, settings.enableReferenceAccumulation ? 0.0f : settings.blurRadius); - AddFloat(data, isHistoryReset ? 0 : float(maxAccumulatedFrameNum)); - AddFloat(data, float(settings.maxFastAccumulatedFrameNum)); - AddFloat(data, settings.enableAntiFirefly ? 1.0f : 0.0f); - - AddFloat(data, settings.lobeAngleFraction); - AddFloat(data, settings.roughnessFraction); - AddFloat(data, settings.responsiveAccumulationRoughnessThreshold); - AddFloat(data, settings.diffusePrepassBlurRadius); - - AddFloat(data, settings.specularPrepassBlurRadius); - AddFloat(data, (float)settings.historyFixFrameNum); - AddFloat(data, (float)ml::Min(rectW, rectH) * unproject); - AddUint(data, m_CommonSettings.isMotionVectorInWorldSpace ? 1 : 0); - - AddUint(data, m_CommonSettings.frameIndex); - AddUint(data, settings.enableMaterialTestForDiffuse ? 1 : 0); - AddUint(data, settings.enableMaterialTestForSpecular ? 1 : 0); - AddUint(data, isHistoryReset ? 1 : 0); -} diff --git a/Source/Methods/Reblur_DiffuseOcclusion.hpp b/Source/Methods/Reblur_DiffuseOcclusion.hpp index e84e208a..18980d60 100644 --- a/Source/Methods/Reblur_DiffuseOcclusion.hpp +++ b/Source/Methods/Reblur_DiffuseOcclusion.hpp @@ -191,133 +191,3 @@ void nrd::DenoiserImpl::AddMethod_ReblurDiffuseOcclusion(MethodData& methodData) #undef DIFF_TEMP1 #undef DIFF_TEMP2 } - -void nrd::DenoiserImpl::UpdateMethod_ReblurOcclusion(const MethodData& methodData) -{ - enum class Dispatch - { - HITDIST_RECONSTRUCTION, - TEMPORAL_ACCUMULATION = HITDIST_RECONSTRUCTION + REBLUR_OCCLUSION_HITDIST_RECONSTRUCTION_PERMUTATION_NUM * 2, - HISTORY_FIX = TEMPORAL_ACCUMULATION + REBLUR_OCCLUSION_TEMPORAL_ACCUMULATION_PERMUTATION_NUM * 2, - BLUR = HISTORY_FIX + REBLUR_OCCLUSION_HISTORY_FIX_PERMUTATION_NUM * 2, // non perf mode is used for anti-firefly - POST_BLUR = BLUR + REBLUR_OCCLUSION_BLUR_PERMUTATION_NUM * 2, - SPLIT_SCREEN = POST_BLUR + REBLUR_OCCLUSION_POST_BLUR_PERMUTATION_NUM * 2, - VALIDATION = SPLIT_SCREEN + REBLUR_SPLIT_SCREEN_PERMUTATION_NUM * 1, // no perf mode for split screen - }; - - NRD_DECLARE_DIMS; - - const ReblurSettings& settings = methodData.settings.reblur; - const ReblurProps& props = g_ReblurProps[ size_t(methodData.desc.method) - size_t(Method::REBLUR_DIFFUSE) ]; - - bool enableHitDistanceReconstruction = settings.hitDistanceReconstructionMode != HitDistanceReconstructionMode::OFF && settings.checkerboardMode == CheckerboardMode::OFF; - - float disocclusionThresholdBonus = (1.0f + m_JitterDelta) / float(rectH); - float disocclusionThreshold = m_CommonSettings.disocclusionThreshold + disocclusionThresholdBonus; - float disocclusionThresholdAlternate = m_CommonSettings.disocclusionThresholdAlternate + disocclusionThresholdBonus; - - uint32_t specCheckerboard = 2; - uint32_t diffCheckerboard = 2; - - switch (settings.checkerboardMode) - { - case CheckerboardMode::BLACK: - diffCheckerboard = 0; - specCheckerboard = 1; - break; - case CheckerboardMode::WHITE: - diffCheckerboard = 1; - specCheckerboard = 0; - break; - default: - break; - } - - // SPLIT_SCREEN (passthrough) - if (m_CommonSettings.splitScreen >= 1.0f) - { - Constant* data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat(data, m_CommonSettings.splitScreen); - AddUint(data, diffCheckerboard); - AddUint(data, specCheckerboard); - ValidateConstants(data); - - return; - } - - // HITDIST_RECONSTRUCTION - if (enableHitDistanceReconstruction) - { - uint32_t passIndex = AsUint(Dispatch::HITDIST_RECONSTRUCTION) + (settings.hitDistanceReconstructionMode == HitDistanceReconstructionMode::AREA_5X5 ? 2 : 0) + (settings.enablePerformanceMode ? 1 : 0); - Constant* data = PushDispatch(methodData, passIndex); - AddSharedConstants_Reblur(methodData, settings, data); - ValidateConstants(data); - } - - // TEMPORAL_ACCUMULATION - uint32_t passIndex = AsUint(Dispatch::TEMPORAL_ACCUMULATION) + (m_CommonSettings.isDisocclusionThresholdMixAvailable ? 8 : 0) + - (m_CommonSettings.isHistoryConfidenceAvailable ? 4 : 0) + (enableHitDistanceReconstruction ? 2 : 0) + (settings.enablePerformanceMode ? 1 : 0); - Constant* data = PushDispatch(methodData, passIndex); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat4x4(data, m_WorldToViewPrev); - AddFloat4x4(data, m_WorldToClipPrev); - AddFloat4x4(data, m_WorldToClip); - AddFloat4x4(data, m_WorldPrevToWorld); - AddFloat4(data, m_FrustumPrev); - AddFloat4(data, ml::float4(m_CameraDelta.x, m_CameraDelta.y, m_CameraDelta.z, disocclusionThreshold)); - AddFloat(data, disocclusionThresholdAlternate); - AddFloat(data, m_CheckerboardResolveAccumSpeed); - AddUint(data, diffCheckerboard); - AddUint(data, specCheckerboard); - AddUint(data, 0); - AddUint(data, m_CommonSettings.isHistoryConfidenceAvailable); - AddUint(data, m_CommonSettings.isDisocclusionThresholdMixAvailable); - ValidateConstants(data); - - // HISTORY_FIX - passIndex = AsUint(Dispatch::HISTORY_FIX) + (!settings.enableAntiFirefly ? 1 : 0); - data = PushDispatch(methodData, passIndex); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat(data, settings.historyFixStrideBetweenSamples); - ValidateConstants(data); - - // BLUR - passIndex = AsUint(Dispatch::BLUR) + (settings.enablePerformanceMode ? 1 : 0); - data = PushDispatch(methodData, passIndex); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat4(data, m_Rotator_Blur); - ValidateConstants(data); - - // POST_BLUR - passIndex = AsUint(Dispatch::POST_BLUR) + (settings.enablePerformanceMode ? 1 : 0); - data = PushDispatch(methodData, passIndex); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat4(data, m_Rotator_PostBlur); - ValidateConstants(data); - - // SPLIT_SCREEN - if (m_CommonSettings.splitScreen > 0.0f) - { - data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat(data, m_CommonSettings.splitScreen); - AddUint(data, diffCheckerboard); - AddUint(data, specCheckerboard); - ValidateConstants(data); - } - - // VALIDATION - if (m_CommonSettings.enableValidation) - { - data = PushDispatch(methodData, AsUint(Dispatch::VALIDATION)); - AddSharedConstants_Reblur(methodData, settings, data); - AddFloat4x4(data, m_WorldToClipPrev); - AddFloat2(data, m_CommonSettings.cameraJitter[0], m_CommonSettings.cameraJitter[1]); - AddUint(data, props.hasDiffuse ? 1 : 0); - AddUint(data, props.hasSpecular ? 1 : 0); - AddUint(data, diffCheckerboard); - AddUint(data, specCheckerboard); - ValidateConstants(data); - } -} diff --git a/Source/Methods/Relax_Diffuse.hpp b/Source/Methods/Relax_Diffuse.hpp index 13f5e8ca..fdd9bcb0 100644 --- a/Source/Methods/Relax_Diffuse.hpp +++ b/Source/Methods/Relax_Diffuse.hpp @@ -7,120 +7,6 @@ and any modifications thereto. Any use, reproduction, disclosure or distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -constexpr uint32_t RELAX_MAX_ATROUS_PASS_NUM = 8; - -#define RELAX_SET_SHARED_CONSTANTS SetSharedConstants(5, 8, 7, 14) - -#define RELAX_ADD_VALIDATION_DISPATCH \ - PushPass("Validation"); \ - { \ - PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); \ - PushInput( AsUint(ResourceType::IN_VIEWZ) ); \ - PushInput( AsUint(ResourceType::IN_MV) ); \ - PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); \ - PushOutput( AsUint(ResourceType::OUT_VALIDATION) ); \ - AddDispatch( RELAX_Validation, SumConstants(1, 0, 1, 1), NumThreads(16, 16), IGNORE_RS ); \ - } - -inline ml::float3 RELAX_GetFrustumForward(const ml::float4x4& viewToWorld, const ml::float4& frustum) -{ - // Note: this vector is not normalized for non-symmetric projections but that's correct. - // It has to have .z coordinate equal to 1.0 to correctly reconstruct world position in shaders. - ml::float4 frustumForwardView = ml::float4(0.5f, 0.5f, 1.0f, 0.0f) * ml::float4(frustum.z, frustum.w, 1.0f, 0.0f) + ml::float4(frustum.x, frustum.y, 0.0f, 0.0f); - ml::float3 frustumForwardWorld = (viewToWorld * frustumForwardView).To3d(); - return frustumForwardWorld; -} - -inline bool RELAX_IsCameraStatic -( - const ml::float3& cameraDelta, - const ml::float3& frustumRight, const ml::float3& frustumUp, const ml::float3& frustumForward, - const ml::float3& prevFrustumRight, const ml::float3& prevFrustumUp, const ml::float3& prevFrustumForward, float eps = ml::c_fEps -) -{ - return ml::Length(cameraDelta) < eps && ml::Length(frustumRight - prevFrustumRight) < eps && ml::Length(frustumUp - prevFrustumUp) < eps && ml::Length(frustumForward - prevFrustumForward) < eps; -} - -void nrd::DenoiserImpl::AddSharedConstants_Relax(const MethodData& methodData, Constant*& data, Method method) -{ - NRD_DECLARE_DIMS; - - // Calculate camera right and up vectors in worldspace scaled according to frustum extents, - // and unit forward vector, for fast worldspace position reconstruction in shaders - float tanHalfFov = 1.0f / m_ViewToClip.a00; - float aspect = m_ViewToClip.a00 / m_ViewToClip.a11; - ml::float3 frustumRight = m_WorldToView.GetRow0().To3d() * tanHalfFov; - ml::float3 frustumUp = m_WorldToView.GetRow1().To3d() * tanHalfFov * aspect; - ml::float3 frustumForward = RELAX_GetFrustumForward(m_ViewToWorld, m_Frustum); - - float prevTanHalfFov = 1.0f / m_ViewToClipPrev.a00; - float prevAspect = m_ViewToClipPrev.a00 / m_ViewToClipPrev.a11; - ml::float3 prevFrustumRight = m_WorldToViewPrev.GetRow0().To3d() * prevTanHalfFov; - ml::float3 prevFrustumUp = m_WorldToViewPrev.GetRow1().To3d() * prevTanHalfFov * prevAspect; - ml::float3 prevFrustumForward = RELAX_GetFrustumForward(m_ViewToWorldPrev, m_FrustumPrev); - - AddFloat4x4(data, m_WorldToClipPrev); - AddFloat4x4(data, m_WorldToViewPrev); - AddFloat4x4(data, m_WorldToClip); - AddFloat4x4(data, m_WorldPrevToWorld); - AddFloat4x4(data, m_ViewToWorld); - - AddFloat4(data, ml::float4(frustumRight.x, frustumRight.y, frustumRight.z, 0)); - AddFloat4(data, ml::float4(frustumUp.x, frustumUp.y, frustumUp.z, 0)); - AddFloat4(data, ml::float4(frustumForward.x, frustumForward.y, frustumForward.z, 0)); - AddFloat4(data, ml::float4(prevFrustumRight.x, prevFrustumRight.y, prevFrustumRight.z, 0)); - AddFloat4(data, ml::float4(prevFrustumUp.x, prevFrustumUp.y, prevFrustumUp.z, 0)); - AddFloat4(data, ml::float4(prevFrustumForward.x, prevFrustumForward.y, prevFrustumForward.z, 0)); - AddFloat4(data, ml::float4(m_CameraDelta.x, m_CameraDelta.y, m_CameraDelta.z, 0.0f)); - AddFloat4(data, ml::float4(m_CommonSettings.motionVectorScale[0], m_CommonSettings.motionVectorScale[1], m_CommonSettings.motionVectorScale[2], m_CommonSettings.debug)); - - AddFloat2(data, float(rectW) / float(screenW), float(rectH) / float(screenH)); - AddUint2(data, m_CommonSettings.inputSubrectOrigin[0], m_CommonSettings.inputSubrectOrigin[1]); - - AddFloat2(data, float(m_CommonSettings.inputSubrectOrigin[0]) / float(screenW), float(m_CommonSettings.inputSubrectOrigin[1]) / float(screenH)); - AddUint2(data, rectW, rectH); - - AddFloat2(data, 1.0f / screenW, 1.0f / screenH); - AddFloat2(data, 1.0f / rectW, 1.0f / rectH); - - AddFloat2(data, float(rectWprev), float(rectHprev)); - AddUint(data, m_CommonSettings.isMotionVectorInWorldSpace ? 1 : 0); - AddFloat(data, m_IsOrtho); - - AddFloat(data, 1.0f / (0.5f * rectH * m_ProjectY)); - AddUint(data, m_CommonSettings.frameIndex); - AddFloat(data, m_CommonSettings.denoisingRange); - AddFloat(data, ml::Clamp(16.66f / m_TimeDelta, 0.25f, 4.0f)); // Normalizing to 60 FPS - - AddFloat(data, m_CheckerboardResolveAccumSpeed); - AddFloat(data, m_JitterDelta); - switch (method) - { - case Method::RELAX_DIFFUSE: - AddUint(data, methodData.settings.diffuseRelax.enableMaterialTest ? 1 : 0); - AddUint(data, 0); - break; - case Method::RELAX_SPECULAR: - AddUint(data, 0); - AddUint(data, methodData.settings.specularRelax.enableMaterialTest ? 1 : 0); - break; - case Method::RELAX_DIFFUSE_SPECULAR: - AddUint(data, methodData.settings.diffuseSpecularRelax.enableMaterialTestForDiffuse ? 1 : 0); - AddUint(data, methodData.settings.diffuseSpecularRelax.enableMaterialTestForSpecular ? 1 : 0); - break; - default: - // Should never get here - AddUint(data, 0); - AddUint(data, 0); - break; - } - - // 1 if m_WorldPrevToWorld should be used in shader, otherwise we can skip multiplication - AddUint(data, (m_WorldPrevToWorld != ml::float4x4::Identity()) ? 1 : 0); - AddUint(data, m_CommonSettings.accumulationMode != AccumulationMode::CONTINUE ? 1 : 0); - AddUint(data, 0); - AddUint(data, 0); -} void nrd::DenoiserImpl::AddMethod_RelaxDiffuse(MethodData& methodData) { diff --git a/Source/Methods/Relax_DiffuseSh.hpp b/Source/Methods/Relax_DiffuseSh.hpp new file mode 100644 index 00000000..8d763cd3 --- /dev/null +++ b/Source/Methods/Relax_DiffuseSh.hpp @@ -0,0 +1,576 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +void nrd::DenoiserImpl::AddMethod_RelaxDiffuseSh(MethodData& methodData) +{ + #define METHOD_NAME RELAX_Diffuse + + methodData.settings.diffuseRelax = RelaxDiffuseSettings(); + methodData.settingsSize = sizeof(methodData.settings.diffuseRelax); + + uint16_t w = methodData.desc.fullResolutionWidth; + uint16_t h = methodData.desc.fullResolutionHeight; + + enum class Permanent + { + DIFF_ILLUM_PREV = PERMANENT_POOL_START, + DIFF_ILLUM_PREV_SH1, + DIFF_ILLUM_RESPONSIVE_PREV, + DIFF_ILLUM_RESPONSIVE_PREV_SH1, + HISTORY_LENGTH_CURR, + HISTORY_LENGTH_PREV, + NORMAL_ROUGHNESS_PREV, + MATERIAL_ID_PREV, + VIEWZ_CURR, + VIEWZ_PREV + }; + + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::R8_UNORM, w, h, 1} ); + m_PermanentPool.push_back( {Format::R8_UNORM, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA8_UNORM, w, h, 1} ); + m_PermanentPool.push_back( {Format::R8_UNORM, w, h, 1} ); + m_PermanentPool.push_back( {Format::R32_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::R32_SFLOAT, w, h, 1} ); + + enum class Transient + { + DIFF_ILLUM_PING = TRANSIENT_POOL_START, + DIFF_ILLUM_PING_SH1, + DIFF_ILLUM_PONG, + DIFF_ILLUM_PONG_SH1, + DIFF_ILLUM_TMP, + DIFF_ILLUM_TMP_SH1, + VIEWZ_R16F + }; + + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::R16_SFLOAT, w, h, 1} ); + + RELAX_SET_SHARED_CONSTANTS; + + const uint32_t halfMaxPassNum = (RELAX_MAX_ATROUS_PASS_NUM - 2 + 1) / 2; + + PushPass("Hit distance reconstruction 3x3"); // 3x3 + { + PushInput( AsUint(ResourceType::IN_DIFF_SH0) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + + PushOutput( AsUint(Transient::DIFF_ILLUM_PING) ); + + AddDispatch( RELAX_Diffuse_HitDistReconstruction, SumConstants(0, 0, 0, 0), NumThreads(8, 8), 1 ); + } + + PushPass("Hit distance reconstruction 5x5"); // 5x5 + { + PushInput( AsUint(ResourceType::IN_DIFF_SH0) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + + PushOutput( AsUint(Transient::DIFF_ILLUM_PING) ); + + AddDispatch( RELAX_Diffuse_HitDistReconstruction_5x5, SumConstants(0, 0, 0, 0), NumThreads(8, 8), 1 ); + } + + PushPass("Pre-pass"); // After hit distance reconstruction + { + // Does preblur (if enabled), checkerboard reconstruction (if enabled) and generates FP16 ViewZ texture + PushInput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + PushInput( AsUint(ResourceType::IN_DIFF_SH1) ); + + PushOutput( AsUint(Transient::DIFF_ILLUM_TMP) ); + PushOutput( AsUint(Permanent::VIEWZ_CURR), 0, 1, AsUint(Permanent::VIEWZ_PREV) ); + PushOutput( AsUint(Transient::VIEWZ_R16F) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_TMP_SH1) ); + + AddDispatch( RELAX_DiffuseSh_PrePass, SumConstants(0, 1, 0, 5), NumThreads(16, 16), 1 ); + } + + PushPass("Pre-pass"); // Without hit distance reconstruction + { + // Does preblur (if enabled), checkerboard reconstruction (if enabled) and generates FP16 ViewZ texture + PushInput( AsUint(ResourceType::IN_DIFF_SH0) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + PushInput( AsUint(ResourceType::IN_DIFF_SH1) ); + + PushOutput( AsUint(Transient::DIFF_ILLUM_TMP) ); + PushOutput( AsUint(Permanent::VIEWZ_CURR), 0, 1, AsUint(Permanent::VIEWZ_PREV) ); + PushOutput( AsUint(Transient::VIEWZ_R16F) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_TMP_SH1) ); + + AddDispatch( RELAX_DiffuseSh_PrePass, SumConstants(0, 1, 0, 5), NumThreads(16, 16), 1 ); + } + + for (int i = 0; i < 4; i++) + { + // The following passes are defined here: + // TEMPORAL_ACCUMULATION, + // TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS, + // TEMPORAL_ACCUMULATION_WITH_THRESHOLD_MIX, + // TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS_WITH_THRESHOLD_MIX + + PushPass("Temporal accumulation"); + { + PushInput( AsUint(Transient::DIFF_ILLUM_TMP) ); + PushInput( AsUint(ResourceType::IN_MV) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Permanent::VIEWZ_CURR), 0, 1, AsUint(Permanent::VIEWZ_PREV) ); + PushInput( AsUint(Permanent::DIFF_ILLUM_RESPONSIVE_PREV) ); + PushInput( AsUint(Permanent::DIFF_ILLUM_PREV) ); + PushInput( AsUint(Permanent::NORMAL_ROUGHNESS_PREV) ); + PushInput( AsUint(Permanent::VIEWZ_PREV), 0, 1, AsUint(Permanent::VIEWZ_CURR) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); + PushInput( AsUint(Permanent::MATERIAL_ID_PREV) ); + // Optional inputs: + if (i == 0) + { + PushInput( AsUint(Transient::VIEWZ_R16F) ); // Bogus input that will not be fetched anyway + PushInput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); // Bogus input that will not be fetched anyway + } + if (i == 1) + { + PushInput( AsUint(ResourceType::IN_DIFF_CONFIDENCE) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); // Bogus input that will not be fetched anyway + } + if (i == 2) + { + PushInput( AsUint(Transient::VIEWZ_R16F) ); // Bogus input that will not be fetched anyway + PushInput( AsUint(ResourceType::IN_DISOCCLUSION_THRESHOLD_MIX) ); + } + if (i == 3) + { + PushInput( AsUint(ResourceType::IN_DIFF_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_DISOCCLUSION_THRESHOLD_MIX) ); + } + PushInput( AsUint(Transient::DIFF_ILLUM_TMP_SH1) ); + PushInput( AsUint(Permanent::DIFF_ILLUM_RESPONSIVE_PREV_SH1) ); + PushInput( AsUint(Permanent::DIFF_ILLUM_PREV_SH1) ); + + PushOutput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushOutput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + AddDispatch( RELAX_DiffuseSh_TemporalAccumulation, SumConstants(0, 0, 0, 8), NumThreads(8, 8), 1 ); + } + } + + PushPass("History fix"); + { + PushInput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + + PushOutput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + AddDispatch( RELAX_DiffuseSh_HistoryFix, SumConstants(0, 0, 0, 4), NumThreads(8, 8), 1 ); + } + + PushPass("History clamping"); // with firefly after it + { + PushInput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + PushOutput( AsUint(Transient::DIFF_ILLUM_TMP) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_RESPONSIVE_PREV) ); + PushOutput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_PREV_SH1) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_RESPONSIVE_PREV_SH1) ); + + AddDispatch( RELAX_DiffuseSh_HistoryClamping, SumConstants(0, 0, 0, 3), NumThreads(8, 8), 1 ); + } + + PushPass("History clamping"); // without firefly after it + { + PushInput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + PushOutput( AsUint(Permanent::DIFF_ILLUM_PREV) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_RESPONSIVE_PREV) ); + PushOutput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_PREV_SH1) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_RESPONSIVE_PREV_SH1) ); + + AddDispatch( RELAX_DiffuseSh_HistoryClamping, SumConstants(0, 0, 0, 3), NumThreads(8, 8), 1 ); + } + + PushPass("Anti-firefly"); + { + PushInput( AsUint(Transient::DIFF_ILLUM_TMP) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + + PushOutput( AsUint(Permanent::DIFF_ILLUM_PREV) ); + + AddDispatch( RELAX_DiffuseSh_AntiFirefly, SumConstants(0, 0, 0, 0), NumThreads(16, 16), 1 ); + } + + for (int i = 0; i < 2; i++) + { + bool withConfidenceInputs = (i == 1); + + // A-trous (first) + PushPass("A-trous (SMEM)"); + { + PushInput( AsUint(Permanent::DIFF_ILLUM_PREV) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_DIFF_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Permanent::DIFF_ILLUM_PREV_SH1) ); + + PushOutput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushOutput( AsUint(Permanent::NORMAL_ROUGHNESS_PREV) ); + PushOutput( AsUint(Permanent::MATERIAL_ID_PREV) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + + AddDispatch( RELAX_DiffuseSh_AtrousSmem, SumConstants(0, 0, 1, 10), NumThreads(8, 8), 1 ); + } + + // A-trous (odd) + PushPass("A-trous"); + { + PushInput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_DIFF_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + + PushOutput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + AddDispatchRepeated( RELAX_DiffuseSh_Atrous, SumConstants(0, 0, 0, 10), NumThreads(16, 16), 1, halfMaxPassNum ); + } + + // A-trous (even) + PushPass("A-trous"); + { + PushInput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_DIFF_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + PushOutput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + + AddDispatchRepeated(RELAX_DiffuseSh_Atrous, SumConstants(0, 0, 0, 10), NumThreads(16, 16), 1, halfMaxPassNum ); + } + + // A-trous (odd, last) + PushPass("A-trous"); + { + PushInput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_DIFF_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + + PushOutput( AsUint(ResourceType::OUT_DIFF_SH0) ); + PushOutput( AsUint(ResourceType::OUT_DIFF_SH1) ); + + AddDispatch(RELAX_DiffuseSh_Atrous, SumConstants(0, 0, 0, 10), NumThreads(16, 16), 1 ); + } + + // A-trous (even, last) + PushPass("A-trous"); + { + PushInput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_DIFF_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + PushOutput( AsUint(ResourceType::OUT_DIFF_SH0) ); + PushOutput( AsUint(ResourceType::OUT_DIFF_SH1) ); + + AddDispatch(RELAX_DiffuseSh_Atrous, SumConstants(0, 0, 0, 10), NumThreads(16, 16), 1 ); + } + } + + PushPass("Split screen"); + { + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + PushInput( AsUint(ResourceType::IN_DIFF_RADIANCE_HITDIST) ); + + PushOutput( AsUint( ResourceType::OUT_DIFF_RADIANCE_HITDIST ) ); + + AddDispatch( RELAX_Diffuse_SplitScreen, SumConstants(0, 0, 0, 2), NumThreads(16, 16), 1 ); + } + + RELAX_ADD_VALIDATION_DISPATCH; + + #undef METHOD_NAME +} + +void nrd::DenoiserImpl::UpdateMethod_RelaxDiffuseSh(const MethodData& methodData) +{ + enum class Dispatch + { + HITDIST_RECONSTRUCTION_3x3, + HITDIST_RECONSTRUCTION_5x5, + PREPASS_AFTER_HITDIST_RECONSTRUCTION, + PREPASS, + TEMPORAL_ACCUMULATION, + TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS, + TEMPORAL_ACCUMULATION_WITH_THRESHOLD_MIX, + TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS_WITH_THRESHOLD_MIX, + HISTORY_FIX, + HISTORY_CLAMPING, + HISTORY_CLAMPING_NO_FIREFLY, + FIREFLY, + ATROUS_SMEM, + ATROUS_ODD, + ATROUS_EVEN, + ATROUS_ODD_LAST, + ATROUS_EVEN_LAST, + ATROUS_SMEM_WITH_CONFIDENCE_INPUTS, + ATROUS_ODD_WITH_CONFIDENCE_INPUTS, + ATROUS_EVEN_WITH_CONFIDENCE_INPUTS, + ATROUS_ODD_LAST_WITH_CONFIDENCE_INPUTS, + ATROUS_EVEN_LAST_WITH_CONFIDENCE_INPUTS, + SPLIT_SCREEN, + VALIDATION, + }; + + const RelaxDiffuseSettings& settings = methodData.settings.diffuseRelax; + + NRD_DECLARE_DIMS; + + float maxLuminanceRelativeDifference = -ml::Log(ml::Saturate(settings.minLuminanceWeight)); + + float disocclusionThreshold = m_CommonSettings.disocclusionThreshold + (1.0f + m_JitterDelta) / float(rectH); + float disocclusionThresholdOrtho = disocclusionThreshold; + float disocclusionThresholdAlternate = m_CommonSettings.disocclusionThresholdAlternate + (1.0f + m_JitterDelta) / float(rectH); + float disocclusionThresholdAlternateOrtho = disocclusionThresholdAlternate; + float depthThresholdOrtho = settings.depthThreshold; + + float tanHalfFov = 1.0f / m_ViewToClip.a00; + float aspect = m_ViewToClip.a00 / m_ViewToClip.a11; + ml::float3 frustumRight = m_WorldToView.GetRow0().To3d() * tanHalfFov; + ml::float3 frustumUp = m_WorldToView.GetRow1().To3d() * tanHalfFov * aspect; + ml::float3 frustumForward = RELAX_GetFrustumForward(m_ViewToWorld, m_Frustum); + + float prevTanHalfFov = 1.0f / m_ViewToClipPrev.a00; + float prevAspect = m_ViewToClipPrev.a00 / m_ViewToClipPrev.a11; + ml::float3 prevFrustumRight = m_WorldToViewPrev.GetRow0().To3d() * prevTanHalfFov; + ml::float3 prevFrustumUp = m_WorldToViewPrev.GetRow1().To3d() * prevTanHalfFov * prevAspect; + ml::float3 prevFrustumForward = RELAX_GetFrustumForward(m_ViewToWorldPrev, m_FrustumPrev); + bool isCameraStatic = RELAX_IsCameraStatic(ml::float3(m_CameraDelta.x, m_CameraDelta.y, m_CameraDelta.z), frustumRight, frustumUp, frustumForward, prevFrustumRight, prevFrustumUp, prevFrustumForward); + + bool enableHitDistanceReconstruction = settings.hitDistanceReconstructionMode != HitDistanceReconstructionMode::OFF && settings.checkerboardMode == CheckerboardMode::OFF; + + // Checkerboard logic + uint32_t diffuseCheckerboard = 2; + + switch (settings.checkerboardMode) + { + case CheckerboardMode::BLACK: + diffuseCheckerboard = 0; + break; + case CheckerboardMode::WHITE: + diffuseCheckerboard = 1; + break; + default: + break; + } + + // SPLIT_SCREEN (passthrough) + if (m_CommonSettings.splitScreen >= 1.0f) + { + Constant* data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE); + AddFloat(data, m_CommonSettings.splitScreen); + AddUint(data, diffuseCheckerboard); + ValidateConstants(data); + + return; + } + + // HITDIST_RECONSTRUCTION + if (enableHitDistanceReconstruction) + { + bool is3x3 = settings.hitDistanceReconstructionMode == HitDistanceReconstructionMode::AREA_3X3; + Constant* data = PushDispatch(methodData, is3x3 ? AsUint(Dispatch::HITDIST_RECONSTRUCTION_3x3) : AsUint(Dispatch::HITDIST_RECONSTRUCTION_5x5)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE); + ValidateConstants(data); + } + + // PREPASS + Constant* data = PushDispatch(methodData, AsUint(enableHitDistanceReconstruction ? Dispatch::PREPASS_AFTER_HITDIST_RECONSTRUCTION : Dispatch::PREPASS)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE); + AddFloat4(data, m_Rotator_PrePass); + AddUint(data, diffuseCheckerboard); + AddFloat(data, settings.prepassBlurRadius); + AddFloat(data, 1.0f); + AddFloat(data, m_IsOrtho == 0 ? settings.depthThreshold : depthThresholdOrtho); + AddFloat(data, settings.diffuseLobeAngleFraction); + + ValidateConstants(data); + + // TEMPORAL_ACCUMULATION + if (!m_CommonSettings.isDisocclusionThresholdMixAvailable) + { + data = PushDispatch( + methodData, + AsUint(m_CommonSettings.isHistoryConfidenceAvailable ? + Dispatch::TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS : + Dispatch::TEMPORAL_ACCUMULATION)); + } + else + { + data = PushDispatch( + methodData, + AsUint(m_CommonSettings.isHistoryConfidenceAvailable ? + Dispatch::TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS_WITH_THRESHOLD_MIX : + Dispatch::TEMPORAL_ACCUMULATION_WITH_THRESHOLD_MIX)); + } + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE); + AddFloat(data, (float)settings.diffuseMaxAccumulatedFrameNum); + AddFloat(data, (float)settings.diffuseMaxFastAccumulatedFrameNum); + AddUint(data, diffuseCheckerboard); + AddFloat(data, m_IsOrtho == 0 ? disocclusionThreshold : disocclusionThresholdOrtho); + AddFloat(data, m_IsOrtho == 0 ? disocclusionThresholdAlternate : disocclusionThresholdAlternateOrtho); + AddUint(data, settings.enableReprojectionTestSkippingWithoutMotion && isCameraStatic); + AddUint(data, m_CommonSettings.isHistoryConfidenceAvailable ? 1 : 0); + AddUint(data, m_CommonSettings.isDisocclusionThresholdMixAvailable ? 1 : 0); + ValidateConstants(data); + + // HISTORY_FIX + data = PushDispatch(methodData, AsUint(Dispatch::HISTORY_FIX)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE); + AddFloat(data, m_IsOrtho == 0 ? settings.depthThreshold : depthThresholdOrtho); + AddFloat(data, settings.historyFixEdgeStoppingNormalPower); + AddFloat(data, settings.historyFixStrideBetweenSamples); + AddFloat(data, float(settings.historyFixFrameNum)); + ValidateConstants(data); + + if (settings.enableAntiFirefly) + { + // HISTORY_CLAMPING + data = PushDispatch(methodData, AsUint(Dispatch::HISTORY_CLAMPING)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE); + AddFloat(data, settings.historyClampingColorBoxSigmaScale); + AddFloat(data, float(settings.historyFixFrameNum)); + AddUint(data, settings.diffuseMaxFastAccumulatedFrameNum < settings.diffuseMaxAccumulatedFrameNum ? 1 : 0); + ValidateConstants(data); + + // FIREFLY + data = PushDispatch(methodData, AsUint(Dispatch::FIREFLY)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE); + ValidateConstants(data); + } + else + { + // HISTORY_CLAMPING (without firefly) + data = PushDispatch(methodData, AsUint(Dispatch::HISTORY_CLAMPING_NO_FIREFLY)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE); + AddFloat(data, settings.historyClampingColorBoxSigmaScale); + AddFloat(data, float(settings.historyFixFrameNum)); + AddUint(data, settings.diffuseMaxFastAccumulatedFrameNum < settings.diffuseMaxAccumulatedFrameNum ? 1 : 0); + ValidateConstants(data); + } + + // A-TROUS + uint32_t iterationNum = ml::Clamp(settings.atrousIterationNum, 2u, RELAX_MAX_ATROUS_PASS_NUM); + for (uint32_t i = 0; i < iterationNum; i++) + { + Dispatch dispatch; + if (!m_CommonSettings.isHistoryConfidenceAvailable) + { + if (i == 0) + dispatch = Dispatch::ATROUS_SMEM; + else if (i == iterationNum - 1) + dispatch = (i % 2 == 0) ? Dispatch::ATROUS_EVEN_LAST : Dispatch::ATROUS_ODD_LAST; + else + dispatch = (i % 2 == 0) ? Dispatch::ATROUS_EVEN : Dispatch::ATROUS_ODD; + } + else + { + if (i == 0) + dispatch = Dispatch::ATROUS_SMEM_WITH_CONFIDENCE_INPUTS; + else if (i == iterationNum - 1) + dispatch = (i % 2 == 0) ? Dispatch::ATROUS_EVEN_LAST_WITH_CONFIDENCE_INPUTS : Dispatch::ATROUS_ODD_LAST_WITH_CONFIDENCE_INPUTS; + else + dispatch = (i % 2 == 0) ? Dispatch::ATROUS_EVEN_WITH_CONFIDENCE_INPUTS : Dispatch::ATROUS_ODD_WITH_CONFIDENCE_INPUTS; + } + + data = PushDispatch(methodData, AsUint(dispatch)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE); + + if (i == 0) + { + AddUint2(data, screenW, screenH); // For Atrous_shmem + AddUint(data, settings.spatialVarianceEstimationHistoryThreshold); + } + + AddFloat(data, settings.diffusePhiLuminance); + AddFloat(data, maxLuminanceRelativeDifference); + AddFloat(data, m_IsOrtho == 0 ? settings.depthThreshold : depthThresholdOrtho); + AddFloat(data, settings.diffuseLobeAngleFraction); + AddUint(data, 1 << i); + AddUint(data, m_CommonSettings.isHistoryConfidenceAvailable ? 1 : 0); + AddFloat(data, settings.confidenceDrivenRelaxationMultiplier); + AddFloat(data, settings.confidenceDrivenLuminanceEdgeStoppingRelaxation); + AddFloat(data, settings.confidenceDrivenNormalEdgeStoppingRelaxation); + if (i != 0) + { + AddUint(data, (i == iterationNum - 1) ? 1 : 0); + } + ValidateConstants(data); + } + + // SPLIT_SCREEN + if (m_CommonSettings.splitScreen > 0.0f) + { + data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE); + AddFloat(data, m_CommonSettings.splitScreen); + AddUint(data, diffuseCheckerboard); + ValidateConstants(data); + } + + // VALIDATION + if (m_CommonSettings.enableValidation) + { + data = PushDispatch(methodData, AsUint(Dispatch::VALIDATION)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + AddFloat4x4(data, m_WorldToClipPrev); + AddFloat2(data, m_CommonSettings.cameraJitter[0], m_CommonSettings.cameraJitter[1]); + AddFloat(data, (float)settings.diffuseMaxAccumulatedFrameNum); + ValidateConstants(data); + } +} diff --git a/Source/Methods/Relax_DiffuseSpecularSh.hpp b/Source/Methods/Relax_DiffuseSpecularSh.hpp new file mode 100644 index 00000000..07cae6ee --- /dev/null +++ b/Source/Methods/Relax_DiffuseSpecularSh.hpp @@ -0,0 +1,716 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +void nrd::DenoiserImpl::AddMethod_RelaxDiffuseSpecularSh(MethodData& methodData) +{ + #define METHOD_NAME RELAX_DiffuseSpecular + + methodData.settings.diffuseSpecularRelax = RelaxDiffuseSpecularSettings(); + methodData.settingsSize = sizeof(methodData.settings.diffuseSpecularRelax); + + uint16_t w = methodData.desc.fullResolutionWidth; + uint16_t h = methodData.desc.fullResolutionHeight; + + enum class Permanent + { + SPEC_ILLUM_PREV = PERMANENT_POOL_START, + SPEC_ILLUM_PREV_SH1, + DIFF_ILLUM_PREV, + DIFF_ILLUM_PREV_SH1, + SPEC_ILLUM_RESPONSIVE_PREV, + SPEC_ILLUM_RESPONSIVE_PREV_SH1, + DIFF_ILLUM_RESPONSIVE_PREV, + DIFF_ILLUM_RESPONSIVE_PREV_SH1, + REFLECTION_HIT_T_CURR, + REFLECTION_HIT_T_PREV, + HISTORY_LENGTH_CURR, + HISTORY_LENGTH_PREV, + NORMAL_ROUGHNESS_PREV, + MATERIAL_ID_PREV, + VIEWZ_CURR, + VIEWZ_PREV, + }; + + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::R16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::R16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::R8_UNORM, w, h, 1} ); + m_PermanentPool.push_back( {Format::R8_UNORM, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA8_UNORM, w, h, 1} ); + m_PermanentPool.push_back( {Format::R8_UNORM, w, h, 1} ); + m_PermanentPool.push_back( {Format::R32_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::R32_SFLOAT, w, h, 1} ); + + enum class Transient + { + SPEC_ILLUM_PING = TRANSIENT_POOL_START, + SPEC_ILLUM_PING_SH1, + SPEC_ILLUM_PONG, + SPEC_ILLUM_PONG_SH1, + DIFF_ILLUM_PING, + DIFF_ILLUM_PING_SH1, + DIFF_ILLUM_PONG, + DIFF_ILLUM_PONG_SH1, + SPEC_ILLUM_TMP, + SPEC_ILLUM_TMP_SH1, + DIFF_ILLUM_TMP, + DIFF_ILLUM_TMP_SH1, + SPEC_REPROJECTION_CONFIDENCE, + VIEWZ_R16F + }; + + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::R8_UNORM, w, h, 1} ); + m_TransientPool.push_back( {Format::R16_SFLOAT, w, h, 1} ); + + RELAX_SET_SHARED_CONSTANTS; + + const uint32_t halfMaxPassNum = (RELAX_MAX_ATROUS_PASS_NUM - 2 + 1) / 2; + + PushPass("Hit distance reconstruction 3x3"); // 3x3 + { + PushInput( AsUint(ResourceType::IN_SPEC_SH0) ); + PushInput( AsUint(ResourceType::IN_DIFF_SH0) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PING) ); + + AddDispatch( RELAX_DiffuseSpecular_HitDistReconstruction, SumConstants(0, 0, 0, 0), NumThreads(8, 8), 1 ); + } + + PushPass("Hit distance reconstruction 5x5"); // 5x5 + { + PushInput( AsUint(ResourceType::IN_SPEC_SH0) ); + PushInput( AsUint(ResourceType::IN_DIFF_SH0) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + + PushOutput(AsUint(Transient::SPEC_ILLUM_PING)); + PushOutput(AsUint(Transient::DIFF_ILLUM_PING)); + + AddDispatch( RELAX_DiffuseSpecular_HitDistReconstruction_5x5, SumConstants(0, 0, 0, 0), NumThreads(8, 8), 1 ); + } + + PushPass("Pre-pass"); // After hit distance reconstruction + { + // Does preblur (if enabled), checkerboard reconstruction (if enabled) and generates FP16 ViewZ texture + PushInput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + PushInput( AsUint(ResourceType::IN_SPEC_SH1) ); + PushInput( AsUint(ResourceType::IN_DIFF_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_TMP) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_TMP) ); + PushOutput( AsUint(Permanent::VIEWZ_CURR), 0, 1, AsUint(Permanent::VIEWZ_PREV) ); + PushOutput( AsUint(Transient::VIEWZ_R16F) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_TMP_SH1) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_TMP_SH1) ); + + AddDispatch( RELAX_DiffuseSpecularSh_PrePass, SumConstants(0, 1, 0, 10), NumThreads(16, 16), 1 ); + } + + PushPass("Pre-pass"); // Without hit distance reconstruction + { + // Does preblur (if enabled), checkerboard reconstruction (if enabled) and generates FP16 ViewZ texture + PushInput( AsUint(ResourceType::IN_SPEC_SH0) ); + PushInput( AsUint(ResourceType::IN_DIFF_SH0) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + PushInput( AsUint(ResourceType::IN_SPEC_SH1) ); + PushInput( AsUint(ResourceType::IN_DIFF_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_TMP) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_TMP) ); + PushOutput( AsUint(Permanent::VIEWZ_CURR), 0, 1, AsUint(Permanent::VIEWZ_PREV) ); + PushOutput( AsUint(Transient::VIEWZ_R16F) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_TMP_SH1) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_TMP_SH1) ); + + AddDispatch( RELAX_DiffuseSpecularSh_PrePass, SumConstants(0, 1, 0, 10), NumThreads(16, 16), 1 ); + } + + for (int i = 0; i < 4; i++) + { + // The following passes are defined here: + // TEMPORAL_ACCUMULATION, + // TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS, + // TEMPORAL_ACCUMULATION_WITH_THRESHOLD_MIX, + // TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS_WITH_THRESHOLD_MIX + + PushPass("Temporal accumulation"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_TMP) ); + PushInput( AsUint(Transient::DIFF_ILLUM_TMP) ); + PushInput( AsUint(ResourceType::IN_MV) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Permanent::VIEWZ_CURR), 0, 1, AsUint(Permanent::VIEWZ_PREV) ); + PushInput( AsUint(Permanent::SPEC_ILLUM_RESPONSIVE_PREV) ); + PushInput( AsUint(Permanent::DIFF_ILLUM_RESPONSIVE_PREV) ); + PushInput( AsUint(Permanent::SPEC_ILLUM_PREV) ); + PushInput( AsUint(Permanent::DIFF_ILLUM_PREV) ); + PushInput( AsUint(Permanent::NORMAL_ROUGHNESS_PREV) ); + PushInput( AsUint(Permanent::VIEWZ_PREV), 0, 1, AsUint(Permanent::VIEWZ_CURR) ); + PushInput( AsUint(Permanent::REFLECTION_HIT_T_PREV), 0, 1, AsUint(Permanent::REFLECTION_HIT_T_CURR) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); + PushInput( AsUint(Permanent::MATERIAL_ID_PREV) ); + + // Optional inputs: + if (i == 0) + { + PushInput( AsUint(Transient::VIEWZ_R16F) ); // Bogus input that will not be fetched anyway + PushInput( AsUint(Transient::VIEWZ_R16F) ); // Bogus input that will not be fetched anyway + PushInput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); // Bogus input that will not be fetched anyway + } + if (i == 1) + { + PushInput( AsUint(ResourceType::IN_SPEC_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_DIFF_CONFIDENCE) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); // Bogus input that will not be fetched anyway + } + if (i == 2) + { + PushInput( AsUint(Transient::VIEWZ_R16F) ); // Bogus input that will not be fetched anyway + PushInput( AsUint(Transient::VIEWZ_R16F) ); // Bogus input that will not be fetched anyway + PushInput( AsUint(ResourceType::IN_DISOCCLUSION_THRESHOLD_MIX) ); + } + if (i == 3) + { + PushInput( AsUint(ResourceType::IN_SPEC_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_DIFF_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_DISOCCLUSION_THRESHOLD_MIX) ); + } + PushInput( AsUint(Transient::SPEC_ILLUM_TMP_SH1) ); + PushInput( AsUint(Transient::DIFF_ILLUM_TMP_SH1) ); + PushInput( AsUint(Permanent::SPEC_ILLUM_RESPONSIVE_PREV_SH1) ); + PushInput( AsUint(Permanent::DIFF_ILLUM_RESPONSIVE_PREV_SH1) ); + PushInput( AsUint(Permanent::SPEC_ILLUM_PREV_SH1) ); + PushInput( AsUint(Permanent::DIFF_ILLUM_PREV_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PONG) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushOutput( AsUint(Permanent::REFLECTION_HIT_T_CURR), 0, 1, AsUint(Permanent::REFLECTION_HIT_T_PREV) ); + PushOutput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushOutput( AsUint(Transient::SPEC_REPROJECTION_CONFIDENCE) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + AddDispatch(RELAX_DiffuseSpecularSh_TemporalAccumulation, SumConstants(0, 0, 0, 13), NumThreads(8, 8), 1); + } + } + + PushPass("History fix"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_PING) ); // Normal history + PushInput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PONG) ); // Responsive history + PushOutput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + AddDispatch( RELAX_DiffuseSpecularSh_HistoryFix, SumConstants(0, 0, 0, 8), NumThreads(8, 8), 1 ); + } + + PushPass("History clamping"); // with firefly after it + { + PushInput( AsUint(Transient::SPEC_ILLUM_PING) ); // Normal history + PushInput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PONG) ); // Responsive history + PushInput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_TMP) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_TMP) ); + PushOutput( AsUint(Permanent::SPEC_ILLUM_RESPONSIVE_PREV) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_RESPONSIVE_PREV) ); + PushOutput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); + PushOutput( AsUint(Permanent::SPEC_ILLUM_PREV_SH1) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_PREV_SH1) ); + PushOutput( AsUint(Permanent::SPEC_ILLUM_RESPONSIVE_PREV_SH1) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_RESPONSIVE_PREV_SH1) ); + + AddDispatch( RELAX_DiffuseSpecularSh_HistoryClamping, SumConstants(0, 0, 0, 4), NumThreads(8, 8), 1 ); + } + + PushPass("History clamping"); // without firefly after it + { + PushInput( AsUint(Transient::SPEC_ILLUM_PING) ); // Normal history + PushInput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PONG) ); // Responsive history + PushInput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + PushOutput( AsUint(Permanent::SPEC_ILLUM_PREV) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_PREV) ); + PushOutput( AsUint(Permanent::SPEC_ILLUM_RESPONSIVE_PREV) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_RESPONSIVE_PREV) ); + PushOutput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); + PushOutput( AsUint(Permanent::SPEC_ILLUM_PREV_SH1) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_PREV_SH1) ); + PushOutput( AsUint(Permanent::SPEC_ILLUM_RESPONSIVE_PREV_SH1) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_RESPONSIVE_PREV_SH1) ); + + AddDispatch( RELAX_DiffuseSpecularSh_HistoryClamping, SumConstants(0, 0, 0, 4), NumThreads(8, 8), 1 ); + } + + PushPass("Anti-firefly"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_TMP) ); + PushInput( AsUint(Transient::DIFF_ILLUM_TMP) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + + PushOutput( AsUint(Permanent::SPEC_ILLUM_PREV) ); + PushOutput( AsUint(Permanent::DIFF_ILLUM_PREV) ); + + AddDispatch( RELAX_DiffuseSpecularSh_AntiFirefly, SumConstants(0, 0, 0, 0), NumThreads(16, 16), 1 ); + } + + for (int i = 0; i < 2; i++) + { + bool withConfidenceInputs = (i == 1); + + // A-trous (first) + PushPass("A-trous (SMEM)"); + { + PushInput( AsUint(Permanent::SPEC_ILLUM_PREV) ); + PushInput( AsUint(Permanent::DIFF_ILLUM_PREV) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_REPROJECTION_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_SPEC_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_DIFF_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Permanent::SPEC_ILLUM_PREV_SH1) ); + PushInput( AsUint(Permanent::DIFF_ILLUM_PREV_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushOutput( AsUint(Permanent::NORMAL_ROUGHNESS_PREV) ); + PushOutput( AsUint(Permanent::MATERIAL_ID_PREV) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + + AddDispatch( RELAX_DiffuseSpecularSh_AtrousSmem, SumConstants(0, 0, 1, 19), NumThreads(8, 8), 1 ); + } + + // A-trous (odd) + PushPass("A-trous"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_REPROJECTION_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_SPEC_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_DIFF_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PONG) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + AddDispatchRepeated( RELAX_DiffuseSpecularSh_Atrous, SumConstants(0, 0, 0, 19), NumThreads(16, 16), 1, halfMaxPassNum ); + } + + // A-trous (even) + PushPass("A-trous"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_PONG) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_REPROJECTION_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_SPEC_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_DIFF_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + PushOutput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + + AddDispatchRepeated( RELAX_DiffuseSpecularSh_Atrous, SumConstants(0, 0, 0, 19), NumThreads(16, 16), 1, halfMaxPassNum ); + } + + // A-trous (odd, last) + PushPass("A-trous"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_REPROJECTION_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_SPEC_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_DIFF_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PING_SH1) ); + + PushOutput( AsUint(ResourceType::OUT_SPEC_SH0) ); + PushOutput( AsUint(ResourceType::OUT_DIFF_SH0) ); + PushOutput( AsUint(ResourceType::OUT_SPEC_SH1) ); + PushOutput( AsUint(ResourceType::OUT_DIFF_SH1) ); + + AddDispatch( RELAX_DiffuseSpecularSh_Atrous, SumConstants(0, 0, 0, 19), NumThreads(16, 16), 1 ); + } + + // A-trous (even, last) + PushPass("A-trous"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_PONG) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PONG) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_REPROJECTION_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_SPEC_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_DIFF_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + PushInput( AsUint(Transient::DIFF_ILLUM_PONG_SH1) ); + + PushOutput( AsUint(ResourceType::OUT_SPEC_SH0) ); + PushOutput( AsUint(ResourceType::OUT_DIFF_SH0) ); + PushOutput( AsUint(ResourceType::OUT_SPEC_SH1) ); + PushOutput( AsUint(ResourceType::OUT_DIFF_SH1) ); + + AddDispatch( RELAX_DiffuseSpecularSh_Atrous, SumConstants(0, 0, 0, 19), NumThreads(16, 16), 1 ); + } + } + + PushPass("Split screen"); + { + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + PushInput( AsUint(ResourceType::IN_SPEC_RADIANCE_HITDIST) ); + PushInput( AsUint(ResourceType::IN_DIFF_RADIANCE_HITDIST) ); + + PushOutput( AsUint( ResourceType::OUT_SPEC_RADIANCE_HITDIST ) ); + PushOutput( AsUint( ResourceType::OUT_DIFF_RADIANCE_HITDIST ) ); + + AddDispatch( RELAX_DiffuseSpecular_SplitScreen, SumConstants(0, 0, 0, 3), NumThreads(16, 16), 1 ); + } + + RELAX_ADD_VALIDATION_DISPATCH; + + #undef METHOD_NAME +} + +void nrd::DenoiserImpl::UpdateMethod_RelaxDiffuseSpecularSh(const MethodData& methodData) +{ + enum class Dispatch + { + HITDIST_RECONSTRUCTION_3x3, + HITDIST_RECONSTRUCTION_5x5, + PREPASS_AFTER_HITDIST_RECONSTRUCTION, + PREPASS, + TEMPORAL_ACCUMULATION, + TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS, + TEMPORAL_ACCUMULATION_WITH_THRESHOLD_MIX, + TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS_WITH_THRESHOLD_MIX, + HISTORY_FIX, + HISTORY_CLAMPING, + HISTORY_CLAMPING_NO_FIREFLY, + FIREFLY, + ATROUS_SMEM, + ATROUS_ODD, + ATROUS_EVEN, + ATROUS_ODD_LAST, + ATROUS_EVEN_LAST, + ATROUS_SMEM_WITH_CONFIDENCE_INPUTS, + ATROUS_ODD_WITH_CONFIDENCE_INPUTS, + ATROUS_EVEN_WITH_CONFIDENCE_INPUTS, + ATROUS_ODD_LAST_WITH_CONFIDENCE_INPUTS, + ATROUS_EVEN_LAST_WITH_CONFIDENCE_INPUTS, + SPLIT_SCREEN, + VALIDATION, + }; + + const RelaxDiffuseSpecularSettings& settings = methodData.settings.diffuseSpecularRelax; + + NRD_DECLARE_DIMS; + + float maxDiffuseLuminanceRelativeDifference = -ml::Log( ml::Saturate(settings.diffuseMinLuminanceWeight) ); + float maxSpecularLuminanceRelativeDifference = -ml::Log( ml::Saturate(settings.specularMinLuminanceWeight) ); + + float disocclusionThreshold = m_CommonSettings.disocclusionThreshold + (1.0f + m_JitterDelta) / float(rectH); + float disocclusionThresholdOrtho = disocclusionThreshold; + float disocclusionThresholdAlternate = m_CommonSettings.disocclusionThresholdAlternate + (1.0f + m_JitterDelta) / float(rectH); + float disocclusionThresholdAlternateOrtho = disocclusionThresholdAlternate; + float depthThresholdOrtho = settings.depthThreshold; + + float tanHalfFov = 1.0f / m_ViewToClip.a00; + float aspect = m_ViewToClip.a00 / m_ViewToClip.a11; + ml::float3 frustumRight = m_WorldToView.GetRow0().To3d() * tanHalfFov; + ml::float3 frustumUp = m_WorldToView.GetRow1().To3d() * tanHalfFov * aspect; + ml::float3 frustumForward = RELAX_GetFrustumForward(m_ViewToWorld, m_Frustum); + + float prevTanHalfFov = 1.0f / m_ViewToClipPrev.a00; + float prevAspect = m_ViewToClipPrev.a00 / m_ViewToClipPrev.a11; + ml::float3 prevFrustumRight = m_WorldToViewPrev.GetRow0().To3d() * prevTanHalfFov; + ml::float3 prevFrustumUp = m_WorldToViewPrev.GetRow1().To3d() * prevTanHalfFov * prevAspect; + ml::float3 prevFrustumForward = RELAX_GetFrustumForward(m_ViewToWorldPrev, m_FrustumPrev); + bool isCameraStatic = RELAX_IsCameraStatic(ml::float3(m_CameraDelta.x, m_CameraDelta.y, m_CameraDelta.z), frustumRight, frustumUp, frustumForward, prevFrustumRight, prevFrustumUp, prevFrustumForward); + + bool enableHitDistanceReconstruction = settings.hitDistanceReconstructionMode != HitDistanceReconstructionMode::OFF && settings.checkerboardMode == CheckerboardMode::OFF; + + // Checkerboard logic + uint32_t specularCheckerboard = 2; + uint32_t diffuseCheckerboard = 2; + + switch (settings.checkerboardMode) + { + case CheckerboardMode::BLACK: + diffuseCheckerboard = 0; + specularCheckerboard = 1; + break; + case CheckerboardMode::WHITE: + diffuseCheckerboard = 1; + specularCheckerboard = 0; + break; + default: + break; + } + + // SPLIT_SCREEN (passthrough) + if (m_CommonSettings.splitScreen >= 1.0f) + { + Constant* data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + AddFloat(data, m_CommonSettings.splitScreen); + AddUint(data, diffuseCheckerboard); + AddUint(data, specularCheckerboard); + ValidateConstants(data); + + return; + } + + // HITDIST_RECONSTRUCTION + if (enableHitDistanceReconstruction) + { + bool is3x3 = settings.hitDistanceReconstructionMode == HitDistanceReconstructionMode::AREA_3X3; + Constant* data = PushDispatch(methodData, is3x3 ? AsUint(Dispatch::HITDIST_RECONSTRUCTION_3x3) : AsUint(Dispatch::HITDIST_RECONSTRUCTION_5x5)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + ValidateConstants(data); + } + + // PREPASS + Constant* data = PushDispatch(methodData, AsUint(enableHitDistanceReconstruction ? Dispatch::PREPASS_AFTER_HITDIST_RECONSTRUCTION : Dispatch::PREPASS)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + AddFloat4(data, m_Rotator_PrePass); + AddUint(data, diffuseCheckerboard); + AddUint(data, specularCheckerboard); + AddFloat(data, settings.diffusePrepassBlurRadius); + AddFloat(data, settings.specularPrepassBlurRadius); + AddFloat(data, 1.0f); + AddFloat(data, m_IsOrtho == 0 ? settings.depthThreshold : depthThresholdOrtho); + AddFloat(data, settings.diffuseLobeAngleFraction); + AddFloat(data, settings.specularLobeAngleFraction); + AddFloat(data, settings.specularLobeAngleSlack); + AddFloat(data, settings.roughnessFraction); + ValidateConstants(data); + + // TEMPORAL_ACCUMULATION + if (!m_CommonSettings.isDisocclusionThresholdMixAvailable) + { + data = PushDispatch( + methodData, + AsUint(m_CommonSettings.isHistoryConfidenceAvailable ? + Dispatch::TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS : + Dispatch::TEMPORAL_ACCUMULATION)); + } + else + { + data = PushDispatch( + methodData, + AsUint(m_CommonSettings.isHistoryConfidenceAvailable ? + Dispatch::TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS_WITH_THRESHOLD_MIX : + Dispatch::TEMPORAL_ACCUMULATION_WITH_THRESHOLD_MIX)); + } + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + AddFloat(data, (float)settings.specularMaxAccumulatedFrameNum); + AddFloat(data, (float)settings.specularMaxFastAccumulatedFrameNum); + AddFloat(data, (float)settings.diffuseMaxAccumulatedFrameNum); + AddFloat(data, (float)settings.diffuseMaxFastAccumulatedFrameNum); + AddUint(data, diffuseCheckerboard); + AddUint(data, specularCheckerboard); + AddFloat(data, m_IsOrtho == 0 ? disocclusionThreshold : disocclusionThresholdOrtho); + AddFloat(data, m_IsOrtho == 0 ? disocclusionThresholdAlternate : disocclusionThresholdAlternateOrtho); + AddFloat(data, settings.roughnessFraction); + AddFloat(data, settings.specularVarianceBoost); + AddUint(data, settings.enableReprojectionTestSkippingWithoutMotion && isCameraStatic); + AddUint(data, m_CommonSettings.isHistoryConfidenceAvailable ? 1 : 0); + AddUint(data, m_CommonSettings.isDisocclusionThresholdMixAvailable ? 1 : 0); + ValidateConstants(data); + + // HISTORY_FIX + data = PushDispatch(methodData, AsUint(Dispatch::HISTORY_FIX)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + AddFloat(data, m_IsOrtho == 0 ? settings.depthThreshold : depthThresholdOrtho); + AddFloat(data, settings.historyFixEdgeStoppingNormalPower); + AddFloat(data, settings.historyFixStrideBetweenSamples); + AddFloat(data, float(settings.historyFixFrameNum)); + AddFloat(data, settings.specularLobeAngleFraction); + AddFloat(data, ml::DegToRad(settings.specularLobeAngleSlack)); + AddFloat(data, settings.roughnessEdgeStoppingRelaxation); + AddFloat(data, settings.normalEdgeStoppingRelaxation); + ValidateConstants(data); + + if (settings.enableAntiFirefly) + { + // HISTORY_CLAMPING + data = PushDispatch(methodData, AsUint(Dispatch::HISTORY_CLAMPING)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + AddFloat(data, settings.historyClampingColorBoxSigmaScale); + AddFloat(data, float(settings.historyFixFrameNum)); + AddUint(data, settings.specularMaxFastAccumulatedFrameNum < settings.specularMaxAccumulatedFrameNum ? 1 : 0); + AddUint(data, settings.diffuseMaxFastAccumulatedFrameNum < settings.diffuseMaxAccumulatedFrameNum ? 1 : 0); + ValidateConstants(data); + + // FIREFLY + data = PushDispatch(methodData, AsUint(Dispatch::FIREFLY)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + ValidateConstants(data); + } + else + { + // HISTORY_CLAMPING (without firefly) + data = PushDispatch(methodData, AsUint(Dispatch::HISTORY_CLAMPING_NO_FIREFLY)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + AddFloat(data, settings.historyClampingColorBoxSigmaScale); + AddFloat(data, float(settings.historyFixFrameNum)); + AddUint(data, settings.specularMaxFastAccumulatedFrameNum < settings.specularMaxAccumulatedFrameNum ? 1 : 0); + AddUint(data, settings.diffuseMaxFastAccumulatedFrameNum < settings.diffuseMaxAccumulatedFrameNum ? 1 : 0); + ValidateConstants(data); + } + + // A-TROUS + uint32_t iterationNum = ml::Clamp(settings.atrousIterationNum, 2u, RELAX_MAX_ATROUS_PASS_NUM); + for (uint32_t i = 0; i < iterationNum; i++) + { + Dispatch dispatch; + if (!m_CommonSettings.isHistoryConfidenceAvailable) + { + if (i == 0) + dispatch = Dispatch::ATROUS_SMEM; + else if (i == iterationNum - 1) + dispatch = (i % 2 == 0) ? Dispatch::ATROUS_EVEN_LAST : Dispatch::ATROUS_ODD_LAST; + else + dispatch = (i % 2 == 0) ? Dispatch::ATROUS_EVEN : Dispatch::ATROUS_ODD; + } + else + { + if (i == 0) + dispatch = Dispatch::ATROUS_SMEM_WITH_CONFIDENCE_INPUTS; + else if (i == iterationNum - 1) + dispatch = (i % 2 == 0) ? Dispatch::ATROUS_EVEN_LAST_WITH_CONFIDENCE_INPUTS : Dispatch::ATROUS_ODD_LAST_WITH_CONFIDENCE_INPUTS; + else + dispatch = (i % 2 == 0) ? Dispatch::ATROUS_EVEN_WITH_CONFIDENCE_INPUTS : Dispatch::ATROUS_ODD_WITH_CONFIDENCE_INPUTS; + } + + data = PushDispatch(methodData, AsUint(dispatch)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + + if (i == 0) + { + AddUint2(data, screenW, screenH); // For Atrous_shmem + AddUint(data, settings.spatialVarianceEstimationHistoryThreshold); + } + + AddFloat(data, settings.specularPhiLuminance); + AddFloat(data, settings.diffusePhiLuminance); + AddFloat(data, maxDiffuseLuminanceRelativeDifference); + AddFloat(data, maxSpecularLuminanceRelativeDifference); + AddFloat(data, m_IsOrtho == 0 ? settings.depthThreshold : depthThresholdOrtho); + AddFloat(data, settings.diffuseLobeAngleFraction); + AddFloat(data, settings.roughnessFraction); + AddFloat(data, settings.specularLobeAngleFraction); + AddFloat(data, ml::DegToRad(settings.specularLobeAngleSlack)); + AddUint(data, 1 << i); + AddUint(data, settings.enableRoughnessEdgeStopping); + AddFloat(data, settings.roughnessEdgeStoppingRelaxation); + AddFloat(data, settings.normalEdgeStoppingRelaxation); + AddFloat(data, settings.luminanceEdgeStoppingRelaxation); + AddUint(data, m_CommonSettings.isHistoryConfidenceAvailable ? 1 : 0); + AddFloat(data, settings.confidenceDrivenRelaxationMultiplier); + AddFloat(data, settings.confidenceDrivenLuminanceEdgeStoppingRelaxation); + AddFloat(data, settings.confidenceDrivenNormalEdgeStoppingRelaxation); + if (i != 0) + { + AddUint(data, (i == iterationNum - 1) ? 1 : 0); + } + ValidateConstants(data); + } + + // SPLIT_SCREEN + if (m_CommonSettings.splitScreen > 0.0f) + { + data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + AddFloat(data, m_CommonSettings.splitScreen); + AddUint(data, diffuseCheckerboard); + AddUint(data, specularCheckerboard); + ValidateConstants(data); + } + + // VALIDATION + if (m_CommonSettings.enableValidation) + { + data = PushDispatch(methodData, AsUint(Dispatch::VALIDATION)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + AddFloat4x4(data, m_WorldToClipPrev); + AddFloat2(data, m_CommonSettings.cameraJitter[0], m_CommonSettings.cameraJitter[1]); + AddFloat(data, (float)ml::Max(settings.diffuseMaxAccumulatedFrameNum, settings.specularMaxAccumulatedFrameNum)); + ValidateConstants(data); + } +} diff --git a/Source/Methods/Relax_SpecularSh.hpp b/Source/Methods/Relax_SpecularSh.hpp new file mode 100644 index 00000000..788979e6 --- /dev/null +++ b/Source/Methods/Relax_SpecularSh.hpp @@ -0,0 +1,603 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +void nrd::DenoiserImpl::AddMethod_RelaxSpecularSh(MethodData& methodData) +{ + #define METHOD_NAME RELAX_Specular + + methodData.settings.specularRelax = RelaxSpecularSettings(); + methodData.settingsSize = sizeof(methodData.settings.specularRelax); + + uint16_t w = methodData.desc.fullResolutionWidth; + uint16_t h = methodData.desc.fullResolutionHeight; + + enum class Permanent + { + SPEC_ILLUM_PREV = PERMANENT_POOL_START, + SPEC_ILLUM_PREV_SH1, + SPEC_ILLUM_RESPONSIVE_PREV, + SPEC_ILLUM_RESPONSIVE_PREV_SH1, + REFLECTION_HIT_T_CURR, + REFLECTION_HIT_T_PREV, + HISTORY_LENGTH_CURR, + HISTORY_LENGTH_PREV, + NORMAL_ROUGHNESS_PREV, + MATERIAL_ID_PREV, + VIEWZ_CURR, + VIEWZ_PREV + }; + + m_PermanentPool.push_back({ Format::RGBA16_SFLOAT, w, h, 1 }); + m_PermanentPool.push_back({ Format::RGBA16_SFLOAT, w, h, 1 }); + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::R16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::R16_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::R8_UNORM, w, h, 1} ); + m_PermanentPool.push_back( {Format::R8_UNORM, w, h, 1} ); + m_PermanentPool.push_back( {Format::RGBA8_UNORM, w, h, 1} ); + m_PermanentPool.push_back( {Format::R8_UNORM, w, h, 1} ); + m_PermanentPool.push_back( {Format::R32_SFLOAT, w, h, 1} ); + m_PermanentPool.push_back( {Format::R32_SFLOAT, w, h, 1} ); + + enum class Transient + { + SPEC_ILLUM_PING = TRANSIENT_POOL_START, + SPEC_ILLUM_PING_SH1, + SPEC_ILLUM_PONG, + SPEC_ILLUM_PONG_SH1, + SPEC_ILLUM_TMP, + SPEC_ILLUM_TMP_SH1, + SPEC_REPROJECTION_CONFIDENCE, + VIEWZ_R16F + }; + + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::RGBA16_SFLOAT, w, h, 1} ); + m_TransientPool.push_back( {Format::R8_UNORM, w, h, 1} ); + m_TransientPool.push_back( {Format::R16_SFLOAT, w, h, 1} ); + + RELAX_SET_SHARED_CONSTANTS; + + const uint32_t halfMaxPassNum = (RELAX_MAX_ATROUS_PASS_NUM - 2 + 1) / 2; + + PushPass("Hit distance reconstruction 3x3"); // 3x3 + { + PushInput( AsUint(ResourceType::IN_SPEC_SH0) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PING) ); + + AddDispatch( RELAX_Specular_HitDistReconstruction, SumConstants(0, 0, 0, 0), NumThreads(8, 8), 1 ); + } + + PushPass("Hit distance reconstruction 5x5"); // 5x5 + { + PushInput( AsUint(ResourceType::IN_SPEC_SH0) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PING) ); + + AddDispatch( RELAX_Specular_HitDistReconstruction_5x5, SumConstants(0, 0, 0, 0), NumThreads(8, 8), 1 ); + } + + PushPass("Pre-pass"); // After hit distance reconstruction + { + // Does preblur (if enabled), checkerboard reconstruction (if enabled) and generates FP16 ViewZ texture + PushInput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + PushInput( AsUint(ResourceType::IN_SPEC_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_TMP) ); + PushOutput( AsUint(Permanent::VIEWZ_CURR), 0, 1, AsUint(Permanent::VIEWZ_PREV) ); + PushOutput( AsUint(Transient::VIEWZ_R16F) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_TMP_SH1) ); + + AddDispatch( RELAX_SpecularSh_PrePass, SumConstants(0, 1, 0, 7), NumThreads(16, 16), 1 ); + } + + PushPass("Pre-pass"); // Without hit distance reconstruction + { + // Does preblur (if enabled), checkerboard reconstruction (if enabled) and generates FP16 ViewZ texture + PushInput( AsUint(ResourceType::IN_SPEC_SH0) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + PushInput( AsUint(ResourceType::IN_SPEC_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_TMP) ); + PushOutput( AsUint(Permanent::VIEWZ_CURR), 0, 1, AsUint(Permanent::VIEWZ_PREV)); + PushOutput( AsUint(Transient::VIEWZ_R16F) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_TMP_SH1) ); + + AddDispatch( RELAX_SpecularSh_PrePass, SumConstants(0, 1, 0, 7), NumThreads(16, 16), 1 ); + } + + for (int i = 0; i < 4; i++) + { + // The following passes are defined here: + // REPROJECT, + // REPROJECT_WITH_CONFIDENCE_INPUTS, + // REPROJECT_WITH_THRESHOLD_MIX, + // REPROJECT_WITH_CONFIDENCE_INPUTS_WITH_THRESHOLD_MIX + + PushPass("Temporal accumulation"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_TMP) ); + PushInput( AsUint(ResourceType::IN_MV) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Permanent::VIEWZ_CURR), 0, 1, AsUint(Permanent::VIEWZ_PREV) ); + PushInput( AsUint(Permanent::SPEC_ILLUM_RESPONSIVE_PREV) ); + PushInput( AsUint(Permanent::SPEC_ILLUM_PREV) ); + PushInput( AsUint(Permanent::NORMAL_ROUGHNESS_PREV) ); + PushInput( AsUint(Permanent::VIEWZ_PREV), 0, 1, AsUint(Permanent::VIEWZ_CURR) ); + PushInput( AsUint(Permanent::REFLECTION_HIT_T_PREV), 0, 1, AsUint(Permanent::REFLECTION_HIT_T_CURR) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); + PushInput( AsUint(Permanent::MATERIAL_ID_PREV) ); + // Optional inputs: + if (i == 0) + { + PushInput( AsUint(Transient::VIEWZ_R16F) ); // Bogus input that will not be fetched anyway + PushInput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); // Bogus input that will not be fetched anyway + } + if (i == 1) + { + PushInput( AsUint(ResourceType::IN_SPEC_CONFIDENCE) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); // Bogus input that will not be fetched anyway + } + if (i == 2) + { + PushInput( AsUint(Transient::VIEWZ_R16F) ); // Bogus input that will not be fetched anyway + PushInput( AsUint(ResourceType::IN_DISOCCLUSION_THRESHOLD_MIX) ); + } + if (i == 3) + { + PushInput( AsUint(ResourceType::IN_SPEC_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_DISOCCLUSION_THRESHOLD_MIX) ); + } + PushInput( AsUint(Transient::SPEC_ILLUM_TMP_SH1) ); + PushInput( AsUint(Permanent::SPEC_ILLUM_RESPONSIVE_PREV_SH1) ); + PushInput( AsUint(Permanent::SPEC_ILLUM_PREV_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PONG) ); + PushOutput( AsUint(Permanent::REFLECTION_HIT_T_CURR), 0, 1, AsUint(Permanent::REFLECTION_HIT_T_PREV) ); + PushOutput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushOutput( AsUint(Transient::SPEC_REPROJECTION_CONFIDENCE) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + + AddDispatch( RELAX_SpecularSh_TemporalAccumulation, SumConstants(0, 0, 0, 10), NumThreads(8, 8), 1 ); + } + } + + PushPass("History fix"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PONG) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + + AddDispatch( RELAX_SpecularSh_HistoryFix, SumConstants(0, 0, 0, 8), NumThreads(8, 8), 1 ); + } + + PushPass("History clamping"); // with firefly after it + { + PushInput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PONG) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_TMP) ); + PushOutput( AsUint(Permanent::SPEC_ILLUM_RESPONSIVE_PREV) ); + PushOutput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); + PushOutput( AsUint(Permanent::SPEC_ILLUM_PREV_SH1) ); + PushOutput( AsUint(Permanent::SPEC_ILLUM_RESPONSIVE_PREV_SH1) ); + + AddDispatch( RELAX_SpecularSh_HistoryClamping, SumConstants(0, 0, 0, 3), NumThreads(8, 8), 1 ); + } + + PushPass("History clamping"); // without firefly after it + { + PushInput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PONG) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + + PushOutput( AsUint(Permanent::SPEC_ILLUM_PREV) ); + PushOutput( AsUint(Permanent::SPEC_ILLUM_RESPONSIVE_PREV) ); + PushOutput( AsUint(Permanent::HISTORY_LENGTH_PREV) ); + PushOutput( AsUint(Permanent::SPEC_ILLUM_PREV_SH1) ); + PushOutput( AsUint(Permanent::SPEC_ILLUM_RESPONSIVE_PREV_SH1) ); + + AddDispatch( RELAX_SpecularSh_HistoryClamping, SumConstants(0, 0, 0, 3), NumThreads(8, 8), 1 ); + } + + PushPass("Anti-firefly"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_TMP) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + + PushOutput( AsUint(Permanent::SPEC_ILLUM_PREV) ); + + AddDispatch( RELAX_SpecularSh_AntiFirefly, SumConstants(0, 0, 0, 0), NumThreads(16, 16), 1 ); + } + for (int i = 0; i < 2; i++) + { + bool withConfidenceInputs = (i == 1); + + // A-trous (first) + PushPass("A-trous (SMEM)"); + { + PushInput( AsUint(Permanent::SPEC_ILLUM_PREV) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_REPROJECTION_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_SPEC_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Permanent::SPEC_ILLUM_PREV_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushOutput( AsUint(Permanent::NORMAL_ROUGHNESS_PREV) ); + PushOutput( AsUint(Permanent::MATERIAL_ID_PREV) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + + AddDispatch( RELAX_SpecularSh_AtrousSmem, SumConstants(0, 0, 1, 17), NumThreads(8, 8), 1 ); + } + + // A-trous (odd) + PushPass("A-trous"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_REPROJECTION_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_SPEC_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PONG) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + + AddDispatchRepeated( RELAX_SpecularSh_Atrous, SumConstants(0, 0, 0, 17), NumThreads(16, 16), 1, halfMaxPassNum ); + } + + // A-trous (even) + PushPass("A-trous"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_PONG) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_REPROJECTION_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_SPEC_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + + PushOutput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushOutput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + + AddDispatchRepeated( RELAX_SpecularSh_Atrous, SumConstants(0, 0, 0, 17), NumThreads(16, 16), 1, halfMaxPassNum ); + } + + // A-trous (odd, last) + PushPass("A-trous"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_PING) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_REPROJECTION_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_SPEC_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PING_SH1) ); + + PushOutput( AsUint(ResourceType::OUT_SPEC_SH0) ); + PushOutput( AsUint(ResourceType::OUT_SPEC_SH1) ); + + AddDispatch( RELAX_SpecularSh_Atrous, SumConstants(0, 0, 0, 17), NumThreads(16, 16), 1 ); + } + + // A-trous (even, last) + PushPass("A-trous"); + { + PushInput( AsUint(Transient::SPEC_ILLUM_PONG) ); + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); + PushInput( AsUint(Transient::SPEC_REPROJECTION_CONFIDENCE) ); + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); + PushInput( AsUint(Transient::VIEWZ_R16F) ); + PushInput( withConfidenceInputs ? AsUint(ResourceType::IN_SPEC_CONFIDENCE) : AsUint(Transient::VIEWZ_R16F) ); + PushInput( AsUint(Transient::SPEC_ILLUM_PONG_SH1) ); + + PushOutput( AsUint(ResourceType::OUT_SPEC_SH0) ); + PushOutput( AsUint(ResourceType::OUT_SPEC_SH1) ); + + AddDispatch( RELAX_SpecularSh_Atrous, SumConstants(0, 0, 0, 17), NumThreads(16, 16), 1 ); + } + } + + PushPass("Split screen"); + { + PushInput( AsUint(ResourceType::IN_VIEWZ) ); + PushInput( AsUint(ResourceType::IN_SPEC_RADIANCE_HITDIST)); + + PushOutput( AsUint( ResourceType::OUT_SPEC_RADIANCE_HITDIST ) ); + + AddDispatch( RELAX_Specular_SplitScreen, SumConstants(0, 0, 0, 2), NumThreads(16, 16), 1 ); + } + + RELAX_ADD_VALIDATION_DISPATCH; + + #undef METHOD_NAME +} + +void nrd::DenoiserImpl::UpdateMethod_RelaxSpecularSh(const MethodData& methodData) +{ + enum class Dispatch + { + HITDIST_RECONSTRUCTION_3x3, + HITDIST_RECONSTRUCTION_5x5, + PREPASS_AFTER_HITDIST_RECONSTRUCTION, + PREPASS, + TEMPORAL_ACCUMULATION, + TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS, + TEMPORAL_ACCUMULATION_WITH_THRESHOLD_MIX, + TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS_WITH_THRESHOLD_MIX, + HISTORY_FIX, + HISTORY_CLAMPING, + HISTORY_CLAMPING_NO_FIREFLY, + FIREFLY, + ATROUS_SMEM, + ATROUS_ODD, + ATROUS_EVEN, + ATROUS_ODD_LAST, + ATROUS_EVEN_LAST, + ATROUS_SMEM_WITH_CONFIDENCE_INPUTS, + ATROUS_ODD_WITH_CONFIDENCE_INPUTS, + ATROUS_EVEN_WITH_CONFIDENCE_INPUTS, + ATROUS_ODD_LAST_WITH_CONFIDENCE_INPUTS, + ATROUS_EVEN_LAST_WITH_CONFIDENCE_INPUTS, + SPLIT_SCREEN, + VALIDATION, + }; + + const RelaxSpecularSettings& settings = methodData.settings.specularRelax; + + NRD_DECLARE_DIMS; + + float maxLuminanceRelativeDifference = -ml::Log(ml::Saturate(settings.minLuminanceWeight)); + + float disocclusionThreshold = m_CommonSettings.disocclusionThreshold + (1.0f + m_JitterDelta) / float(rectH); + float disocclusionThresholdOrtho = disocclusionThreshold; + float disocclusionThresholdAlternate = m_CommonSettings.disocclusionThresholdAlternate + (1.0f + m_JitterDelta) / float(rectH); + float disocclusionThresholdAlternateOrtho = disocclusionThresholdAlternate; + float depthThresholdOrtho = settings.depthThreshold; + + float tanHalfFov = 1.0f / m_ViewToClip.a00; + float aspect = m_ViewToClip.a00 / m_ViewToClip.a11; + ml::float3 frustumRight = m_WorldToView.GetRow0().To3d() * tanHalfFov; + ml::float3 frustumUp = m_WorldToView.GetRow1().To3d() * tanHalfFov * aspect; + ml::float3 frustumForward = RELAX_GetFrustumForward(m_ViewToWorld, m_Frustum); + + float prevTanHalfFov = 1.0f / m_ViewToClipPrev.a00; + float prevAspect = m_ViewToClipPrev.a00 / m_ViewToClipPrev.a11; + ml::float3 prevFrustumRight = m_WorldToViewPrev.GetRow0().To3d() * prevTanHalfFov; + ml::float3 prevFrustumUp = m_WorldToViewPrev.GetRow1().To3d() * prevTanHalfFov * prevAspect; + ml::float3 prevFrustumForward = RELAX_GetFrustumForward(m_ViewToWorldPrev, m_FrustumPrev); + bool isCameraStatic = RELAX_IsCameraStatic(ml::float3(m_CameraDelta.x, m_CameraDelta.y, m_CameraDelta.z), frustumRight, frustumUp, frustumForward, prevFrustumRight, prevFrustumUp, prevFrustumForward); + + bool enableHitDistanceReconstruction = settings.hitDistanceReconstructionMode != HitDistanceReconstructionMode::OFF && settings.checkerboardMode == CheckerboardMode::OFF; + + // Checkerboard logic + uint32_t specularCheckerboard = 2; + + switch (settings.checkerboardMode) + { + case CheckerboardMode::BLACK: + specularCheckerboard = 0; + break; + case CheckerboardMode::WHITE: + specularCheckerboard = 1; + break; + default: + break; + } + + // SPLIT_SCREEN (passthrough) + if (m_CommonSettings.splitScreen >= 1.0f) + { + Constant* data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_SPECULAR); + AddFloat(data, m_CommonSettings.splitScreen); + AddUint(data, specularCheckerboard); + ValidateConstants(data); + + return; + } + + // HITDIST_RECONSTRUCTION + if (enableHitDistanceReconstruction) + { + bool is3x3 = settings.hitDistanceReconstructionMode == HitDistanceReconstructionMode::AREA_3X3; + Constant* data = PushDispatch(methodData, is3x3 ? AsUint(Dispatch::HITDIST_RECONSTRUCTION_3x3) : AsUint(Dispatch::HITDIST_RECONSTRUCTION_5x5)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_SPECULAR); + ValidateConstants(data); + } + + // PREPASS + Constant* data = PushDispatch(methodData, AsUint(enableHitDistanceReconstruction ? Dispatch::PREPASS_AFTER_HITDIST_RECONSTRUCTION : Dispatch::PREPASS)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_SPECULAR); + AddFloat4(data, m_Rotator_PrePass); + AddUint(data, specularCheckerboard); + AddFloat(data, settings.prepassBlurRadius); + AddFloat(data, 1.0f); + AddFloat(data, m_IsOrtho == 0 ? settings.depthThreshold : depthThresholdOrtho); + AddFloat(data, settings.specularLobeAngleFraction); + AddFloat(data, settings.specularLobeAngleSlack); + AddFloat(data, settings.roughnessFraction); + ValidateConstants(data); + + // TEMPORAL_ACCUMULATION + if (!m_CommonSettings.isDisocclusionThresholdMixAvailable) + { + data = PushDispatch( + methodData, + AsUint(m_CommonSettings.isHistoryConfidenceAvailable ? + Dispatch::TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS : + Dispatch::TEMPORAL_ACCUMULATION)); + } + else + { + data = PushDispatch( + methodData, + AsUint(m_CommonSettings.isHistoryConfidenceAvailable ? + Dispatch::TEMPORAL_ACCUMULATION_WITH_CONFIDENCE_INPUTS_WITH_THRESHOLD_MIX : + Dispatch::TEMPORAL_ACCUMULATION_WITH_THRESHOLD_MIX)); + } + AddSharedConstants_Relax(methodData, data, Method::RELAX_SPECULAR); + AddFloat(data, (float)settings.specularMaxAccumulatedFrameNum); + AddFloat(data, (float)settings.specularMaxFastAccumulatedFrameNum); + AddUint(data, specularCheckerboard); + AddFloat(data, m_IsOrtho == 0 ? disocclusionThreshold : disocclusionThresholdOrtho); + AddFloat(data, m_IsOrtho == 0 ? disocclusionThresholdAlternate : disocclusionThresholdAlternateOrtho); + AddFloat(data, settings.roughnessFraction); + AddFloat(data, settings.specularVarianceBoost); + AddUint(data, settings.enableReprojectionTestSkippingWithoutMotion && isCameraStatic); + AddUint(data, m_CommonSettings.isHistoryConfidenceAvailable ? 1 : 0); + AddUint(data, m_CommonSettings.isDisocclusionThresholdMixAvailable ? 1 : 0); + ValidateConstants(data); + + // HISTORY_FIX + data = PushDispatch(methodData, AsUint(Dispatch::HISTORY_FIX)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_SPECULAR); + AddFloat(data, m_IsOrtho == 0 ? settings.depthThreshold : depthThresholdOrtho); + AddFloat(data, settings.historyFixEdgeStoppingNormalPower); + AddFloat(data, settings.historyFixStrideBetweenSamples); + AddFloat(data, float(settings.historyFixFrameNum)); + AddFloat(data, settings.specularLobeAngleFraction); + AddFloat(data, ml::DegToRad(settings.specularLobeAngleSlack)); + AddFloat(data, settings.roughnessEdgeStoppingRelaxation); + AddFloat(data, settings.normalEdgeStoppingRelaxation); + ValidateConstants(data); + + if (settings.enableAntiFirefly) + { + // HISTORY_CLAMPING + data = PushDispatch(methodData, AsUint(Dispatch::HISTORY_CLAMPING)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_SPECULAR); + AddFloat(data, settings.historyClampingColorBoxSigmaScale); + AddFloat(data, float(settings.historyFixFrameNum)); + AddUint(data, settings.specularMaxFastAccumulatedFrameNum < settings.specularMaxAccumulatedFrameNum ? 1 : 0); + ValidateConstants(data); + + // FIREFLY + data = PushDispatch(methodData, AsUint(Dispatch::FIREFLY)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_SPECULAR); + ValidateConstants(data); + } + else + { + // HISTORY_CLAMPING (without firefly) + data = PushDispatch(methodData, AsUint(Dispatch::HISTORY_CLAMPING_NO_FIREFLY)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_SPECULAR); + AddFloat(data, settings.historyClampingColorBoxSigmaScale); + AddFloat(data, float(settings.historyFixFrameNum)); + AddUint(data, settings.specularMaxFastAccumulatedFrameNum < settings.specularMaxAccumulatedFrameNum ? 1 : 0); + ValidateConstants(data); + } + + // A-TROUS + uint32_t iterationNum = ml::Clamp(settings.atrousIterationNum, 2u, RELAX_MAX_ATROUS_PASS_NUM); + for (uint32_t i = 0; i < iterationNum; i++) + { + Dispatch dispatch; + if (!m_CommonSettings.isHistoryConfidenceAvailable) + { + if (i == 0) + dispatch = Dispatch::ATROUS_SMEM; + else if (i == iterationNum - 1) + dispatch = (i % 2 == 0) ? Dispatch::ATROUS_EVEN_LAST : Dispatch::ATROUS_ODD_LAST; + else + dispatch = (i % 2 == 0) ? Dispatch::ATROUS_EVEN : Dispatch::ATROUS_ODD; + } + else + { + if (i == 0) + dispatch = Dispatch::ATROUS_SMEM_WITH_CONFIDENCE_INPUTS; + else if (i == iterationNum - 1) + dispatch = (i % 2 == 0) ? Dispatch::ATROUS_EVEN_LAST_WITH_CONFIDENCE_INPUTS : Dispatch::ATROUS_ODD_LAST_WITH_CONFIDENCE_INPUTS; + else + dispatch = (i % 2 == 0) ? Dispatch::ATROUS_EVEN_WITH_CONFIDENCE_INPUTS : Dispatch::ATROUS_ODD_WITH_CONFIDENCE_INPUTS; + } + + data = PushDispatch(methodData, AsUint(dispatch)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_SPECULAR); + + if (i == 0) + { + AddUint2(data, screenW, screenH); // For Atrous_shmem + AddUint(data, settings.spatialVarianceEstimationHistoryThreshold); + } + + AddFloat(data, settings.specularPhiLuminance); + AddFloat(data, maxLuminanceRelativeDifference); + AddFloat(data, m_IsOrtho == 0 ? settings.depthThreshold : depthThresholdOrtho); + AddFloat(data, settings.diffuseLobeAngleFraction); + AddFloat(data, settings.roughnessFraction); + AddFloat(data, settings.specularLobeAngleFraction); + AddFloat(data, ml::DegToRad(settings.specularLobeAngleSlack)); + AddUint(data, 1 << i); + AddUint(data, settings.enableRoughnessEdgeStopping); + AddFloat(data, settings.roughnessEdgeStoppingRelaxation); + AddFloat(data, settings.normalEdgeStoppingRelaxation); + AddFloat(data, settings.luminanceEdgeStoppingRelaxation); + AddUint(data, m_CommonSettings.isHistoryConfidenceAvailable ? 1 : 0); + AddFloat(data, settings.confidenceDrivenRelaxationMultiplier); + AddFloat(data, settings.confidenceDrivenLuminanceEdgeStoppingRelaxation); + AddFloat(data, settings.confidenceDrivenNormalEdgeStoppingRelaxation); + if (i != 0) + { + AddUint(data, (i == iterationNum - 1) ? 1 : 0); + } + ValidateConstants(data); + } + + // SPLIT_SCREEN + if (m_CommonSettings.splitScreen > 0.0f) + { + data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_SPECULAR); + AddFloat(data, m_CommonSettings.splitScreen); + AddUint(data, specularCheckerboard); + ValidateConstants(data); + } + + // VALIDATION + if (m_CommonSettings.enableValidation) + { + data = PushDispatch(methodData, AsUint(Dispatch::VALIDATION)); + AddSharedConstants_Relax(methodData, data, Method::RELAX_DIFFUSE_SPECULAR); + AddFloat4x4(data, m_WorldToClipPrev); + AddFloat2(data, m_CommonSettings.cameraJitter[0], m_CommonSettings.cameraJitter[1]); + AddFloat(data, (float)settings.specularMaxAccumulatedFrameNum); + ValidateConstants(data); + } +} diff --git a/Source/Methods/Sigma_Shadow.hpp b/Source/Methods/Sigma_Shadow.hpp index 9fe30793..99792681 100644 --- a/Source/Methods/Sigma_Shadow.hpp +++ b/Source/Methods/Sigma_Shadow.hpp @@ -8,23 +8,6 @@ distribution of this software and related documentation without an express license agreement from NVIDIA CORPORATION is strictly prohibited. */ -#define SIGMA_SET_SHARED_CONSTANTS SetSharedConstants(1, 2, 8, 8) - -#define SIGMA_CLASSIFY_TILES_SET_CONSTANTS SumConstants(0, 0, 0, 0) -#define SIGMA_CLASSIFY_TILES_NUM_THREADS NumThreads(1, 1) - -#define SIGMA_SMOOTH_TILES_SET_CONSTANTS SumConstants(0, 0, 1, 0) -#define SIGMA_SMOOTH_TILES_NUM_THREADS NumThreads(16, 16) - -#define SIGMA_BLUR_SET_CONSTANTS SumConstants(1, 1, 0, 0) -#define SIGMA_BLUR_NUM_THREADS NumThreads(16, 16) - -#define SIGMA_TEMPORAL_STABILIZATION_SET_CONSTANTS SumConstants(2, 0, 0, 0) -#define SIGMA_TEMPORAL_STABILIZATION_NUM_THREADS NumThreads(16, 16) - -#define SIGMA_SPLIT_SCREEN_SET_CONSTANTS SumConstants(0, 0, 0, 1) -#define SIGMA_SPLIT_SCREEN_NUM_THREADS NumThreads(16, 16) - void nrd::DenoiserImpl::AddMethod_SigmaShadow(MethodData& methodData) { #define METHOD_NAME SIGMA_Shadow @@ -126,110 +109,3 @@ void nrd::DenoiserImpl::AddMethod_SigmaShadow(MethodData& methodData) #undef METHOD_NAME } - -void nrd::DenoiserImpl::UpdateMethod_SigmaShadow(const MethodData& methodData) -{ - enum class Dispatch - { - CLASSIFY_TILES, - SMOOTH_TILES, - BLUR, - POST_BLUR, - TEMPORAL_STABILIZATION, - SPLIT_SCREEN, - }; - - const SigmaSettings& settings = methodData.settings.sigma; - - NRD_DECLARE_DIMS; - - uint16_t tilesW = DivideUp(rectW, 16); - uint16_t tilesH = DivideUp(rectH, 16); - - // SPLIT_SCREEN (passthrough) - if (m_CommonSettings.splitScreen >= 1.0f) - { - Constant* data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); - AddSharedConstants_Sigma(methodData, settings, data); - AddFloat(data, m_CommonSettings.splitScreen); - ValidateConstants(data); - - return; - } - - // CLASSIFY_TILES - Constant* data = PushDispatch(methodData, AsUint(Dispatch::CLASSIFY_TILES)); - AddSharedConstants_Sigma(methodData, settings, data); - ValidateConstants(data); - - // SMOOTH_TILES - data = PushDispatch(methodData, AsUint(Dispatch::SMOOTH_TILES)); - AddSharedConstants_Sigma(methodData, settings, data); - AddUint2(data, tilesW, tilesH); - ValidateConstants(data); - - // BLUR - data = PushDispatch(methodData, AsUint(Dispatch::BLUR)); - AddSharedConstants_Sigma(methodData, settings, data); - AddFloat4x4(data, m_WorldToView); - AddFloat4(data, m_Rotator_Blur); - ValidateConstants(data); - - // POST_BLUR - data = PushDispatch(methodData, AsUint(Dispatch::POST_BLUR)); - AddSharedConstants_Sigma(methodData, settings, data); - AddFloat4x4(data, m_WorldToView); - AddFloat4(data, m_Rotator_PostBlur); - ValidateConstants(data); - - // TEMPORAL_STABILIZATION - data = PushDispatch(methodData, AsUint(Dispatch::TEMPORAL_STABILIZATION)); - AddSharedConstants_Sigma(methodData, settings, data); - AddFloat4x4(data, m_WorldToClipPrev); - AddFloat4x4(data, m_ViewToWorld); - ValidateConstants(data); - - // SPLIT_SCREEN - if (m_CommonSettings.splitScreen > 0.0f) - { - data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); - AddSharedConstants_Sigma(methodData, settings, data); - AddFloat(data, m_CommonSettings.splitScreen); - ValidateConstants(data); - } -} - -void nrd::DenoiserImpl::AddSharedConstants_Sigma(const MethodData& methodData, const SigmaSettings& settings, Constant*& data) -{ - NRD_DECLARE_DIMS; - - // Even with DRS keep radius, it works well for shadows - float unproject = 1.0f / (0.5f * screenH * m_ProjectY); - - AddFloat4x4(data, m_ViewToClip); - - AddFloat4(data, m_Frustum); - AddFloat4(data, ml::float4(m_CommonSettings.motionVectorScale[0], m_CommonSettings.motionVectorScale[1], m_CommonSettings.motionVectorScale[2], m_CommonSettings.debug)); - - AddFloat2(data, 1.0f / float(screenW), 1.0f / float(screenH)); - AddFloat2(data, float(screenW), float(screenH)); - - AddFloat2(data, 1.0f / float(rectW), 1.0f / float(rectH)); - AddFloat2(data, float(rectW), float(rectH)); - - AddFloat2(data, float(rectWprev), float(rectHprev)); - AddFloat2(data, float(rectW) / float(screenW), float(rectH) / float(screenH)); - - AddFloat2(data, float(m_CommonSettings.inputSubrectOrigin[0]) / float(screenW), float(m_CommonSettings.inputSubrectOrigin[1]) / float(screenH)); - AddUint2(data, m_CommonSettings.inputSubrectOrigin[0], m_CommonSettings.inputSubrectOrigin[1]); - - AddFloat(data, m_IsOrtho); - AddFloat(data, unproject); - AddFloat(data, m_CommonSettings.denoisingRange); - AddFloat(data, settings.planeDistanceSensitivity); - - AddFloat(data, settings.blurRadiusScale); - AddFloat(data, m_CommonSettings.accumulationMode != AccumulationMode::CONTINUE ? 0.0f : 1.0f); - AddUint(data, m_CommonSettings.isMotionVectorInWorldSpace ? 1 : 0); - AddUint(data, m_CommonSettings.frameIndex); -} diff --git a/Source/Other.cpp b/Source/Other.cpp new file mode 100644 index 00000000..f47ecd32 --- /dev/null +++ b/Source/Other.cpp @@ -0,0 +1,46 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "DenoiserImpl.h" + +#ifdef NRD_USE_PRECOMPILED_SHADERS + + // REFERENCE + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "REFERENCE_TemporalAccumulation.cs.dxbc.h" + #include "REFERENCE_TemporalAccumulation.cs.dxil.h" + #include "REFERENCE_SplitScreen.cs.dxbc.h" + #include "REFERENCE_SplitScreen.cs.dxil.h" + #endif + + #include "REFERENCE_TemporalAccumulation.cs.spirv.h" + #include "REFERENCE_SplitScreen.cs.spirv.h" + + // SPECULAR_REFLECTION_MV + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "SpecularReflectionMv_Compute.cs.dxbc.h" + #include "SpecularReflectionMv_Compute.cs.dxil.h" + #endif + + #include "SpecularReflectionMv_Compute.cs.spirv.h" + + // SPECULAR_DELTA_MV + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "SpecularDeltaMv_Compute.cs.dxbc.h" + #include "SpecularDeltaMv_Compute.cs.dxil.h" + #endif + + #include "SpecularDeltaMv_Compute.cs.spirv.h" + +#endif + +#include "Methods/Reference.hpp" +#include "Methods/SpecularReflectionMv.hpp" +#include "Methods/SpecularDeltaMv.hpp" diff --git a/Source/Reblur.cpp b/Source/Reblur.cpp new file mode 100644 index 00000000..cbfbaa47 --- /dev/null +++ b/Source/Reblur.cpp @@ -0,0 +1,1063 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "DenoiserImpl.h" + +#include + +// Constants +#define REBLUR_SET_SHARED_CONSTANTS SetSharedConstants(2, 5, 10, 24) + +#define REBLUR_HITDIST_RECONSTRUCTION_CONSTANT_NUM SumConstants(0, 0, 0, 0) +#define REBLUR_HITDIST_RECONSTRUCTION_NUM_THREADS NumThreads(8, 8) + +#define REBLUR_PREPASS_CONSTANT_NUM SumConstants(0, 1, 0, 2) +#define REBLUR_PREPASS_NUM_THREADS NumThreads(16, 16) + +#define REBLUR_TEMPORAL_ACCUMULATION_CONSTANT_NUM SumConstants(4, 2, 0, 7) +#define REBLUR_TEMPORAL_ACCUMULATION_NUM_THREADS NumThreads(8, 8) + +#define REBLUR_HISTORY_FIX_CONSTANT_NUM SumConstants(0, 0, 0, 1) +#define REBLUR_HISTORY_FIX_NUM_THREADS NumThreads(16, 16) + +#define REBLUR_BLUR_CONSTANT_NUM SumConstants(0, 1, 0, 0) +#define REBLUR_BLUR_NUM_THREADS NumThreads(8, 8) + +#define REBLUR_POST_BLUR_CONSTANT_NUM SumConstants(0, 1, 0, 0) +#define REBLUR_POST_BLUR_NUM_THREADS NumThreads(8, 8) + +#define REBLUR_COPY_STABILIZED_HISTORY_CONSTANT_NUM SumConstants(0, 0, 0, 0, false) +#define REBLUR_COPY_STABILIZED_HISTORY_NUM_THREADS NumThreads(16, 16) + +#define REBLUR_TEMPORAL_STABILIZATION_CONSTANT_NUM SumConstants(3, 3, 2, 1) +#define REBLUR_TEMPORAL_STABILIZATION_NUM_THREADS NumThreads(8, 8) + +#define REBLUR_SPLIT_SCREEN_CONSTANT_NUM SumConstants(0, 0, 0, 3) +#define REBLUR_SPLIT_SCREEN_NUM_THREADS NumThreads(16, 16) + +// Permutations +#define REBLUR_HITDIST_RECONSTRUCTION_PERMUTATION_NUM 4 +#define REBLUR_PREPASS_PERMUTATION_NUM 2 +#define REBLUR_TEMPORAL_ACCUMULATION_PERMUTATION_NUM 16 +#define REBLUR_HISTORY_FIX_PERMUTATION_NUM 1 +#define REBLUR_BLUR_PERMUTATION_NUM 1 +#define REBLUR_POST_BLUR_PERMUTATION_NUM 2 +#define REBLUR_COPY_STABILIZED_HISTORY_PERMUTATION_NUM 1 +#define REBLUR_TEMPORAL_STABILIZATION_PERMUTATION_NUM 2 +#define REBLUR_SPLIT_SCREEN_PERMUTATION_NUM 1 + +#define REBLUR_OCCLUSION_HITDIST_RECONSTRUCTION_PERMUTATION_NUM 2 +#define REBLUR_OCCLUSION_TEMPORAL_ACCUMULATION_PERMUTATION_NUM 8 +#define REBLUR_OCCLUSION_HISTORY_FIX_PERMUTATION_NUM 1 +#define REBLUR_OCCLUSION_BLUR_PERMUTATION_NUM 1 +#define REBLUR_OCCLUSION_POST_BLUR_PERMUTATION_NUM 1 +#define REBLUR_OCCLUSION_SPLIT_SCREEN_PERMUTATION_NUM 1 + +// Formats +#define REBLUR_FORMAT Format::RGBA16_SFLOAT + +#define REBLUR_FORMAT_DIFF_FAST_HISTORY Format::R16_SFLOAT +#define REBLUR_FORMAT_SPEC_FAST_HISTORY Format::RG16_SFLOAT // .y = hit distance for tracking + +#define REBLUR_FORMAT_SPEC_HITDIST_FOR_TRACKING Format::R16_UNORM // use R16_SFLOAT if pre-pass outputs unnormalized hit distance + +#define REBLUR_FORMAT_OCCLUSION Format::R16_UNORM + +#define REBLUR_FORMAT_DIRECTIONAL_OCCLUSION Format::RGBA16_SNORM +#define REBLUR_FORMAT_DIRECTIONAL_OCCLUSION_FAST_HISTORY REBLUR_FORMAT_OCCLUSION + +#define REBLUR_FORMAT_PREV_VIEWZ Format::R32_SFLOAT +#define REBLUR_FORMAT_PREV_NORMAL_ROUGHNESS Format::RGBA8_UNORM +#define REBLUR_FORMAT_PREV_INTERNAL_DATA Format::R16_UINT + +// Other +#define REBLUR_DUMMY AsUint(ResourceType::IN_VIEWZ) + +#define REBLUR_ADD_VALIDATION_DISPATCH( data2, diff, spec ) \ + PushPass("Validation"); \ + { \ + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); \ + PushInput( AsUint(ResourceType::IN_VIEWZ) ); \ + PushInput( AsUint(ResourceType::IN_MV) ); \ + PushInput( AsUint(Transient::DATA1) ); \ + PushInput( AsUint(data2) ); \ + PushInput( AsUint(diff) ); \ + PushInput( AsUint(spec) ); \ + PushOutput( AsUint(ResourceType::OUT_VALIDATION) ); \ + AddDispatch( REBLUR_Validation, SumConstants(1, 0, 1, 4), NumThreads(16, 16), IGNORE_RS ); \ + } + +struct ReblurProps +{ + bool hasDiffuse; + bool hasSpecular; +}; + +constexpr std::array g_ReblurProps = +{{ + {true, false}, // REBLUR_DIFFUSE + {true, false}, // REBLUR_DIFFUSE_OCCLUSION + {true, false}, // REBLUR_DIFFUSE_SH + {false, true}, // REBLUR_SPECULAR + {false, true}, // REBLUR_SPECULAR_OCCLUSION + {false, true}, // REBLUR_SPECULAR_SH + {true, true}, // REBLUR_DIFFUSE_SPECULAR + {true, true}, // REBLUR_DIFFUSE_SPECULAR_OCCLUSION + {true, true}, // REBLUR_DIFFUSE_SPECULAR_SH + {true, false}, // REBLUR_DIFFUSE_DIRECTIONAL_OCCLUSION +}}; + +void nrd::DenoiserImpl::UpdateMethod_Reblur(const MethodData& methodData) +{ + enum class Dispatch + { + HITDIST_RECONSTRUCTION, + PREPASS = HITDIST_RECONSTRUCTION + REBLUR_HITDIST_RECONSTRUCTION_PERMUTATION_NUM * 2, + TEMPORAL_ACCUMULATION = PREPASS + REBLUR_PREPASS_PERMUTATION_NUM * 2, + HISTORY_FIX = TEMPORAL_ACCUMULATION + REBLUR_TEMPORAL_ACCUMULATION_PERMUTATION_NUM * 2, + BLUR = HISTORY_FIX + REBLUR_HISTORY_FIX_PERMUTATION_NUM * 2, + POST_BLUR = BLUR + REBLUR_BLUR_PERMUTATION_NUM * 2, + COPY_STABILIZED_HISTORY = POST_BLUR + REBLUR_POST_BLUR_PERMUTATION_NUM * 2, + TEMPORAL_STABILIZATION = COPY_STABILIZED_HISTORY + REBLUR_COPY_STABILIZED_HISTORY_PERMUTATION_NUM * 1, // no perf mode for copy + SPLIT_SCREEN = TEMPORAL_STABILIZATION + REBLUR_TEMPORAL_STABILIZATION_PERMUTATION_NUM * 2, + VALIDATION = SPLIT_SCREEN + REBLUR_SPLIT_SCREEN_PERMUTATION_NUM * 1, // no perf mode for split screen + }; + + NRD_DECLARE_DIMS; + + const ReblurSettings& settings = methodData.settings.reblur; + const ReblurProps& props = g_ReblurProps[ size_t(methodData.desc.method) - size_t(Method::REBLUR_DIFFUSE) ]; + + bool enableHitDistanceReconstruction = settings.hitDistanceReconstructionMode != HitDistanceReconstructionMode::OFF && settings.checkerboardMode == CheckerboardMode::OFF; + bool skipTemporalStabilization = settings.stabilizationStrength == 0.0f; + bool skipPrePass = (settings.diffusePrepassBlurRadius == 0.0f || !props.hasDiffuse) && + (settings.specularPrepassBlurRadius == 0.0f || !props.hasSpecular) && + settings.checkerboardMode == CheckerboardMode::OFF; + + float disocclusionThresholdBonus = (1.0f + m_JitterDelta) / float(rectH); + float disocclusionThreshold = m_CommonSettings.disocclusionThreshold + disocclusionThresholdBonus; + float disocclusionThresholdAlternate = m_CommonSettings.disocclusionThresholdAlternate + disocclusionThresholdBonus; + + ml::float4 antilagMinMaxThreshold = ml::float4(settings.antilagIntensitySettings.thresholdMin, settings.antilagHitDistanceSettings.thresholdMin, settings.antilagIntensitySettings.thresholdMax, settings.antilagHitDistanceSettings.thresholdMax); + + if (!settings.antilagIntensitySettings.enable || settings.enableReferenceAccumulation) + { + antilagMinMaxThreshold.x = 99998.0f; + antilagMinMaxThreshold.z = 99999.0f; + } + + if (!settings.antilagHitDistanceSettings.enable || settings.enableReferenceAccumulation) + { + antilagMinMaxThreshold.y = 99998.0f; + antilagMinMaxThreshold.w = 99999.0f; + } + + uint32_t specCheckerboard = 2; + uint32_t diffCheckerboard = 2; + + switch (settings.checkerboardMode) + { + case CheckerboardMode::BLACK: + diffCheckerboard = 0; + specCheckerboard = 1; + break; + case CheckerboardMode::WHITE: + diffCheckerboard = 1; + specCheckerboard = 0; + break; + default: + break; + } + + // SPLIT_SCREEN (passthrough) + if (m_CommonSettings.splitScreen >= 1.0f) + { + Constant* data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat(data, m_CommonSettings.splitScreen); + AddUint(data, diffCheckerboard); + AddUint(data, specCheckerboard); + ValidateConstants(data); + + return; + } + + // HITDIST_RECONSTRUCTION + if (enableHitDistanceReconstruction) + { + uint32_t passIndex = AsUint(Dispatch::HITDIST_RECONSTRUCTION) + (settings.hitDistanceReconstructionMode == HitDistanceReconstructionMode::AREA_5X5 ? 4 : 0) + (!skipPrePass ? 2 : 0) + (settings.enablePerformanceMode ? 1 : 0); + Constant* data = PushDispatch(methodData, passIndex); + AddSharedConstants_Reblur(methodData, settings, data); + ValidateConstants(data); + } + + // PREPASS + if (!skipPrePass) + { + uint32_t passIndex = AsUint(Dispatch::PREPASS) + (enableHitDistanceReconstruction ? 2 : 0) + (settings.enablePerformanceMode ? 1 : 0); + Constant* data = PushDispatch(methodData, passIndex); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat4(data, m_Rotator_PrePass); + AddUint(data, diffCheckerboard); + AddUint(data, specCheckerboard); + ValidateConstants(data); + } + + // TEMPORAL_ACCUMULATION + uint32_t passIndex = AsUint(Dispatch::TEMPORAL_ACCUMULATION) + (m_CommonSettings.isDisocclusionThresholdMixAvailable ? 16 : 0) + + (!skipTemporalStabilization ? 8 : 0) + (m_CommonSettings.isHistoryConfidenceAvailable ? 4 : 0) + + ((!skipPrePass || enableHitDistanceReconstruction) ? 2 : 0) + (settings.enablePerformanceMode ? 1 : 0); + Constant* data = PushDispatch(methodData, passIndex); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat4x4(data, m_WorldToViewPrev); + AddFloat4x4(data, m_WorldToClipPrev); + AddFloat4x4(data, m_WorldToClip); + AddFloat4x4(data, m_WorldPrevToWorld); + AddFloat4(data, m_FrustumPrev); + AddFloat4(data, ml::float4(m_CameraDelta.x, m_CameraDelta.y, m_CameraDelta.z, disocclusionThreshold)); + AddFloat(data, disocclusionThresholdAlternate); + AddFloat(data, m_CheckerboardResolveAccumSpeed); + AddUint(data, diffCheckerboard); + AddUint(data, specCheckerboard); + AddUint(data, skipPrePass ? 0 : 1); + AddUint(data, m_CommonSettings.isHistoryConfidenceAvailable ? 1 : 0); + AddUint(data, m_CommonSettings.isDisocclusionThresholdMixAvailable ? 1 : 0); + ValidateConstants(data); + + // HISTORY_FIX + passIndex = AsUint(Dispatch::HISTORY_FIX) + (settings.enablePerformanceMode ? 1 : 0); + data = PushDispatch(methodData, passIndex); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat(data, settings.historyFixStrideBetweenSamples); + ValidateConstants(data); + + // BLUR + passIndex = AsUint(Dispatch::BLUR) + (settings.enablePerformanceMode ? 1 : 0); + data = PushDispatch(methodData, passIndex); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat4(data, m_Rotator_Blur); + ValidateConstants(data); + + // POST_BLUR + passIndex = AsUint(Dispatch::POST_BLUR) + (skipTemporalStabilization ? 0 : 2) + (settings.enablePerformanceMode ? 1 : 0); + data = PushDispatch(methodData, passIndex); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat4(data, m_Rotator_PostBlur); + ValidateConstants(data); + + // COPY_STABILIZED_HISTORY + if (!skipTemporalStabilization) + { + passIndex = AsUint(Dispatch::COPY_STABILIZED_HISTORY); + data = PushDispatch(methodData, passIndex); + ValidateConstants(data); + } + + // TEMPORAL_STABILIZATION + if (!skipTemporalStabilization) + { + passIndex = AsUint(Dispatch::TEMPORAL_STABILIZATION) + (m_CommonSettings.isBaseColorMetalnessAvailable ? 2 : 0) + (settings.enablePerformanceMode ? 1 : 0); + data = PushDispatch(methodData, passIndex); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat4x4(data, m_WorldToClip); + AddFloat4x4(data, m_WorldToClipPrev); + AddFloat4x4(data, m_WorldToViewPrev); + AddFloat4(data, m_FrustumPrev); + AddFloat4(data, antilagMinMaxThreshold ); + AddFloat4(data, ml::float4(m_CameraDelta.x, m_CameraDelta.y, m_CameraDelta.z, settings.stabilizationStrength)); + AddFloat2(data, settings.antilagIntensitySettings.sigmaScale, settings.antilagHitDistanceSettings.sigmaScale); + if (m_CommonSettings.isBaseColorMetalnessAvailable) + AddFloat2(data, settings.specularProbabilityThresholdsForMvModification[0], settings.specularProbabilityThresholdsForMvModification[1]); + else + AddFloat2(data, 2.0f, 3.0f); + AddFloat(data, m_CommonSettings.splitScreen); + ValidateConstants(data); + } + + // SPLIT_SCREEN + if (m_CommonSettings.splitScreen > 0.0f) + { + data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat(data, m_CommonSettings.splitScreen); + AddUint(data, diffCheckerboard); + AddUint(data, specCheckerboard); + ValidateConstants(data); + } + + // VALIDATION + if (m_CommonSettings.enableValidation) + { + data = PushDispatch(methodData, AsUint(Dispatch::VALIDATION)); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat4x4(data, m_WorldToClipPrev); + AddFloat2(data, m_CommonSettings.cameraJitter[0], m_CommonSettings.cameraJitter[1]); + AddUint(data, props.hasDiffuse ? 1 : 0); + AddUint(data, props.hasSpecular ? 1 : 0); + AddUint(data, diffCheckerboard); + AddUint(data, specCheckerboard); + ValidateConstants(data); + } +} + +void nrd::DenoiserImpl::UpdateMethod_ReblurOcclusion(const MethodData& methodData) +{ + enum class Dispatch + { + HITDIST_RECONSTRUCTION, + TEMPORAL_ACCUMULATION = HITDIST_RECONSTRUCTION + REBLUR_OCCLUSION_HITDIST_RECONSTRUCTION_PERMUTATION_NUM * 2, + HISTORY_FIX = TEMPORAL_ACCUMULATION + REBLUR_OCCLUSION_TEMPORAL_ACCUMULATION_PERMUTATION_NUM * 2, + BLUR = HISTORY_FIX + REBLUR_OCCLUSION_HISTORY_FIX_PERMUTATION_NUM * 2, // non perf mode is used for anti-firefly + POST_BLUR = BLUR + REBLUR_OCCLUSION_BLUR_PERMUTATION_NUM * 2, + SPLIT_SCREEN = POST_BLUR + REBLUR_OCCLUSION_POST_BLUR_PERMUTATION_NUM * 2, + VALIDATION = SPLIT_SCREEN + REBLUR_SPLIT_SCREEN_PERMUTATION_NUM * 1, // no perf mode for split screen + }; + + NRD_DECLARE_DIMS; + + const ReblurSettings& settings = methodData.settings.reblur; + const ReblurProps& props = g_ReblurProps[ size_t(methodData.desc.method) - size_t(Method::REBLUR_DIFFUSE) ]; + + bool enableHitDistanceReconstruction = settings.hitDistanceReconstructionMode != HitDistanceReconstructionMode::OFF && settings.checkerboardMode == CheckerboardMode::OFF; + + float disocclusionThresholdBonus = (1.0f + m_JitterDelta) / float(rectH); + float disocclusionThreshold = m_CommonSettings.disocclusionThreshold + disocclusionThresholdBonus; + float disocclusionThresholdAlternate = m_CommonSettings.disocclusionThresholdAlternate + disocclusionThresholdBonus; + + uint32_t specCheckerboard = 2; + uint32_t diffCheckerboard = 2; + + switch (settings.checkerboardMode) + { + case CheckerboardMode::BLACK: + diffCheckerboard = 0; + specCheckerboard = 1; + break; + case CheckerboardMode::WHITE: + diffCheckerboard = 1; + specCheckerboard = 0; + break; + default: + break; + } + + // SPLIT_SCREEN (passthrough) + if (m_CommonSettings.splitScreen >= 1.0f) + { + Constant* data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat(data, m_CommonSettings.splitScreen); + AddUint(data, diffCheckerboard); + AddUint(data, specCheckerboard); + ValidateConstants(data); + + return; + } + + // HITDIST_RECONSTRUCTION + if (enableHitDistanceReconstruction) + { + uint32_t passIndex = AsUint(Dispatch::HITDIST_RECONSTRUCTION) + (settings.hitDistanceReconstructionMode == HitDistanceReconstructionMode::AREA_5X5 ? 2 : 0) + (settings.enablePerformanceMode ? 1 : 0); + Constant* data = PushDispatch(methodData, passIndex); + AddSharedConstants_Reblur(methodData, settings, data); + ValidateConstants(data); + } + + // TEMPORAL_ACCUMULATION + uint32_t passIndex = AsUint(Dispatch::TEMPORAL_ACCUMULATION) + (m_CommonSettings.isDisocclusionThresholdMixAvailable ? 8 : 0) + + (m_CommonSettings.isHistoryConfidenceAvailable ? 4 : 0) + (enableHitDistanceReconstruction ? 2 : 0) + (settings.enablePerformanceMode ? 1 : 0); + Constant* data = PushDispatch(methodData, passIndex); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat4x4(data, m_WorldToViewPrev); + AddFloat4x4(data, m_WorldToClipPrev); + AddFloat4x4(data, m_WorldToClip); + AddFloat4x4(data, m_WorldPrevToWorld); + AddFloat4(data, m_FrustumPrev); + AddFloat4(data, ml::float4(m_CameraDelta.x, m_CameraDelta.y, m_CameraDelta.z, disocclusionThreshold)); + AddFloat(data, disocclusionThresholdAlternate); + AddFloat(data, m_CheckerboardResolveAccumSpeed); + AddUint(data, diffCheckerboard); + AddUint(data, specCheckerboard); + AddUint(data, 0); + AddUint(data, m_CommonSettings.isHistoryConfidenceAvailable); + AddUint(data, m_CommonSettings.isDisocclusionThresholdMixAvailable); + ValidateConstants(data); + + // HISTORY_FIX + passIndex = AsUint(Dispatch::HISTORY_FIX) + (!settings.enableAntiFirefly ? 1 : 0); + data = PushDispatch(methodData, passIndex); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat(data, settings.historyFixStrideBetweenSamples); + ValidateConstants(data); + + // BLUR + passIndex = AsUint(Dispatch::BLUR) + (settings.enablePerformanceMode ? 1 : 0); + data = PushDispatch(methodData, passIndex); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat4(data, m_Rotator_Blur); + ValidateConstants(data); + + // POST_BLUR + passIndex = AsUint(Dispatch::POST_BLUR) + (settings.enablePerformanceMode ? 1 : 0); + data = PushDispatch(methodData, passIndex); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat4(data, m_Rotator_PostBlur); + ValidateConstants(data); + + // SPLIT_SCREEN + if (m_CommonSettings.splitScreen > 0.0f) + { + data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat(data, m_CommonSettings.splitScreen); + AddUint(data, diffCheckerboard); + AddUint(data, specCheckerboard); + ValidateConstants(data); + } + + // VALIDATION + if (m_CommonSettings.enableValidation) + { + data = PushDispatch(methodData, AsUint(Dispatch::VALIDATION)); + AddSharedConstants_Reblur(methodData, settings, data); + AddFloat4x4(data, m_WorldToClipPrev); + AddFloat2(data, m_CommonSettings.cameraJitter[0], m_CommonSettings.cameraJitter[1]); + AddUint(data, props.hasDiffuse ? 1 : 0); + AddUint(data, props.hasSpecular ? 1 : 0); + AddUint(data, diffCheckerboard); + AddUint(data, specCheckerboard); + ValidateConstants(data); + } +} + +void nrd::DenoiserImpl::AddSharedConstants_Reblur(const MethodData& methodData, const ReblurSettings& settings, Constant*& data) +{ + NRD_DECLARE_DIMS; + + bool isHistoryReset = m_CommonSettings.accumulationMode != AccumulationMode::CONTINUE; + float unproject = 1.0f / (0.5f * rectH * m_ProjectY); + uint32_t maxAccumulatedFrameNum = ml::Min(settings.maxAccumulatedFrameNum, REBLUR_MAX_HISTORY_FRAME_NUM); + + AddFloat4x4(data, m_ViewToClip); + AddFloat4x4(data, m_ViewToWorld); + + AddFloat4(data, m_Frustum); + AddFloat4(data, ml::float4(settings.hitDistanceParameters.A, settings.hitDistanceParameters.B, settings.hitDistanceParameters.C, settings.hitDistanceParameters.D)); + AddFloat4(data, ml::float4(m_ViewDirection.x, m_ViewDirection.y, m_ViewDirection.z, 0.0f)); + AddFloat4(data, ml::float4(m_ViewDirectionPrev.x, m_ViewDirectionPrev.y, m_ViewDirectionPrev.z, 0.0f)); + AddFloat4(data, ml::float4(m_CommonSettings.motionVectorScale[0], m_CommonSettings.motionVectorScale[1], m_CommonSettings.motionVectorScale[2], m_CommonSettings.debug)); + + AddFloat2(data, 1.0f / float(screenW), 1.0f / float(screenH)); + AddFloat2(data, float(screenW), float(screenH)); + + AddFloat2(data, 1.0f / float(rectW), 1.0f / float(rectH)); + AddFloat2(data, float(rectW), float(rectH)); + + AddFloat2(data, float(rectW) / float(screenW), float(rectH) / float(screenH)); + AddFloat2(data, float(rectWprev) / float(screenW), float(rectHprev) / float(screenH)); + + AddFloat2(data, float(rectWprev), float(rectHprev)); + AddFloat2(data, settings.antilagIntensitySettings.sensitivityToDarkness + 1e-6f, settings.antilagHitDistanceSettings.sensitivityToDarkness + 1e-6f); + + AddFloat2(data, float(m_CommonSettings.inputSubrectOrigin[0]) / float(screenW), float(m_CommonSettings.inputSubrectOrigin[1]) / float(screenH)); + AddUint2(data, m_CommonSettings.inputSubrectOrigin[0], m_CommonSettings.inputSubrectOrigin[1]); + + AddFloat(data, settings.enableReferenceAccumulation ? 0.0f : 1.0f); + AddFloat(data, m_IsOrtho); + AddFloat(data, unproject); + AddFloat(data, m_CommonSettings.denoisingRange); + + AddFloat(data, settings.planeDistanceSensitivity); + AddFloat(data, m_FrameRateScale); + AddFloat(data, settings.enableReferenceAccumulation ? 0.0f : settings.blurRadius); + AddFloat(data, isHistoryReset ? 0 : float(maxAccumulatedFrameNum)); + + AddFloat(data, float(settings.maxFastAccumulatedFrameNum)); + AddFloat(data, settings.enableAntiFirefly ? 1.0f : 0.0f); + AddFloat(data, settings.lobeAngleFraction); + AddFloat(data, settings.roughnessFraction); + + AddFloat(data, settings.responsiveAccumulationRoughnessThreshold); + AddFloat(data, settings.diffusePrepassBlurRadius); + AddFloat(data, settings.specularPrepassBlurRadius); + AddFloat(data, (float)settings.historyFixFrameNum); + + AddFloat(data, (float)ml::Min(rectW, rectH) * unproject); + AddUint(data, m_CommonSettings.isMotionVectorInWorldSpace ? 1 : 0); + AddUint(data, m_CommonSettings.frameIndex); + AddUint(data, settings.enableMaterialTestForDiffuse ? 1 : 0); + + AddUint(data, settings.enableMaterialTestForSpecular ? 1 : 0); + AddUint(data, isHistoryReset ? 1 : 0); + AddUint(data, 0); + AddUint(data, 0); +} + +#ifdef NRD_USE_PRECOMPILED_SHADERS + + // REBLUR_DIFFUSE + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "REBLUR_Diffuse_HitDistReconstruction.cs.dxbc.h" + #include "REBLUR_Diffuse_HitDistReconstruction.cs.dxil.h" + #include "REBLUR_Diffuse_HitDistReconstruction_5x5.cs.dxbc.h" + #include "REBLUR_Diffuse_HitDistReconstruction_5x5.cs.dxil.h" + #include "REBLUR_Diffuse_PrePass.cs.dxbc.h" + #include "REBLUR_Diffuse_PrePass.cs.dxil.h" + #include "REBLUR_Diffuse_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_Diffuse_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_Diffuse_HistoryFix.cs.dxbc.h" + #include "REBLUR_Diffuse_HistoryFix.cs.dxil.h" + #include "REBLUR_Diffuse_Blur.cs.dxbc.h" + #include "REBLUR_Diffuse_Blur.cs.dxil.h" + #include "REBLUR_Diffuse_PostBlur.cs.dxbc.h" + #include "REBLUR_Diffuse_PostBlur.cs.dxil.h" + #include "REBLUR_Diffuse_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_Diffuse_PostBlur_NoTemporalStabilization.cs.dxil.h" + #include "REBLUR_Diffuse_CopyStabilizedHistory.cs.dxbc.h" + #include "REBLUR_Diffuse_CopyStabilizedHistory.cs.dxil.h" + #include "REBLUR_Diffuse_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_Diffuse_TemporalStabilization.cs.dxil.h" + #include "REBLUR_Diffuse_SplitScreen.cs.dxbc.h" + #include "REBLUR_Diffuse_SplitScreen.cs.dxil.h" + #include "REBLUR_Validation.cs.dxbc.h" + #include "REBLUR_Validation.cs.dxil.h" + + #include "REBLUR_Perf_Diffuse_HitDistReconstruction.cs.dxbc.h" + #include "REBLUR_Perf_Diffuse_HitDistReconstruction.cs.dxil.h" + #include "REBLUR_Perf_Diffuse_HitDistReconstruction_5x5.cs.dxil.h" + #include "REBLUR_Perf_Diffuse_HitDistReconstruction_5x5.cs.dxbc.h" + #include "REBLUR_Perf_Diffuse_PrePass.cs.dxbc.h" + #include "REBLUR_Perf_Diffuse_PrePass.cs.dxil.h" + #include "REBLUR_Perf_Diffuse_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_Perf_Diffuse_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_Perf_Diffuse_HistoryFix.cs.dxbc.h" + #include "REBLUR_Perf_Diffuse_HistoryFix.cs.dxil.h" + #include "REBLUR_Perf_Diffuse_Blur.cs.dxbc.h" + #include "REBLUR_Perf_Diffuse_Blur.cs.dxil.h" + #include "REBLUR_Perf_Diffuse_PostBlur.cs.dxbc.h" + #include "REBLUR_Perf_Diffuse_PostBlur.cs.dxil.h" + #include "REBLUR_Perf_Diffuse_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_Diffuse_PostBlur_NoTemporalStabilization.cs.dxil.h" + #include "REBLUR_Perf_Diffuse_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_Diffuse_TemporalStabilization.cs.dxil.h" + #endif + + #include "REBLUR_Diffuse_HitDistReconstruction.cs.spirv.h" + #include "REBLUR_Diffuse_HitDistReconstruction_5x5.cs.spirv.h" + #include "REBLUR_Diffuse_PrePass.cs.spirv.h" + #include "REBLUR_Diffuse_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_Diffuse_HistoryFix.cs.spirv.h" + #include "REBLUR_Diffuse_Blur.cs.spirv.h" + #include "REBLUR_Diffuse_CopyStabilizedHistory.cs.spirv.h" + #include "REBLUR_Diffuse_TemporalStabilization.cs.spirv.h" + #include "REBLUR_Diffuse_PostBlur.cs.spirv.h" + #include "REBLUR_Diffuse_PostBlur_NoTemporalStabilization.cs.spirv.h" + #include "REBLUR_Diffuse_SplitScreen.cs.spirv.h" + #include "REBLUR_Validation.cs.spirv.h" + + #include "REBLUR_Perf_Diffuse_HitDistReconstruction.cs.spirv.h" + #include "REBLUR_Perf_Diffuse_HitDistReconstruction_5x5.cs.spirv.h" + #include "REBLUR_Perf_Diffuse_PrePass.cs.spirv.h" + #include "REBLUR_Perf_Diffuse_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_Perf_Diffuse_HistoryFix.cs.spirv.h" + #include "REBLUR_Perf_Diffuse_Blur.cs.spirv.h" + #include "REBLUR_Perf_Diffuse_TemporalStabilization.cs.spirv.h" + #include "REBLUR_Perf_Diffuse_PostBlur.cs.spirv.h" + #include "REBLUR_Perf_Diffuse_PostBlur_NoTemporalStabilization.cs.spirv.h" + + // REBLUR_DIFFUSE_OCCLUSION + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "REBLUR_DiffuseOcclusion_HitDistReconstruction.cs.dxbc.h" + #include "REBLUR_DiffuseOcclusion_HitDistReconstruction.cs.dxil.h" + #include "REBLUR_DiffuseOcclusion_HitDistReconstruction_5x5.cs.dxbc.h" + #include "REBLUR_DiffuseOcclusion_HitDistReconstruction_5x5.cs.dxil.h" + #include "REBLUR_DiffuseOcclusion_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_DiffuseOcclusion_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_DiffuseOcclusion_HistoryFix.cs.dxbc.h" + #include "REBLUR_DiffuseOcclusion_HistoryFix.cs.dxil.h" + #include "REBLUR_DiffuseOcclusion_Blur.cs.dxbc.h" + #include "REBLUR_DiffuseOcclusion_Blur.cs.dxil.h" + #include "REBLUR_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" + + #include "REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction.cs.dxil.h" + #include "REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction_5x5.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction_5x5.cs.dxil.h" + #include "REBLUR_Perf_DiffuseOcclusion_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseOcclusion_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_Perf_DiffuseOcclusion_HistoryFix.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseOcclusion_HistoryFix.cs.dxil.h" + #include "REBLUR_Perf_DiffuseOcclusion_Blur.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseOcclusion_Blur.cs.dxil.h" + #include "REBLUR_Perf_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" + #endif + + #include "REBLUR_DiffuseOcclusion_HitDistReconstruction.cs.spirv.h" + #include "REBLUR_DiffuseOcclusion_HitDistReconstruction_5x5.cs.spirv.h" + #include "REBLUR_DiffuseOcclusion_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_DiffuseOcclusion_HistoryFix.cs.spirv.h" + #include "REBLUR_DiffuseOcclusion_Blur.cs.spirv.h" + #include "REBLUR_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" + + #include "REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction.cs.spirv.h" + #include "REBLUR_Perf_DiffuseOcclusion_HitDistReconstruction_5x5.cs.spirv.h" + #include "REBLUR_Perf_DiffuseOcclusion_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_Perf_DiffuseOcclusion_HistoryFix.cs.spirv.h" + #include "REBLUR_Perf_DiffuseOcclusion_Blur.cs.spirv.h" + #include "REBLUR_Perf_DiffuseOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" + + // REBLUR_DIFFUSE_SH + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "REBLUR_DiffuseSh_PrePass.cs.dxbc.h" + #include "REBLUR_DiffuseSh_PrePass.cs.dxil.h" + #include "REBLUR_DiffuseSh_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_DiffuseSh_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_DiffuseSh_HistoryFix.cs.dxbc.h" + #include "REBLUR_DiffuseSh_HistoryFix.cs.dxil.h" + #include "REBLUR_DiffuseSh_Blur.cs.dxbc.h" + #include "REBLUR_DiffuseSh_Blur.cs.dxil.h" + #include "REBLUR_DiffuseSh_PostBlur.cs.dxbc.h" + #include "REBLUR_DiffuseSh_PostBlur.cs.dxil.h" + #include "REBLUR_DiffuseSh_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_DiffuseSh_PostBlur_NoTemporalStabilization.cs.dxil.h" + #include "REBLUR_DiffuseSh_CopyStabilizedHistory.cs.dxbc.h" + #include "REBLUR_DiffuseSh_CopyStabilizedHistory.cs.dxil.h" + #include "REBLUR_DiffuseSh_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_DiffuseSh_TemporalStabilization.cs.dxil.h" + #include "REBLUR_DiffuseSh_SplitScreen.cs.dxbc.h" + #include "REBLUR_DiffuseSh_SplitScreen.cs.dxil.h" + + #include "REBLUR_Perf_DiffuseSh_PrePass.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSh_PrePass.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSh_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSh_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSh_HistoryFix.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSh_HistoryFix.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSh_Blur.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSh_Blur.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSh_PostBlur.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSh_PostBlur.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSh_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSh_PostBlur_NoTemporalStabilization.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSh_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSh_TemporalStabilization.cs.dxil.h" + #endif + + #include "REBLUR_DiffuseSh_PrePass.cs.spirv.h" + #include "REBLUR_DiffuseSh_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_DiffuseSh_HistoryFix.cs.spirv.h" + #include "REBLUR_DiffuseSh_Blur.cs.spirv.h" + #include "REBLUR_DiffuseSh_CopyStabilizedHistory.cs.spirv.h" + #include "REBLUR_DiffuseSh_TemporalStabilization.cs.spirv.h" + #include "REBLUR_DiffuseSh_PostBlur.cs.spirv.h" + #include "REBLUR_DiffuseSh_PostBlur_NoTemporalStabilization.cs.spirv.h" + #include "REBLUR_DiffuseSh_SplitScreen.cs.spirv.h" + + #include "REBLUR_Perf_DiffuseSh_PrePass.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSh_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSh_HistoryFix.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSh_Blur.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSh_TemporalStabilization.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSh_PostBlur.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSh_PostBlur_NoTemporalStabilization.cs.spirv.h" + + // REBLUR_SPECULAR + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "REBLUR_Specular_HitDistReconstruction.cs.dxbc.h" + #include "REBLUR_Specular_HitDistReconstruction.cs.dxil.h" + #include "REBLUR_Specular_HitDistReconstruction_5x5.cs.dxbc.h" + #include "REBLUR_Specular_HitDistReconstruction_5x5.cs.dxil.h" + #include "REBLUR_Specular_PrePass.cs.dxbc.h" + #include "REBLUR_Specular_PrePass.cs.dxil.h" + #include "REBLUR_Specular_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_Specular_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_Specular_HistoryFix.cs.dxbc.h" + #include "REBLUR_Specular_HistoryFix.cs.dxil.h" + #include "REBLUR_Specular_Blur.cs.dxbc.h" + #include "REBLUR_Specular_Blur.cs.dxil.h" + #include "REBLUR_Specular_PostBlur.cs.dxbc.h" + #include "REBLUR_Specular_PostBlur.cs.dxil.h" + #include "REBLUR_Specular_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_Specular_PostBlur_NoTemporalStabilization.cs.dxil.h" + #include "REBLUR_Specular_CopyStabilizedHistory.cs.dxbc.h" + #include "REBLUR_Specular_CopyStabilizedHistory.cs.dxil.h" + #include "REBLUR_Specular_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_Specular_TemporalStabilization.cs.dxil.h" + #include "REBLUR_Specular_SplitScreen.cs.dxbc.h" + #include "REBLUR_Specular_SplitScreen.cs.dxil.h" + + #include "REBLUR_Perf_Specular_HitDistReconstruction.cs.dxbc.h" + #include "REBLUR_Perf_Specular_HitDistReconstruction.cs.dxil.h" + #include "REBLUR_Perf_Specular_HitDistReconstruction_5x5.cs.dxbc.h" + #include "REBLUR_Perf_Specular_HitDistReconstruction_5x5.cs.dxil.h" + #include "REBLUR_Perf_Specular_PrePass.cs.dxbc.h" + #include "REBLUR_Perf_Specular_PrePass.cs.dxil.h" + #include "REBLUR_Perf_Specular_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_Perf_Specular_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_Perf_Specular_HistoryFix.cs.dxbc.h" + #include "REBLUR_Perf_Specular_HistoryFix.cs.dxil.h" + #include "REBLUR_Perf_Specular_Blur.cs.dxbc.h" + #include "REBLUR_Perf_Specular_Blur.cs.dxil.h" + #include "REBLUR_Perf_Specular_PostBlur.cs.dxbc.h" + #include "REBLUR_Perf_Specular_PostBlur.cs.dxil.h" + #include "REBLUR_Perf_Specular_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_Specular_PostBlur_NoTemporalStabilization.cs.dxil.h" + #include "REBLUR_Perf_Specular_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_Specular_TemporalStabilization.cs.dxil.h" + #endif + + #include "REBLUR_Specular_HitDistReconstruction.cs.spirv.h" + #include "REBLUR_Specular_HitDistReconstruction_5x5.cs.spirv.h" + #include "REBLUR_Specular_PrePass.cs.spirv.h" + #include "REBLUR_Specular_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_Specular_HistoryFix.cs.spirv.h" + #include "REBLUR_Specular_Blur.cs.spirv.h" + #include "REBLUR_Specular_PostBlur.cs.spirv.h" + #include "REBLUR_Specular_PostBlur_NoTemporalStabilization.cs.spirv.h" + #include "REBLUR_Specular_CopyStabilizedHistory.cs.spirv.h" + #include "REBLUR_Specular_TemporalStabilization.cs.spirv.h" + #include "REBLUR_Specular_SplitScreen.cs.spirv.h" + + #include "REBLUR_Perf_Specular_HitDistReconstruction.cs.spirv.h" + #include "REBLUR_Perf_Specular_HitDistReconstruction_5x5.cs.spirv.h" + #include "REBLUR_Perf_Specular_PrePass.cs.spirv.h" + #include "REBLUR_Perf_Specular_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_Perf_Specular_HistoryFix.cs.spirv.h" + #include "REBLUR_Perf_Specular_Blur.cs.spirv.h" + #include "REBLUR_Perf_Specular_PostBlur.cs.spirv.h" + #include "REBLUR_Perf_Specular_PostBlur_NoTemporalStabilization.cs.spirv.h" + #include "REBLUR_Perf_Specular_TemporalStabilization.cs.spirv.h" + + // REBLUR_SPECULAR_OCCLUSION + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "REBLUR_SpecularOcclusion_HitDistReconstruction.cs.dxbc.h" + #include "REBLUR_SpecularOcclusion_HitDistReconstruction.cs.dxil.h" + #include "REBLUR_SpecularOcclusion_HitDistReconstruction_5x5.cs.dxbc.h" + #include "REBLUR_SpecularOcclusion_HitDistReconstruction_5x5.cs.dxil.h" + #include "REBLUR_SpecularOcclusion_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_SpecularOcclusion_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_SpecularOcclusion_HistoryFix.cs.dxbc.h" + #include "REBLUR_SpecularOcclusion_HistoryFix.cs.dxil.h" + #include "REBLUR_SpecularOcclusion_Blur.cs.dxbc.h" + #include "REBLUR_SpecularOcclusion_Blur.cs.dxil.h" + #include "REBLUR_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" + + #include "REBLUR_Perf_SpecularOcclusion_HitDistReconstruction.cs.dxbc.h" + #include "REBLUR_Perf_SpecularOcclusion_HitDistReconstruction.cs.dxil.h" + #include "REBLUR_Perf_SpecularOcclusion_HitDistReconstruction_5x5.cs.dxbc.h" + #include "REBLUR_Perf_SpecularOcclusion_HitDistReconstruction_5x5.cs.dxil.h" + #include "REBLUR_Perf_SpecularOcclusion_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_Perf_SpecularOcclusion_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_Perf_SpecularOcclusion_HistoryFix.cs.dxbc.h" + #include "REBLUR_Perf_SpecularOcclusion_HistoryFix.cs.dxil.h" + #include "REBLUR_Perf_SpecularOcclusion_Blur.cs.dxbc.h" + #include "REBLUR_Perf_SpecularOcclusion_Blur.cs.dxil.h" + #include "REBLUR_Perf_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" + #endif + + #include "REBLUR_SpecularOcclusion_HitDistReconstruction.cs.spirv.h" + #include "REBLUR_SpecularOcclusion_HitDistReconstruction_5x5.cs.spirv.h" + #include "REBLUR_SpecularOcclusion_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_SpecularOcclusion_HistoryFix.cs.spirv.h" + #include "REBLUR_SpecularOcclusion_Blur.cs.spirv.h" + #include "REBLUR_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" + + #include "REBLUR_Perf_SpecularOcclusion_HitDistReconstruction.cs.spirv.h" + #include "REBLUR_Perf_SpecularOcclusion_HitDistReconstruction_5x5.cs.spirv.h" + #include "REBLUR_Perf_SpecularOcclusion_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_Perf_SpecularOcclusion_HistoryFix.cs.spirv.h" + #include "REBLUR_Perf_SpecularOcclusion_Blur.cs.spirv.h" + #include "REBLUR_Perf_SpecularOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" + + // REBLUR_SPECULAR_SH + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "REBLUR_SpecularSh_PrePass.cs.dxbc.h" + #include "REBLUR_SpecularSh_PrePass.cs.dxil.h" + #include "REBLUR_SpecularSh_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_SpecularSh_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_SpecularSh_HistoryFix.cs.dxbc.h" + #include "REBLUR_SpecularSh_HistoryFix.cs.dxil.h" + #include "REBLUR_SpecularSh_Blur.cs.dxbc.h" + #include "REBLUR_SpecularSh_Blur.cs.dxil.h" + #include "REBLUR_SpecularSh_PostBlur.cs.dxbc.h" + #include "REBLUR_SpecularSh_PostBlur.cs.dxil.h" + #include "REBLUR_SpecularSh_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_SpecularSh_PostBlur_NoTemporalStabilization.cs.dxil.h" + #include "REBLUR_SpecularSh_CopyStabilizedHistory.cs.dxbc.h" + #include "REBLUR_SpecularSh_CopyStabilizedHistory.cs.dxil.h" + #include "REBLUR_SpecularSh_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_SpecularSh_TemporalStabilization.cs.dxil.h" + #include "REBLUR_SpecularSh_SplitScreen.cs.dxbc.h" + #include "REBLUR_SpecularSh_SplitScreen.cs.dxil.h" + + #include "REBLUR_Perf_SpecularSh_PrePass.cs.dxbc.h" + #include "REBLUR_Perf_SpecularSh_PrePass.cs.dxil.h" + #include "REBLUR_Perf_SpecularSh_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_Perf_SpecularSh_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_Perf_SpecularSh_HistoryFix.cs.dxbc.h" + #include "REBLUR_Perf_SpecularSh_HistoryFix.cs.dxil.h" + #include "REBLUR_Perf_SpecularSh_Blur.cs.dxbc.h" + #include "REBLUR_Perf_SpecularSh_Blur.cs.dxil.h" + #include "REBLUR_Perf_SpecularSh_PostBlur.cs.dxbc.h" + #include "REBLUR_Perf_SpecularSh_PostBlur.cs.dxil.h" + #include "REBLUR_Perf_SpecularSh_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_SpecularSh_PostBlur_NoTemporalStabilization.cs.dxil.h" + #include "REBLUR_Perf_SpecularSh_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_SpecularSh_TemporalStabilization.cs.dxil.h" + #endif + + #include "REBLUR_SpecularSh_PrePass.cs.spirv.h" + #include "REBLUR_SpecularSh_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_SpecularSh_HistoryFix.cs.spirv.h" + #include "REBLUR_SpecularSh_Blur.cs.spirv.h" + #include "REBLUR_SpecularSh_PostBlur.cs.spirv.h" + #include "REBLUR_SpecularSh_PostBlur_NoTemporalStabilization.cs.spirv.h" + #include "REBLUR_SpecularSh_CopyStabilizedHistory.cs.spirv.h" + #include "REBLUR_SpecularSh_TemporalStabilization.cs.spirv.h" + #include "REBLUR_SpecularSh_SplitScreen.cs.spirv.h" + + #include "REBLUR_Perf_SpecularSh_PrePass.cs.spirv.h" + #include "REBLUR_Perf_SpecularSh_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_Perf_SpecularSh_HistoryFix.cs.spirv.h" + #include "REBLUR_Perf_SpecularSh_Blur.cs.spirv.h" + #include "REBLUR_Perf_SpecularSh_PostBlur.cs.spirv.h" + #include "REBLUR_Perf_SpecularSh_PostBlur_NoTemporalStabilization.cs.spirv.h" + #include "REBLUR_Perf_SpecularSh_TemporalStabilization.cs.spirv.h" + + // REBLUR_DIFFUSE_SPECULAR + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "REBLUR_DiffuseSpecular_HitDistReconstruction.cs.dxbc.h" + #include "REBLUR_DiffuseSpecular_HitDistReconstruction.cs.dxil.h" + #include "REBLUR_DiffuseSpecular_HitDistReconstruction_5x5.cs.dxbc.h" + #include "REBLUR_DiffuseSpecular_HitDistReconstruction_5x5.cs.dxil.h" + #include "REBLUR_DiffuseSpecular_PrePass.cs.dxbc.h" + #include "REBLUR_DiffuseSpecular_PrePass.cs.dxil.h" + #include "REBLUR_DiffuseSpecular_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_DiffuseSpecular_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_DiffuseSpecular_HistoryFix.cs.dxbc.h" + #include "REBLUR_DiffuseSpecular_HistoryFix.cs.dxil.h" + #include "REBLUR_DiffuseSpecular_Blur.cs.dxbc.h" + #include "REBLUR_DiffuseSpecular_Blur.cs.dxil.h" + #include "REBLUR_DiffuseSpecular_CopyStabilizedHistory.cs.dxbc.h" + #include "REBLUR_DiffuseSpecular_CopyStabilizedHistory.cs.dxil.h" + #include "REBLUR_DiffuseSpecular_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_DiffuseSpecular_TemporalStabilization.cs.dxil.h" + #include "REBLUR_DiffuseSpecular_PostBlur.cs.dxbc.h" + #include "REBLUR_DiffuseSpecular_PostBlur.cs.dxil.h" + #include "REBLUR_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.dxil.h" + #include "REBLUR_DiffuseSpecular_SplitScreen.cs.dxbc.h" + #include "REBLUR_DiffuseSpecular_SplitScreen.cs.dxil.h" + + #include "REBLUR_Perf_DiffuseSpecular_HitDistReconstruction.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecular_HitDistReconstruction.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecular_HitDistReconstruction_5x5.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecular_HitDistReconstruction_5x5.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecular_PrePass.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecular_PrePass.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecular_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecular_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecular_HistoryFix.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecular_HistoryFix.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecular_Blur.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecular_Blur.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecular_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecular_TemporalStabilization.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecular_PostBlur.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecular_PostBlur.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.dxil.h" + #endif + + #include "REBLUR_DiffuseSpecular_HitDistReconstruction.cs.spirv.h" + #include "REBLUR_DiffuseSpecular_HitDistReconstruction_5x5.cs.spirv.h" + #include "REBLUR_DiffuseSpecular_PrePass.cs.spirv.h" + #include "REBLUR_DiffuseSpecular_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_DiffuseSpecular_HistoryFix.cs.spirv.h" + #include "REBLUR_DiffuseSpecular_Blur.cs.spirv.h" + #include "REBLUR_DiffuseSpecular_CopyStabilizedHistory.cs.spirv.h" + #include "REBLUR_DiffuseSpecular_TemporalStabilization.cs.spirv.h" + #include "REBLUR_DiffuseSpecular_PostBlur.cs.spirv.h" + #include "REBLUR_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.spirv.h" + #include "REBLUR_DiffuseSpecular_SplitScreen.cs.spirv.h" + + #include "REBLUR_Perf_DiffuseSpecular_HitDistReconstruction.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecular_HitDistReconstruction_5x5.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecular_PrePass.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecular_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecular_HistoryFix.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecular_Blur.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecular_TemporalStabilization.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecular_PostBlur.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecular_PostBlur_NoTemporalStabilization.cs.spirv.h" + + // REBLUR_DIFFUSE_SPECULAR_OCCLUSION + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction.cs.dxil.h" + #include "REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.dxil.h" + #include "REBLUR_DiffuseSpecularOcclusion_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularOcclusion_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_DiffuseSpecularOcclusion_HistoryFix.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularOcclusion_HistoryFix.cs.dxil.h" + #include "REBLUR_DiffuseSpecularOcclusion_Blur.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularOcclusion_Blur.cs.dxil.h" + #include "REBLUR_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" + + #include "REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_HistoryFix.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_HistoryFix.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_Blur.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_Blur.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" + #endif + + #include "REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction.cs.spirv.h" + #include "REBLUR_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.spirv.h" + #include "REBLUR_DiffuseSpecularOcclusion_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_DiffuseSpecularOcclusion_HistoryFix.cs.spirv.h" + #include "REBLUR_DiffuseSpecularOcclusion_Blur.cs.spirv.h" + #include "REBLUR_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" + + #include "REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_HitDistReconstruction_5x5.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_HistoryFix.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_Blur.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecularOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" + + // REBLUR_DIFFUSE_SPECULAR_SH + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "REBLUR_DiffuseSpecularSh_PrePass.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularSh_PrePass.cs.dxil.h" + #include "REBLUR_DiffuseSpecularSh_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularSh_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_DiffuseSpecularSh_HistoryFix.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularSh_HistoryFix.cs.dxil.h" + #include "REBLUR_DiffuseSpecularSh_Blur.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularSh_Blur.cs.dxil.h" + #include "REBLUR_DiffuseSpecularSh_CopyStabilizedHistory.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularSh_CopyStabilizedHistory.cs.dxil.h" + #include "REBLUR_DiffuseSpecularSh_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularSh_TemporalStabilization.cs.dxil.h" + #include "REBLUR_DiffuseSpecularSh_PostBlur.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularSh_PostBlur.cs.dxil.h" + #include "REBLUR_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.dxil.h" + #include "REBLUR_DiffuseSpecularSh_SplitScreen.cs.dxbc.h" + #include "REBLUR_DiffuseSpecularSh_SplitScreen.cs.dxil.h" + + #include "REBLUR_Perf_DiffuseSpecularSh_PrePass.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularSh_PrePass.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecularSh_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularSh_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecularSh_HistoryFix.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularSh_HistoryFix.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecularSh_Blur.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularSh_Blur.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecularSh_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularSh_TemporalStabilization.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecularSh_PostBlur.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularSh_PostBlur.cs.dxil.h" + #include "REBLUR_Perf_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.dxil.h" + #endif + + #include "REBLUR_DiffuseSpecularSh_PrePass.cs.spirv.h" + #include "REBLUR_DiffuseSpecularSh_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_DiffuseSpecularSh_HistoryFix.cs.spirv.h" + #include "REBLUR_DiffuseSpecularSh_Blur.cs.spirv.h" + #include "REBLUR_DiffuseSpecularSh_CopyStabilizedHistory.cs.spirv.h" + #include "REBLUR_DiffuseSpecularSh_TemporalStabilization.cs.spirv.h" + #include "REBLUR_DiffuseSpecularSh_PostBlur.cs.spirv.h" + #include "REBLUR_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.spirv.h" + #include "REBLUR_DiffuseSpecularSh_SplitScreen.cs.spirv.h" + + #include "REBLUR_Perf_DiffuseSpecularSh_PrePass.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecularSh_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecularSh_HistoryFix.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecularSh_Blur.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecularSh_TemporalStabilization.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecularSh_PostBlur.cs.spirv.h" + #include "REBLUR_Perf_DiffuseSpecularSh_PostBlur_NoTemporalStabilization.cs.spirv.h" + + // REBLUR_DIFFUSE_DIRECTIONAL_OCCLUSION + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "REBLUR_DiffuseDirectionalOcclusion_PrePass.cs.dxbc.h" + #include "REBLUR_DiffuseDirectionalOcclusion_PrePass.cs.dxil.h" + #include "REBLUR_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_DiffuseDirectionalOcclusion_HistoryFix.cs.dxbc.h" + #include "REBLUR_DiffuseDirectionalOcclusion_HistoryFix.cs.dxil.h" + #include "REBLUR_DiffuseDirectionalOcclusion_Blur.cs.dxbc.h" + #include "REBLUR_DiffuseDirectionalOcclusion_Blur.cs.dxil.h" + #include "REBLUR_DiffuseDirectionalOcclusion_PostBlur.cs.dxbc.h" + #include "REBLUR_DiffuseDirectionalOcclusion_PostBlur.cs.dxil.h" + #include "REBLUR_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" + #include "REBLUR_DiffuseDirectionalOcclusion_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_DiffuseDirectionalOcclusion_TemporalStabilization.cs.dxil.h" + + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PrePass.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PrePass.cs.dxil.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.dxil.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_HistoryFix.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_HistoryFix.cs.dxil.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_Blur.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_Blur.cs.dxil.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur.cs.dxil.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.dxil.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalStabilization.cs.dxbc.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalStabilization.cs.dxil.h" + #endif + + #include "REBLUR_DiffuseDirectionalOcclusion_PrePass.cs.spirv.h" + #include "REBLUR_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_DiffuseDirectionalOcclusion_HistoryFix.cs.spirv.h" + #include "REBLUR_DiffuseDirectionalOcclusion_Blur.cs.spirv.h" + #include "REBLUR_DiffuseDirectionalOcclusion_TemporalStabilization.cs.spirv.h" + #include "REBLUR_DiffuseDirectionalOcclusion_PostBlur.cs.spirv.h" + #include "REBLUR_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" + + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PrePass.cs.spirv.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalAccumulation.cs.spirv.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_HistoryFix.cs.spirv.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_Blur.cs.spirv.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_TemporalStabilization.cs.spirv.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur.cs.spirv.h" + #include "REBLUR_Perf_DiffuseDirectionalOcclusion_PostBlur_NoTemporalStabilization.cs.spirv.h" + +#endif + +#include "Methods/Reblur_Diffuse.hpp" +#include "Methods/Reblur_DiffuseOcclusion.hpp" +#include "Methods/Reblur_DiffuseSh.hpp" +#include "Methods/Reblur_Specular.hpp" +#include "Methods/Reblur_SpecularOcclusion.hpp" +#include "Methods/Reblur_SpecularSh.hpp" +#include "Methods/Reblur_DiffuseSpecular.hpp" +#include "Methods/Reblur_DiffuseSpecularOcclusion.hpp" +#include "Methods/Reblur_DiffuseSpecularSh.hpp" +#include "Methods/Reblur_DiffuseDirectionalOcclusion.hpp" diff --git a/Source/Relax.cpp b/Source/Relax.cpp new file mode 100644 index 00000000..c1e957d2 --- /dev/null +++ b/Source/Relax.cpp @@ -0,0 +1,335 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "DenoiserImpl.h" + +constexpr uint32_t RELAX_MAX_ATROUS_PASS_NUM = 8; + +#define RELAX_SET_SHARED_CONSTANTS SetSharedConstants(5, 8, 7, 14) + +#define RELAX_ADD_VALIDATION_DISPATCH \ + PushPass("Validation"); \ + { \ + PushInput( AsUint(ResourceType::IN_NORMAL_ROUGHNESS) ); \ + PushInput( AsUint(ResourceType::IN_VIEWZ) ); \ + PushInput( AsUint(ResourceType::IN_MV) ); \ + PushInput( AsUint(Permanent::HISTORY_LENGTH_CURR) ); \ + PushOutput( AsUint(ResourceType::OUT_VALIDATION) ); \ + AddDispatch( RELAX_Validation, SumConstants(1, 0, 1, 1), NumThreads(16, 16), IGNORE_RS ); \ + } + +inline ml::float3 RELAX_GetFrustumForward(const ml::float4x4& viewToWorld, const ml::float4& frustum) +{ + // Note: this vector is not normalized for non-symmetric projections but that's correct. + // It has to have .z coordinate equal to 1.0 to correctly reconstruct world position in shaders. + ml::float4 frustumForwardView = ml::float4(0.5f, 0.5f, 1.0f, 0.0f) * ml::float4(frustum.z, frustum.w, 1.0f, 0.0f) + ml::float4(frustum.x, frustum.y, 0.0f, 0.0f); + ml::float3 frustumForwardWorld = (viewToWorld * frustumForwardView).To3d(); + return frustumForwardWorld; +} + +inline bool RELAX_IsCameraStatic +( + const ml::float3& cameraDelta, + const ml::float3& frustumRight, const ml::float3& frustumUp, const ml::float3& frustumForward, + const ml::float3& prevFrustumRight, const ml::float3& prevFrustumUp, const ml::float3& prevFrustumForward, float eps = ml::c_fEps +) +{ + return ml::Length(cameraDelta) < eps && ml::Length(frustumRight - prevFrustumRight) < eps && ml::Length(frustumUp - prevFrustumUp) < eps && ml::Length(frustumForward - prevFrustumForward) < eps; +} + +void nrd::DenoiserImpl::AddSharedConstants_Relax(const MethodData& methodData, Constant*& data, Method method) +{ + NRD_DECLARE_DIMS; + + // Calculate camera right and up vectors in worldspace scaled according to frustum extents, + // and unit forward vector, for fast worldspace position reconstruction in shaders + float tanHalfFov = 1.0f / m_ViewToClip.a00; + float aspect = m_ViewToClip.a00 / m_ViewToClip.a11; + ml::float3 frustumRight = m_WorldToView.GetRow0().To3d() * tanHalfFov; + ml::float3 frustumUp = m_WorldToView.GetRow1().To3d() * tanHalfFov * aspect; + ml::float3 frustumForward = RELAX_GetFrustumForward(m_ViewToWorld, m_Frustum); + + float prevTanHalfFov = 1.0f / m_ViewToClipPrev.a00; + float prevAspect = m_ViewToClipPrev.a00 / m_ViewToClipPrev.a11; + ml::float3 prevFrustumRight = m_WorldToViewPrev.GetRow0().To3d() * prevTanHalfFov; + ml::float3 prevFrustumUp = m_WorldToViewPrev.GetRow1().To3d() * prevTanHalfFov * prevAspect; + ml::float3 prevFrustumForward = RELAX_GetFrustumForward(m_ViewToWorldPrev, m_FrustumPrev); + + AddFloat4x4(data, m_WorldToClipPrev); + AddFloat4x4(data, m_WorldToViewPrev); + AddFloat4x4(data, m_WorldToClip); + AddFloat4x4(data, m_WorldPrevToWorld); + AddFloat4x4(data, m_ViewToWorld); + + AddFloat4(data, ml::float4(frustumRight.x, frustumRight.y, frustumRight.z, 0)); + AddFloat4(data, ml::float4(frustumUp.x, frustumUp.y, frustumUp.z, 0)); + AddFloat4(data, ml::float4(frustumForward.x, frustumForward.y, frustumForward.z, 0)); + AddFloat4(data, ml::float4(prevFrustumRight.x, prevFrustumRight.y, prevFrustumRight.z, 0)); + AddFloat4(data, ml::float4(prevFrustumUp.x, prevFrustumUp.y, prevFrustumUp.z, 0)); + AddFloat4(data, ml::float4(prevFrustumForward.x, prevFrustumForward.y, prevFrustumForward.z, 0)); + AddFloat4(data, ml::float4(m_CameraDelta.x, m_CameraDelta.y, m_CameraDelta.z, 0.0f)); + AddFloat4(data, ml::float4(m_CommonSettings.motionVectorScale[0], m_CommonSettings.motionVectorScale[1], m_CommonSettings.motionVectorScale[2], m_CommonSettings.debug)); + + AddFloat2(data, float(rectW) / float(screenW), float(rectH) / float(screenH)); + AddUint2(data, m_CommonSettings.inputSubrectOrigin[0], m_CommonSettings.inputSubrectOrigin[1]); + + AddFloat2(data, float(m_CommonSettings.inputSubrectOrigin[0]) / float(screenW), float(m_CommonSettings.inputSubrectOrigin[1]) / float(screenH)); + AddUint2(data, rectW, rectH); + + AddFloat2(data, 1.0f / screenW, 1.0f / screenH); + AddFloat2(data, 1.0f / rectW, 1.0f / rectH); + + AddFloat2(data, float(rectWprev), float(rectHprev)); + AddUint(data, m_CommonSettings.isMotionVectorInWorldSpace ? 1 : 0); + AddFloat(data, m_IsOrtho); + + AddFloat(data, 1.0f / (0.5f * rectH * m_ProjectY)); + AddUint(data, m_CommonSettings.frameIndex); + AddFloat(data, m_CommonSettings.denoisingRange); + AddFloat(data, ml::Clamp(16.66f / m_TimeDelta, 0.25f, 4.0f)); // Normalizing to 60 FPS + + AddFloat(data, m_CheckerboardResolveAccumSpeed); + AddFloat(data, m_JitterDelta); + switch (method) + { + case Method::RELAX_DIFFUSE: + case Method::RELAX_DIFFUSE_SH: + AddUint(data, methodData.settings.diffuseRelax.enableMaterialTest ? 1 : 0); + AddUint(data, 0); + break; + case Method::RELAX_SPECULAR: + case Method::RELAX_SPECULAR_SH: + AddUint(data, 0); + AddUint(data, methodData.settings.specularRelax.enableMaterialTest ? 1 : 0); + break; + case Method::RELAX_DIFFUSE_SPECULAR: + case Method::RELAX_DIFFUSE_SPECULAR_SH: + AddUint(data, methodData.settings.diffuseSpecularRelax.enableMaterialTestForDiffuse ? 1 : 0); + AddUint(data, methodData.settings.diffuseSpecularRelax.enableMaterialTestForSpecular ? 1 : 0); + break; + default: + // Should never get here + AddUint(data, 0); + AddUint(data, 0); + break; + } + + // 1 if m_WorldPrevToWorld should be used in shader, otherwise we can skip multiplication + AddUint(data, (m_WorldPrevToWorld != ml::float4x4::Identity()) ? 1 : 0); + AddUint(data, m_CommonSettings.accumulationMode != AccumulationMode::CONTINUE ? 1 : 0); + AddUint(data, 0); + AddUint(data, 0); +} + +#ifdef NRD_USE_PRECOMPILED_SHADERS + + // RELAX_DIFFUSE + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "RELAX_Diffuse_HitDistReconstruction.cs.dxbc.h" + #include "RELAX_Diffuse_HitDistReconstruction.cs.dxil.h" + #include "RELAX_Diffuse_HitDistReconstruction_5x5.cs.dxbc.h" + #include "RELAX_Diffuse_HitDistReconstruction_5x5.cs.dxil.h" + #include "RELAX_Diffuse_PrePass.cs.dxbc.h" + #include "RELAX_Diffuse_PrePass.cs.dxil.h" + #include "RELAX_Diffuse_TemporalAccumulation.cs.dxbc.h" + #include "RELAX_Diffuse_TemporalAccumulation.cs.dxil.h" + #include "RELAX_Diffuse_HistoryFix.cs.dxbc.h" + #include "RELAX_Diffuse_HistoryFix.cs.dxil.h" + #include "RELAX_Diffuse_HistoryClamping.cs.dxbc.h" + #include "RELAX_Diffuse_HistoryClamping.cs.dxil.h" + #include "RELAX_Diffuse_AntiFirefly.cs.dxbc.h" + #include "RELAX_Diffuse_AntiFirefly.cs.dxil.h" + #include "RELAX_Diffuse_AtrousSmem.cs.dxbc.h" + #include "RELAX_Diffuse_AtrousSmem.cs.dxil.h" + #include "RELAX_Diffuse_Atrous.cs.dxbc.h" + #include "RELAX_Diffuse_Atrous.cs.dxil.h" + #include "RELAX_Diffuse_SplitScreen.cs.dxbc.h" + #include "RELAX_Diffuse_SplitScreen.cs.dxil.h" + #include "RELAX_Validation.cs.dxbc.h" + #include "RELAX_Validation.cs.dxil.h" + #endif + + #include "RELAX_Diffuse_HitDistReconstruction.cs.spirv.h" + #include "RELAX_Diffuse_HitDistReconstruction_5x5.cs.spirv.h" + #include "RELAX_Diffuse_PrePass.cs.spirv.h" + #include "RELAX_Diffuse_TemporalAccumulation.cs.spirv.h" + #include "RELAX_Diffuse_HistoryFix.cs.spirv.h" + #include "RELAX_Diffuse_HistoryClamping.cs.spirv.h" + #include "RELAX_Diffuse_AntiFirefly.cs.spirv.h" + #include "RELAX_Diffuse_AtrousSmem.cs.spirv.h" + #include "RELAX_Diffuse_Atrous.cs.spirv.h" + #include "RELAX_Diffuse_SplitScreen.cs.spirv.h" + #include "RELAX_Validation.cs.spirv.h" + + // RELAX_DIFFUSE_SH + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "RELAX_DiffuseSh_PrePass.cs.dxbc.h" + #include "RELAX_DiffuseSh_PrePass.cs.dxil.h" + #include "RELAX_DiffuseSh_TemporalAccumulation.cs.dxbc.h" + #include "RELAX_DiffuseSh_TemporalAccumulation.cs.dxil.h" + #include "RELAX_DiffuseSh_HistoryFix.cs.dxbc.h" + #include "RELAX_DiffuseSh_HistoryFix.cs.dxil.h" + #include "RELAX_DiffuseSh_HistoryClamping.cs.dxbc.h" + #include "RELAX_DiffuseSh_HistoryClamping.cs.dxil.h" + #include "RELAX_DiffuseSh_AntiFirefly.cs.dxbc.h" + #include "RELAX_DiffuseSh_AntiFirefly.cs.dxil.h" + #include "RELAX_DiffuseSh_AtrousSmem.cs.dxbc.h" + #include "RELAX_DiffuseSh_AtrousSmem.cs.dxil.h" + #include "RELAX_DiffuseSh_Atrous.cs.dxbc.h" + #include "RELAX_DiffuseSh_Atrous.cs.dxil.h" + #include "RELAX_DiffuseSh_SplitScreen.cs.dxbc.h" + #include "RELAX_DiffuseSh_SplitScreen.cs.dxil.h" + #endif + + #include "RELAX_DiffuseSh_PrePass.cs.spirv.h" + #include "RELAX_DiffuseSh_TemporalAccumulation.cs.spirv.h" + #include "RELAX_DiffuseSh_HistoryFix.cs.spirv.h" + #include "RELAX_DiffuseSh_HistoryClamping.cs.spirv.h" + #include "RELAX_DiffuseSh_AntiFirefly.cs.spirv.h" + #include "RELAX_DiffuseSh_AtrousSmem.cs.spirv.h" + #include "RELAX_DiffuseSh_Atrous.cs.spirv.h" + #include "RELAX_DiffuseSh_SplitScreen.cs.spirv.h" + + // RELAX_SPECULAR + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "RELAX_Specular_HitDistReconstruction.cs.dxbc.h" + #include "RELAX_Specular_HitDistReconstruction.cs.dxil.h" + #include "RELAX_Specular_HitDistReconstruction_5x5.cs.dxbc.h" + #include "RELAX_Specular_HitDistReconstruction_5x5.cs.dxil.h" + #include "RELAX_Specular_PrePass.cs.dxbc.h" + #include "RELAX_Specular_PrePass.cs.dxil.h" + #include "RELAX_Specular_TemporalAccumulation.cs.dxbc.h" + #include "RELAX_Specular_TemporalAccumulation.cs.dxil.h" + #include "RELAX_Specular_HistoryFix.cs.dxbc.h" + #include "RELAX_Specular_HistoryFix.cs.dxil.h" + #include "RELAX_Specular_HistoryClamping.cs.dxbc.h" + #include "RELAX_Specular_HistoryClamping.cs.dxil.h" + #include "RELAX_Specular_AntiFirefly.cs.dxbc.h" + #include "RELAX_Specular_AntiFirefly.cs.dxil.h" + #include "RELAX_Specular_AtrousSmem.cs.dxbc.h" + #include "RELAX_Specular_AtrousSmem.cs.dxil.h" + #include "RELAX_Specular_Atrous.cs.dxbc.h" + #include "RELAX_Specular_Atrous.cs.dxil.h" + #include "RELAX_Specular_SplitScreen.cs.dxbc.h" + #include "RELAX_Specular_SplitScreen.cs.dxil.h" + #endif + + #include "RELAX_Specular_HitDistReconstruction.cs.spirv.h" + #include "RELAX_Specular_HitDistReconstruction_5x5.cs.spirv.h" + #include "RELAX_Specular_PrePass.cs.spirv.h" + #include "RELAX_Specular_TemporalAccumulation.cs.spirv.h" + #include "RELAX_Specular_HistoryFix.cs.spirv.h" + #include "RELAX_Specular_HistoryClamping.cs.spirv.h" + #include "RELAX_Specular_AntiFirefly.cs.spirv.h" + #include "RELAX_Specular_AtrousSmem.cs.spirv.h" + #include "RELAX_Specular_Atrous.cs.spirv.h" + #include "RELAX_Specular_SplitScreen.cs.spirv.h" + + // RELAX_SPECULAR_SH + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "RELAX_SpecularSh_PrePass.cs.dxbc.h" + #include "RELAX_SpecularSh_PrePass.cs.dxil.h" + #include "RELAX_SpecularSh_TemporalAccumulation.cs.dxbc.h" + #include "RELAX_SpecularSh_TemporalAccumulation.cs.dxil.h" + #include "RELAX_SpecularSh_HistoryFix.cs.dxbc.h" + #include "RELAX_SpecularSh_HistoryFix.cs.dxil.h" + #include "RELAX_SpecularSh_HistoryClamping.cs.dxbc.h" + #include "RELAX_SpecularSh_HistoryClamping.cs.dxil.h" + #include "RELAX_SpecularSh_AntiFirefly.cs.dxbc.h" + #include "RELAX_SpecularSh_AntiFirefly.cs.dxil.h" + #include "RELAX_SpecularSh_AtrousSmem.cs.dxbc.h" + #include "RELAX_SpecularSh_AtrousSmem.cs.dxil.h" + #include "RELAX_SpecularSh_Atrous.cs.dxbc.h" + #include "RELAX_SpecularSh_Atrous.cs.dxil.h" + #include "RELAX_SpecularSh_SplitScreen.cs.dxbc.h" + #include "RELAX_SpecularSh_SplitScreen.cs.dxil.h" + #endif + + #include "RELAX_SpecularSh_PrePass.cs.spirv.h" + #include "RELAX_SpecularSh_TemporalAccumulation.cs.spirv.h" + #include "RELAX_SpecularSh_HistoryFix.cs.spirv.h" + #include "RELAX_SpecularSh_HistoryClamping.cs.spirv.h" + #include "RELAX_SpecularSh_AntiFirefly.cs.spirv.h" + #include "RELAX_SpecularSh_AtrousSmem.cs.spirv.h" + #include "RELAX_SpecularSh_Atrous.cs.spirv.h" + #include "RELAX_SpecularSh_SplitScreen.cs.spirv.h" + + // RELAX_DIFFUSE_SPECULAR + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "RELAX_DiffuseSpecular_HitDistReconstruction.cs.dxbc.h" + #include "RELAX_DiffuseSpecular_HitDistReconstruction.cs.dxil.h" + #include "RELAX_DiffuseSpecular_HitDistReconstruction_5x5.cs.dxbc.h" + #include "RELAX_DiffuseSpecular_HitDistReconstruction_5x5.cs.dxil.h" + #include "RELAX_DiffuseSpecular_PrePass.cs.dxbc.h" + #include "RELAX_DiffuseSpecular_PrePass.cs.dxil.h" + #include "RELAX_DiffuseSpecular_TemporalAccumulation.cs.dxbc.h" + #include "RELAX_DiffuseSpecular_TemporalAccumulation.cs.dxil.h" + #include "RELAX_DiffuseSpecular_HistoryFix.cs.dxbc.h" + #include "RELAX_DiffuseSpecular_HistoryFix.cs.dxil.h" + #include "RELAX_DiffuseSpecular_HistoryClamping.cs.dxbc.h" + #include "RELAX_DiffuseSpecular_HistoryClamping.cs.dxil.h" + #include "RELAX_DiffuseSpecular_AntiFirefly.cs.dxbc.h" + #include "RELAX_DiffuseSpecular_AntiFirefly.cs.dxil.h" + #include "RELAX_DiffuseSpecular_AtrousSmem.cs.dxbc.h" + #include "RELAX_DiffuseSpecular_AtrousSmem.cs.dxil.h" + #include "RELAX_DiffuseSpecular_Atrous.cs.dxbc.h" + #include "RELAX_DiffuseSpecular_Atrous.cs.dxil.h" + #include "RELAX_DiffuseSpecular_SplitScreen.cs.dxbc.h" + #include "RELAX_DiffuseSpecular_SplitScreen.cs.dxil.h" + #endif + + #include "RELAX_DiffuseSpecular_HitDistReconstruction.cs.spirv.h" + #include "RELAX_DiffuseSpecular_HitDistReconstruction_5x5.cs.spirv.h" + #include "RELAX_DiffuseSpecular_PrePass.cs.spirv.h" + #include "RELAX_DiffuseSpecular_TemporalAccumulation.cs.spirv.h" + #include "RELAX_DiffuseSpecular_HistoryFix.cs.spirv.h" + #include "RELAX_DiffuseSpecular_HistoryClamping.cs.spirv.h" + #include "RELAX_DiffuseSpecular_AntiFirefly.cs.spirv.h" + #include "RELAX_DiffuseSpecular_AtrousSmem.cs.spirv.h" + #include "RELAX_DiffuseSpecular_Atrous.cs.spirv.h" + #include "RELAX_DiffuseSpecular_SplitScreen.cs.spirv.h" + + // RELAX_DIFFUSE_SPECULAR_SH + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "RELAX_DiffuseSpecularSh_PrePass.cs.dxbc.h" + #include "RELAX_DiffuseSpecularSh_PrePass.cs.dxil.h" + #include "RELAX_DiffuseSpecularSh_TemporalAccumulation.cs.dxbc.h" + #include "RELAX_DiffuseSpecularSh_TemporalAccumulation.cs.dxil.h" + #include "RELAX_DiffuseSpecularSh_HistoryFix.cs.dxbc.h" + #include "RELAX_DiffuseSpecularSh_HistoryFix.cs.dxil.h" + #include "RELAX_DiffuseSpecularSh_HistoryClamping.cs.dxbc.h" + #include "RELAX_DiffuseSpecularSh_HistoryClamping.cs.dxil.h" + #include "RELAX_DiffuseSpecularSh_AntiFirefly.cs.dxbc.h" + #include "RELAX_DiffuseSpecularSh_AntiFirefly.cs.dxil.h" + #include "RELAX_DiffuseSpecularSh_AtrousSmem.cs.dxbc.h" + #include "RELAX_DiffuseSpecularSh_AtrousSmem.cs.dxil.h" + #include "RELAX_DiffuseSpecularSh_Atrous.cs.dxbc.h" + #include "RELAX_DiffuseSpecularSh_Atrous.cs.dxil.h" + #include "RELAX_DiffuseSpecularSh_SplitScreen.cs.dxbc.h" + #include "RELAX_DiffuseSpecularSh_SplitScreen.cs.dxil.h" + #endif + + #include "RELAX_DiffuseSpecularSh_PrePass.cs.spirv.h" + #include "RELAX_DiffuseSpecularSh_TemporalAccumulation.cs.spirv.h" + #include "RELAX_DiffuseSpecularSh_HistoryFix.cs.spirv.h" + #include "RELAX_DiffuseSpecularSh_HistoryClamping.cs.spirv.h" + #include "RELAX_DiffuseSpecularSh_AntiFirefly.cs.spirv.h" + #include "RELAX_DiffuseSpecularSh_AtrousSmem.cs.spirv.h" + #include "RELAX_DiffuseSpecularSh_Atrous.cs.spirv.h" + #include "RELAX_DiffuseSpecularSh_SplitScreen.cs.spirv.h" + +#endif + +#include "Methods/Relax_Diffuse.hpp" +#include "Methods/Relax_DiffuseSh.hpp" +#include "Methods/Relax_Specular.hpp" +#include "Methods/Relax_SpecularSh.hpp" +#include "Methods/Relax_DiffuseSpecular.hpp" +#include "Methods/Relax_DiffuseSpecularSh.hpp" diff --git a/Source/Sigma.cpp b/Source/Sigma.cpp new file mode 100644 index 00000000..14cf97d1 --- /dev/null +++ b/Source/Sigma.cpp @@ -0,0 +1,185 @@ +/* +Copyright (c) 2022, NVIDIA CORPORATION. All rights reserved. + +NVIDIA CORPORATION and its licensors retain all intellectual property +and proprietary rights in and to this software, related documentation +and any modifications thereto. Any use, reproduction, disclosure or +distribution of this software and related documentation without an express +license agreement from NVIDIA CORPORATION is strictly prohibited. +*/ + +#include "DenoiserImpl.h" + +#define SIGMA_SET_SHARED_CONSTANTS SetSharedConstants(1, 2, 8, 8) + +#define SIGMA_CLASSIFY_TILES_SET_CONSTANTS SumConstants(0, 0, 0, 0) +#define SIGMA_CLASSIFY_TILES_NUM_THREADS NumThreads(1, 1) + +#define SIGMA_SMOOTH_TILES_SET_CONSTANTS SumConstants(0, 0, 1, 0) +#define SIGMA_SMOOTH_TILES_NUM_THREADS NumThreads(16, 16) + +#define SIGMA_BLUR_SET_CONSTANTS SumConstants(1, 1, 0, 0) +#define SIGMA_BLUR_NUM_THREADS NumThreads(16, 16) + +#define SIGMA_TEMPORAL_STABILIZATION_SET_CONSTANTS SumConstants(2, 0, 0, 0) +#define SIGMA_TEMPORAL_STABILIZATION_NUM_THREADS NumThreads(16, 16) + +#define SIGMA_SPLIT_SCREEN_SET_CONSTANTS SumConstants(0, 0, 0, 1) +#define SIGMA_SPLIT_SCREEN_NUM_THREADS NumThreads(16, 16) + +void nrd::DenoiserImpl::UpdateMethod_SigmaShadow(const MethodData& methodData) +{ + enum class Dispatch + { + CLASSIFY_TILES, + SMOOTH_TILES, + BLUR, + POST_BLUR, + TEMPORAL_STABILIZATION, + SPLIT_SCREEN, + }; + + const SigmaSettings& settings = methodData.settings.sigma; + + NRD_DECLARE_DIMS; + + uint16_t tilesW = DivideUp(rectW, 16); + uint16_t tilesH = DivideUp(rectH, 16); + + // SPLIT_SCREEN (passthrough) + if (m_CommonSettings.splitScreen >= 1.0f) + { + Constant* data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); + AddSharedConstants_Sigma(methodData, settings, data); + AddFloat(data, m_CommonSettings.splitScreen); + ValidateConstants(data); + + return; + } + + // CLASSIFY_TILES + Constant* data = PushDispatch(methodData, AsUint(Dispatch::CLASSIFY_TILES)); + AddSharedConstants_Sigma(methodData, settings, data); + ValidateConstants(data); + + // SMOOTH_TILES + data = PushDispatch(methodData, AsUint(Dispatch::SMOOTH_TILES)); + AddSharedConstants_Sigma(methodData, settings, data); + AddUint2(data, tilesW, tilesH); + ValidateConstants(data); + + // BLUR + data = PushDispatch(methodData, AsUint(Dispatch::BLUR)); + AddSharedConstants_Sigma(methodData, settings, data); + AddFloat4x4(data, m_WorldToView); + AddFloat4(data, m_Rotator_Blur); + ValidateConstants(data); + + // POST_BLUR + data = PushDispatch(methodData, AsUint(Dispatch::POST_BLUR)); + AddSharedConstants_Sigma(methodData, settings, data); + AddFloat4x4(data, m_WorldToView); + AddFloat4(data, m_Rotator_PostBlur); + ValidateConstants(data); + + // TEMPORAL_STABILIZATION + data = PushDispatch(methodData, AsUint(Dispatch::TEMPORAL_STABILIZATION)); + AddSharedConstants_Sigma(methodData, settings, data); + AddFloat4x4(data, m_WorldToClipPrev); + AddFloat4x4(data, m_ViewToWorld); + ValidateConstants(data); + + // SPLIT_SCREEN + if (m_CommonSettings.splitScreen > 0.0f) + { + data = PushDispatch(methodData, AsUint(Dispatch::SPLIT_SCREEN)); + AddSharedConstants_Sigma(methodData, settings, data); + AddFloat(data, m_CommonSettings.splitScreen); + ValidateConstants(data); + } +} + +void nrd::DenoiserImpl::AddSharedConstants_Sigma(const MethodData& methodData, const SigmaSettings& settings, Constant*& data) +{ + NRD_DECLARE_DIMS; + + // Even with DRS keep radius, it works well for shadows + float unproject = 1.0f / (0.5f * screenH * m_ProjectY); + + AddFloat4x4(data, m_ViewToClip); + + AddFloat4(data, m_Frustum); + AddFloat4(data, ml::float4(m_CommonSettings.motionVectorScale[0], m_CommonSettings.motionVectorScale[1], m_CommonSettings.motionVectorScale[2], m_CommonSettings.debug)); + + AddFloat2(data, 1.0f / float(screenW), 1.0f / float(screenH)); + AddFloat2(data, float(screenW), float(screenH)); + + AddFloat2(data, 1.0f / float(rectW), 1.0f / float(rectH)); + AddFloat2(data, float(rectW), float(rectH)); + + AddFloat2(data, float(rectWprev), float(rectHprev)); + AddFloat2(data, float(rectW) / float(screenW), float(rectH) / float(screenH)); + + AddFloat2(data, float(m_CommonSettings.inputSubrectOrigin[0]) / float(screenW), float(m_CommonSettings.inputSubrectOrigin[1]) / float(screenH)); + AddUint2(data, m_CommonSettings.inputSubrectOrigin[0], m_CommonSettings.inputSubrectOrigin[1]); + + AddFloat(data, m_IsOrtho); + AddFloat(data, unproject); + AddFloat(data, m_CommonSettings.denoisingRange); + AddFloat(data, settings.planeDistanceSensitivity); + + AddFloat(data, settings.blurRadiusScale); + AddFloat(data, m_CommonSettings.accumulationMode != AccumulationMode::CONTINUE ? 0.0f : 1.0f); + AddUint(data, m_CommonSettings.isMotionVectorInWorldSpace ? 1 : 0); + AddUint(data, m_CommonSettings.frameIndex); +} + +#ifdef NRD_USE_PRECOMPILED_SHADERS + + // SIGMA_SHADOW + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "SIGMA_Shadow_ClassifyTiles.cs.dxbc.h" + #include "SIGMA_Shadow_ClassifyTiles.cs.dxil.h" + #include "SIGMA_Shadow_SmoothTiles.cs.dxbc.h" + #include "SIGMA_Shadow_SmoothTiles.cs.dxil.h" + #include "SIGMA_Shadow_Blur.cs.dxbc.h" + #include "SIGMA_Shadow_Blur.cs.dxil.h" + #include "SIGMA_Shadow_PostBlur.cs.dxbc.h" + #include "SIGMA_Shadow_PostBlur.cs.dxil.h" + #include "SIGMA_Shadow_TemporalStabilization.cs.dxbc.h" + #include "SIGMA_Shadow_TemporalStabilization.cs.dxil.h" + #include "SIGMA_Shadow_SplitScreen.cs.dxbc.h" + #include "SIGMA_Shadow_SplitScreen.cs.dxil.h" + #endif + + #include "SIGMA_Shadow_ClassifyTiles.cs.spirv.h" + #include "SIGMA_Shadow_SmoothTiles.cs.spirv.h" + #include "SIGMA_Shadow_Blur.cs.spirv.h" + #include "SIGMA_Shadow_PostBlur.cs.spirv.h" + #include "SIGMA_Shadow_TemporalStabilization.cs.spirv.h" + #include "SIGMA_Shadow_SplitScreen.cs.spirv.h" + + // SIGMA_SHADOW_TRANSLUCENCY + #if !NRD_ONLY_SPIRV_SHADERS_AVAILABLE + #include "SIGMA_ShadowTranslucency_ClassifyTiles.cs.dxbc.h" + #include "SIGMA_ShadowTranslucency_ClassifyTiles.cs.dxil.h" + #include "SIGMA_ShadowTranslucency_Blur.cs.dxbc.h" + #include "SIGMA_ShadowTranslucency_Blur.cs.dxil.h" + #include "SIGMA_ShadowTranslucency_PostBlur.cs.dxbc.h" + #include "SIGMA_ShadowTranslucency_PostBlur.cs.dxil.h" + #include "SIGMA_ShadowTranslucency_TemporalStabilization.cs.dxbc.h" + #include "SIGMA_ShadowTranslucency_TemporalStabilization.cs.dxil.h" + #include "SIGMA_ShadowTranslucency_SplitScreen.cs.dxbc.h" + #include "SIGMA_ShadowTranslucency_SplitScreen.cs.dxil.h" + #endif + + #include "SIGMA_ShadowTranslucency_ClassifyTiles.cs.spirv.h" + #include "SIGMA_ShadowTranslucency_Blur.cs.spirv.h" + #include "SIGMA_ShadowTranslucency_PostBlur.cs.spirv.h" + #include "SIGMA_ShadowTranslucency_TemporalStabilization.cs.spirv.h" + #include "SIGMA_ShadowTranslucency_SplitScreen.cs.spirv.h" + +#endif + +#include "Methods/Sigma_Shadow.hpp" +#include "Methods/Sigma_ShadowTranslucency.hpp" diff --git a/Source/Wrapper.cpp b/Source/Wrapper.cpp index ecee6117..c2830b9e 100644 --- a/Source/Wrapper.cpp +++ b/Source/Wrapper.cpp @@ -33,8 +33,11 @@ constexpr std::array g_NrdSupportedMe nrd::Method::SIGMA_SHADOW, nrd::Method::SIGMA_SHADOW_TRANSLUCENCY, nrd::Method::RELAX_DIFFUSE, + nrd::Method::RELAX_DIFFUSE_SH, nrd::Method::RELAX_SPECULAR, + nrd::Method::RELAX_SPECULAR_SH, nrd::Method::RELAX_DIFFUSE_SPECULAR, + nrd::Method::RELAX_DIFFUSE_SPECULAR_SH, nrd::Method::REFERENCE, nrd::Method::SPECULAR_REFLECTION_MV, nrd::Method::SPECULAR_DELTA_MV @@ -114,8 +117,11 @@ const char* g_NrdMethodNames[] = "SIGMA_SHADOW_TRANSLUCENCY", "RELAX_DIFFUSE", + "RELAX_DIFFUSE_SH", "RELAX_SPECULAR", + "RELAX_SPECULAR_SH", "RELAX_DIFFUSE_SPECULAR", + "RELAX_DIFFUSE_SPECULAR_SH", "REFERENCE", @@ -211,7 +217,7 @@ NRD_API nrd::Result NRD_CALL nrd::CreateDenoiser(const DenoiserCreationDesc& den "license agreement from NVIDIA CORPORATION is strictly prohibited.\n" "*/\n" "\n" - "#include \"../Include/NRD.hlsli\"\n" + "#include \"NRD.hlsli\"\n" "#include \"STL.hlsli\"\n" "\n" "%s" @@ -219,18 +225,18 @@ NRD_API nrd::Result NRD_CALL nrd::CreateDenoiser(const DenoiserCreationDesc& den "%s" "%s" "\n" - "#include \"../Include/REBLUR/REBLUR_Config.hlsli\"\n" - "#include \"../Resources/REBLUR_DiffuseSpecular_%s.resources.hlsli\"\n" + "#include \"REBLUR/REBLUR_Config.hlsli\"\n" + "#include \"REBLUR_DiffuseSpecular_%s.resources.hlsli\"\n" "\n" - "#include \"../Include/Common.hlsli\"\n" + "#include \"Common.hlsli\"\n" "%s" - "#include \"../Include/REBLUR/REBLUR_DiffuseSpecular_%s.hlsli\"\n", + "#include \"REBLUR/REBLUR_DiffuseSpecular_%s.hlsli\"\n", perf == 0 ? "" : "#define REBLUR_PERFORMANCE_MODE\n", typeMacros[type], permutationMacros[permutation], passPermutation == 0 ? "" : passPermutationMacros[pass], passNames[pass], - pass == 6 ? "" : "#include \"../Include/REBLUR/REBLUR_Common.hlsli\"\n", + pass == 6 ? "" : "#include \"REBLUR/REBLUR_Common.hlsli\"\n", passNames[pass] ); fclose(fp); diff --git a/UPDATE.md b/UPDATE.md index 2824aaf9..9416e10d 100644 --- a/UPDATE.md +++ b/UPDATE.md @@ -143,4 +143,16 @@ Since *NRD* tracks specular motion, now, if requested, it can modify provided *d - *REBLUR*: - Exposed `specularProbabilityThresholdsForMvModification` to control diffuse / specular motion mixing - *RELAX*: - - Removed `enableSpecularVirtualHistoryClamping` \ No newline at end of file + - Removed `enableSpecularVirtualHistoryClamping` + +## To v4.1 + +SH (spherical harmonics) have been replaced with SG (spherical gaussians). It unlocks physically-based high quality diffuse & specular resolve. The following functions have been added to `NRD.hlsli` (or renamed): +- `NRD_SG_ExtractColor` - extracts unresolved denoised radiance +- `NRD_SG_ExtractDirection` - extracts light dominant direction +- `NRD_SG_ExtractRoughnessAA` - extracts modified roughness (increased in areas with high normal variance) +- `NRD_SG_ResolveDiffuse` - reconstructs diffuse macro details +- `NRD_SG_ResolveSpecular` - reconstructs specular macro details +- `NRD_SG_ReJitter` - reconstructs diffuse & specular micro details (resurrects jitter vanished out after denoising) +- `NRD_SH_ResolveDiffuse` - reconstructs diffuse macro details using SH resolve (for comparison only) +- `NRD_SH_ResolveSpecular` - reconstructs specular macro details using SH resolve (for comparison only) \ No newline at end of file