Skip to content

Commit

Permalink
v3.0.0:
Browse files Browse the repository at this point in the history
HIGHLIGHTS:

- RELAX / REBLUR: improved compatibility with path tracing
- RELAX / REBLUR: improved IQ and performance
- RELAX / REBLUR: reworked settings, exposed new settings
- REBLUR: exposed performance mode
- NRD: improved compatibility with PS5, UE and LINUX

NRD:

- NRD: improved modularization of denoisers
- NRD: shared more code between denoisers
- NRD: introduced SPECULAR_REFLECTION_MV method
- NRD: introduced DELTA_OPTIMIZATION_MV method
- NRD: improved checkerboard resolve if pre-pass is on
- NRD: minimized values in NRD_ENCODING_ERRORS
- NRD: limiting PDF to sane values, improved packing
- NRD: shaders moved into per-denoiser sub-folders
- NRD: simplified normal encoding variants to UNORM and OCT
- NRD: added UPDATE.md simplifying understanding of changes in the API and settings
- NRD: introduced NRD_HEADER_ONLY for NRD.hlsli
- NRD: added missing prefixes for COMPILER macro in NRD.hlsli
- NRD: clarified "roughness" in NRD.hlsli
- NRD: added include guards into NRD.hlsli
- NRD: updated .gitignore

REBLUR:

- REBLUR: added performance mode with real-time switch
- REBLUR: added REBLUR_RESPONSIVE_ACCUMULATION_ROUGHNESS_THRESHOLD knob
- REBLUR: added footprint stretching test
- REBLUR: exposed "ReblurSettings::inputMix"
- REBLUR: exposed "ReblurSettings::minConvergedStateBaseRadiusScale"
- REBLUR: exposed "ReblurSettings::responsiveAccumulationRoughnessThreshold"
- REBLUR: fixed specular reprojection issues for low roughness
- REBLUR: fixed imprecision problems affecting weights in temporal accumulation
- REBLUR: fixed curvature in ortho mode
- REBLUR: improved performance
- REBLUR: improved compatibility with path tracing
- REBLUR: improved "materialID" support
- REBLUR: improved prev-prev normal test for specular reprojection
- REBLUR: improved curvature angle estimation
- REBLUR: improved error estimation
- REBLUR: improved precision of internal normals
- REBLUR: improved behavior in disocclusions
- REBLUR: improved error compensation if specular confidence is low
- REBLUR: reduced mip number to 4
- REBLUR: squeezed more normal and shadow details
- REBLUR: virtual parallax taken into account
- REBLUR: compressed hit distances used for hit distance confidence
- REBLUR: removed normal weight for virtual motion (prev-prev does the same)
- REBLUR: allowed small blur for low roughness if accumulation doesn't go well
- REBLUR: reprojection improvements
- REBLUR: tuned hitT weight & virtual history acceleration
- REBLUR: standardized settings
- REBLUR: simplified debug
- REBLUR: refactoring, standardization, simplification and unification

- RELAX: added footprint stretching test
- RELAX: shader modularization
- RELAX: fixed quarter resolution
- RELAX: fixed variance calculation in A-trous shaders
- RELAX: fixed potentially problematic function overloading for "Get*WorldPos"
- RELAX: improved performance
- RELAX: improved compatibility with path tracing
- RELAX: improved "materialID" support
- RELAX: improved prev-prev normal test for specular reprojection
- RELAX: improved "skip reprojection" logic
- RELAX: improved handling of normal imprecision in reprojection
- RELAX: removed spatial variance estimation pass
- RELAX: combined spatial variance estimation and Atrous_shmem
- RELAX: implemented specular reprojection for surfaces with negative surface curvature
- RELAX: refactoring
- RELAX: minor luminance weights fixes & updates
- RELAX: refactoring, standardization, simplification and unification

- REFERENCE: introduced dedicated input / output slots
- LINUX: updated SDK generation script
- NRD INTEGRATION: updated and fixed
- CMAKE: create shader output directory during deployment
- MATHLIB: updated
- README: updated
  • Loading branch information
dzhdanNV committed Mar 21, 2022
1 parent e31b357 commit a793238
Show file tree
Hide file tree
Showing 295 changed files with 6,447 additions and 10,163 deletions.
24 changes: 13 additions & 11 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,22 @@ Makefile
# VS Code
.vscode/

# Shaders
# shaders
*.dxbc
*.dxil
*.spirv
*.dxbc.h
*.dxil.h
*.spirv.h

# Library
# ninja
.ninja_deps
.ninja_log
build.ninja
compile_commands.json
*.log

# library
*.lib
*.exp
*.dll
Expand All @@ -36,12 +43,7 @@ Makefile
*.so.*
*.manifest

# ninja
.ninja_deps
.ninja_log
build.ninja
compile_commands.json
*.log

# batch script
_NRD_SDK/
# generated folders
_Build/
_Compiler/
_NRD_SDK/
7 changes: 3 additions & 4 deletions 3-Prepare NRD SDK.bat
Original file line number Diff line number Diff line change
Expand Up @@ -27,10 +27,9 @@ if /I "%M%" neq "y" goto END

mkdir "Shaders"

copy "..\%NRD_DIR%\Source\Shaders\*" "Shaders"
copy "..\%NRD_DIR%\Source\Shaders\Include\*" "Shaders"
copy "..\%NRD_DIR%\External\MathLib\*.hlsli" "Shaders"
copy "..\%NRD_DIR%\Include\*.hlsli" "Shaders"
xcopy "..\%NRD_DIR%\Source\Shaders\" "Shaders" /s
copy "..\%NRD_DIR%\External\MathLib\*.hlsli" "Shaders\Include"
copy "..\%NRD_DIR%\Include\*.hlsli" "Shaders\Include"

:END

Expand Down
3 changes: 1 addition & 2 deletions 3-Prepare NRD SDK.sh
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,7 @@ if [[ $REPLY =~ ^[Yy]$ ]]
then
mkdir -p "Shaders"

cp ../$NRD_DIR/Source/Shaders/*.* "Shaders"
cp ../$NRD_DIR/Source/Shaders/Include/* "Shaders"
cp -r ../$NRD_DIR/Source/Shaders/ "Shaders"
cp ../$NRD_DIR/External/MathLib/*.hlsli "Shaders"
cp ../$NRD_DIR/Include/*.hlsli "Shaders"
fi
Expand Down
30 changes: 10 additions & 20 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -42,12 +42,6 @@ set(CMAKE_POSITION_INDEPENDENT_BINARIES ON)
set(CMAKE_CXX_VISIBILITY_PRESET hidden)
set(CMAKE_VISIBILITY_INLINES_HIDDEN ON)

# warning level 4 and all warnings as errors
if (MSVC)
add_compile_options(/W4 /WX)
else()
add_compile_options(-Wall -Wno-long-long -Werror)
endif()

if (NRD_DISABLE_INTERPROCEDURAL_OPTIMIZATION)
set(CMAKE_INTERPROCEDURAL_OPTIMIZATION ON)
Expand All @@ -69,21 +63,16 @@ if (NOT NRD_DISABLE_SHADER_COMPILATION)
file(GLOB_RECURSE NRD_HLSL_MATHLIB_HEADER_FILES "${NRD_MATHLIB_INCLUDE_PATH}/*.hlsli")
file(GLOB_RECURSE NRD_HLSL_INCLUDE "Include/*.hlsli")

file(MAKE_DIRECTORY ${NRD_SHADER_OUTPUT_PATH})
include(ShaderCompilation.cmake)

# create "build/Shaders"
add_custom_target(CreateFolderForShaders ALL
COMMAND ${CMAKE_COMMAND} -E make_directory "${NRD_SHADER_OUTPUT_PATH}")
set_property(TARGET CreateFolderForShaders PROPERTY FOLDER "${NRD_PROJECT_FOLDER}")

# define build rules for the shaders
list_hlsl_headers("${NRD_HLSL_FILES}" NRD_HEADER_FILES)
list_hlsl_headers("${NRD_HLSL_MATHLIB_HEADER_FILES}" NRD_HEADER_FILES)
list_hlsl_headers("${NRD_HLSL_INCLUDE}" NRD_HEADER_FILES)
list_hlsl_shaders("${NRD_HLSL_FILES}" "${NRD_HEADER_FILES}" NRD_SHADER_FILES)
add_custom_target(NrdShaders ALL DEPENDS ${NRD_SHADER_FILES} SOURCES "${NRD_HEADER_FILES}")
add_dependencies(NrdShaders CreateFolderForShaders)
set_property(TARGET NrdShaders PROPERTY FOLDER "${NRD_PROJECT_FOLDER}")
add_custom_target(NRDShaders ALL DEPENDS ${NRD_SHADER_FILES} SOURCES "${NRD_HEADER_FILES}")
set_property(TARGET NRDShaders PROPERTY FOLDER "${NRD_PROJECT_FOLDER}")
endif()

if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_SOURCE_DIR})
Expand Down Expand Up @@ -116,7 +105,7 @@ target_include_directories(${PROJECT_NAME} PUBLIC "Include" "External")
set_property(TARGET ${PROJECT_NAME} PROPERTY FOLDER "${NRD_PROJECT_FOLDER}")

if (NOT NRD_DISABLE_SHADER_COMPILATION)
add_dependencies(${PROJECT_NAME} NrdShaders)
add_dependencies(${PROJECT_NAME} NRDShaders)
endif()

if (NRD_USE_PRECOMPILED_SHADERS)
Expand All @@ -131,9 +120,7 @@ else()
target_compile_definitions(${PROJECT_NAME} PRIVATE NRD_ONLY_SPIRV_SHADERS_AVAILABLE=1)
endif()

if (NRD_STATIC_LIBRARY)
target_compile_definitions(${PROJECT_NAME} PUBLIC "NRD_API=extern \"C\"")
else()
if (NOT NRD_STATIC_LIBRARY)
if(WIN32)
target_compile_definitions(${PROJECT_NAME} PRIVATE "NRD_API=extern \"C\" __declspec(dllexport)")
else()
Expand All @@ -145,10 +132,13 @@ if ((CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64") OR (CMAKE_SYSTEM_PROCESSOR MATCHES
set(NRD_ARCHITECTURE_COMPILE_OPTIONS -msse4.1)
endif()

# warning level 4 and all warnings as errors
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
target_compile_options(${PROJECT_NAME} PRIVATE ${NRD_ARCHITECTURE_COMPILE_OPTIONS} -Wno-missing-braces -Wno-return-type-c-linkage)
target_compile_options(${PROJECT_NAME} PRIVATE ${NRD_ARCHITECTURE_COMPILE_OPTIONS} -Wextra -Werror -Wno-return-type-c-linkage)
elseif (CMAKE_CXX_COMPILER_ID MATCHES "GNU")
target_compile_options(${PROJECT_NAME} PRIVATE ${NRD_ARCHITECTURE_COMPILE_OPTIONS})
target_compile_options(${PROJECT_NAME} PRIVATE ${NRD_ARCHITECTURE_COMPILE_OPTIONS} -Wall -Werror)
elseif (MSVC)
target_compile_options(${PROJECT_NAME} PRIVATE /W4 /WX)
endif()

if (NOT NRD_IS_SUBMODULE)
Expand Down
2 changes: 1 addition & 1 deletion External/MathLib
Submodule MathLib updated 4 files
+1 −1 External/sse2neon
+30 −30 IntrinEmu.h
+2 −2 MathLib.h
+15 −6 STL.hlsli
14 changes: 9 additions & 5 deletions Include/NRD.h
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ license agreement from NVIDIA CORPORATION is strictly prohibited.
#include <cstdint>
#include <cstddef>

#define NRD_VERSION_MAJOR 2
#define NRD_VERSION_MINOR 12
#define NRD_VERSION_BUILD 2
#define NRD_VERSION_DATE "11 February 2022"
#define NRD_VERSION_MAJOR 3
#define NRD_VERSION_MINOR 0
#define NRD_VERSION_BUILD 0
#define NRD_VERSION_DATE "21 March 2022"

#if defined(_MSC_VER)
#define NRD_CALL __fastcall
Expand All @@ -44,7 +44,11 @@ license agreement from NVIDIA CORPORATION is strictly prohibited.
#endif

#ifndef NRD_API
#define NRD_API extern "C"
#if NRD_STATIC_LIBRARY
#define NRD_API
#else
#define NRD_API extern "C"
#endif
#endif

#include "NRDDescs.h"
Expand Down
Loading

0 comments on commit a793238

Please sign in to comment.