Skip to content
Snippets Groups Projects
Verified Commit aa2c1e3e authored by Tobias Frisch's avatar Tobias Frisch
Browse files

Adjusted code to use sample shaders from other submodules

parent 470c2f42
Branches
No related tags found
1 merge request!114Draft: Resolve "Denoising Module"
Showing
with 53 additions and 264 deletions
...@@ -52,3 +52,9 @@ ...@@ -52,3 +52,9 @@
[submodule "modules/denoising/lib/FidelityFX-Denoiser"] [submodule "modules/denoising/lib/FidelityFX-Denoiser"]
path = modules/denoising/lib/FidelityFX-Denoiser path = modules/denoising/lib/FidelityFX-Denoiser
url = https://github.com/GPUOpen-Effects/FidelityFX-Denoiser.git url = https://github.com/GPUOpen-Effects/FidelityFX-Denoiser.git
[submodule "modules/denoising/lib/FidelityFX-SSSR"]
path = modules/denoising/lib/FidelityFX-SSSR
url = https://github.com/GPUOpen-Effects/FidelityFX-SSSR.git
[submodule "modules/denoising/lib/Hybrid-Shadows"]
path = modules/denoising/lib/Hybrid-Shadows
url = https://github.com/GPUOpen-Effects/Hybrid-Shadows.git
...@@ -33,27 +33,6 @@ add_compile_definitions(${vkcv_denoising_definitions}) ...@@ -33,27 +33,6 @@ add_compile_definitions(${vkcv_denoising_definitions})
set(vkcv_denoising_shaders ${PROJECT_SOURCE_DIR}/shaders) set(vkcv_denoising_shaders ${PROJECT_SOURCE_DIR}/shaders)
include_shader(${vkcv_denoising_shaders}/reflectionDenoiser_prefilter.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
include_shader(${vkcv_denoising_shaders}/reflectionDenoiser_reproject.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
include_shader(${vkcv_denoising_shaders}/reflectionDenoiser_resolveTemporal.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
include_shader(${vkcv_denoising_shaders}/shadowDenoiser_filter.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
include_shader(${vkcv_denoising_shaders}/shadowDenoiser_prepare.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
include_shader(${vkcv_denoising_shaders}/shadowDenoiser_tileClassification.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/reflectionDenoiser_prefilter.hlsl.cxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/reflectionDenoiser_reproject.hlsl.cxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/reflectionDenoiser_resolveTemporal.hlsl.cxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/shadowDenoiser_filter.hlsl.cxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/shadowDenoiser_prepare.hlsl.cxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/shadowDenoiser_tileClassification.hlsl.cxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_include}/reflectionDenoiser_prefilter.hlsl.hxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_include}/reflectionDenoiser_reproject.hlsl.hxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_include}/reflectionDenoiser_resolveTemporal.hlsl.hxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_include}/shadowDenoiser_filter.hlsl.hxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_include}/shadowDenoiser_prepare.hlsl.hxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_include}/shadowDenoiser_tileClassification.hlsl.hxx)
# adding source files to the project # adding source files to the project
add_library(vkcv_denoising ${vkcv_build_attribute} ${vkcv_denoising_sources}) add_library(vkcv_denoising ${vkcv_build_attribute} ${vkcv_denoising_sources})
set_target_properties(vkcv_denoising PROPERTIES PUBLIC_HEADER "${vkcv_denoising_headers}") set_target_properties(vkcv_denoising PROPERTIES PUBLIC_HEADER "${vkcv_denoising_headers}")
......
...@@ -24,3 +24,29 @@ if (${ffx_denoiser_status}) ...@@ -24,3 +24,29 @@ if (${ffx_denoiser_status})
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/ffx_denoiser_reflections_reproject.h.cxx) list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/ffx_denoiser_reflections_reproject.h.cxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/ffx_denoiser_reflections_resolve_temporal.h.cxx) list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/ffx_denoiser_reflections_resolve_temporal.h.cxx)
endif () endif ()
use_git_submodule("${vkcv_denoising_lib_path}/Hybrid-Shadows" ffx_denoiser_shadows_status)
if (${ffx_denoiser_shadows_status})
include_shader(${vkcv_denoising_lib_path}/Hybrid-Shadows/src/Shaders/filter_soft_shadows_pass_d3d12.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
include_shader(${vkcv_denoising_lib_path}/Hybrid-Shadows/src/Shaders/prepare_shadow_mask_d3d12.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
include_shader(${vkcv_denoising_lib_path}/Hybrid-Shadows/src/Shaders/tile_classification_d3d12.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/filter_soft_shadows_pass_d3d12.hlsl.cxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/prepare_shadow_mask_d3d12.hlsl.cxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/tile_classification_d3d12.hlsl.cxx)
endif()
use_git_submodule("${vkcv_denoising_lib_path}/FidelityFX-SSSR" ffx_denoiser_reflections_status)
if (${ffx_denoiser_reflections_status})
include_shader(${vkcv_denoising_lib_path}/FidelityFX-SSSR/sample/src/Shaders/Common.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
include_shader(${vkcv_denoising_lib_path}/FidelityFX-SSSR/sample/src/Shaders/Prefilter.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
include_shader(${vkcv_denoising_lib_path}/FidelityFX-SSSR/sample/src/Shaders/Reproject.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
include_shader(${vkcv_denoising_lib_path}/FidelityFX-SSSR/sample/src/Shaders/ResolveTemporal.hlsl ${vkcv_denoising_include} ${vkcv_denoising_source})
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/Common.hlsl.cxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/Prefilter.hlsl.cxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/Reproject.hlsl.cxx)
list(APPEND vkcv_denoising_sources ${vkcv_denoising_source}/ResolveTemporal.hlsl.cxx)
endif()
Subproject commit 34dcacd1feefcfab2855b82e76c7d711f2020a75
Subproject commit 0cf18422a73eda8b4a23870091372a7717387f3e
void FFX_DNSR_Reflections_LoadNeighborhood(
int2 pixel_coordinate,
out min16float3 radiance,
out min16float variance,
out min16float3 normal,
out float depth,
int2 screen_size) {
// TODO: access image or buffer?
}
min16float FFX_DNSR_Reflections_LoadRoughness(int2 id) {
return min16float(0.0f); // TODO: access image or buffer?
}
bool FFX_DNSR_Reflections_IsGlossyReflection(min16float roughness) {
return false; // TODO: access image or buffer?
}
bool FFX_DNSR_Reflections_IsMirrorReflection(min16float roughness) {
return false; // TODO: access image or buffer?
}
min16float FFX_DNSR_Reflections_SampleAverageRadiance(float2 uv8) {
return min16float(0.0f); // TODO: access image or buffer?
}
void FFX_DNSR_Reflections_StorePrefilteredReflections(
int2 id,
min16float3 radiance,
min16float variance) {
// TODO: access image or buffer?
}
#include "ffx_denoiser_reflections_prefilter.h"
[numthreads(8, 8, 1)]
void main(int2 group_thread_id : SV_GroupThreadID,
uint group_index : SV_GroupIndex,
uint group_id : SV_GroupID) {
}
#include "ffx_denoiser_reflections_reproject.h"
[numthreads(8, 8, 1)]
void main(int2 group_thread_id : SV_GroupThreadID,
uint group_index : SV_GroupIndex,
uint group_id : SV_GroupID) {
}
#include "ffx_denoiser_reflections_resolve_temporal.h"
[numthreads(8, 8, 1)]
void main(int2 group_thread_id : SV_GroupThreadID,
uint group_index : SV_GroupIndex,
uint group_id : SV_GroupID) {
}
typedef float2 float16_t2;
typedef float3 float16_t3;
int2 FFX_DNSR_Shadows_GetBufferDimensions() {
return int2(0, 0); // TODO: return buffer dimensions?
}
float2 FFX_DNSR_Shadows_GetInvBufferDimensions() {
return float2(0, 0); // TODO: return inverse buffer dimensions?
}
float16_t3 FFX_DNSR_Shadows_ReadNormals(int2 p) {
return float16_t3(0, 0, 0); // TODO: access image or buffer?
}
float16_t2 FFX_DNSR_Shadows_ReadInput(int2 p) {
return float16_t2(0, 0); // TODO: access image or buffer?
}
float FFX_DNSR_Shadows_ReadDepth(int2 p) {
return 0; // TODO: access image or buffer?
}
float4x4 FFX_DNSR_Shadows_GetProjectionInverse() {
return float4x4(0); // TODO: return projection inverse?
}
float FFX_DNSR_Shadows_GetDepthSimilaritySigma() {
return 0; // TODO: use proper sigma?
}
bool FFX_DNSR_Shadows_IsShadowReciever(uint2 did) {
return false; // TODO: access image or buffer?
}
uint FFX_DNSR_Shadows_ReadTileMetaData(uint id) {
return 0; // TODO: access image or buffer?
}
#include "ffx_denoiser_shadows_filter.h"
[numthreads(8, 8, 1)]
void main(int2 group_thread_id : SV_GroupThreadID,
uint group_index : SV_GroupIndex,
uint group_id : SV_GroupID) {
// TODO: remapping ids to optimization?
uint2 did = uint2(0, 0);
bool bWriteResults = false;
const uint pass = 0;
const uint stepsize = 0;
FFX_DNSR_Shadows_FilterSoftShadowsPass(
uint2(group_index, group_id),
uint2(group_thread_id),
did,
bWriteResults,
pass,
stepsize
);
}
uint2 FFX_DNSR_Shadows_GetBufferDimensions() {
return uint2(0, 0); // TODO: return buffer dimensions?
}
bool FFX_DNSR_Shadows_HitsLight(uint2 did, uint2 gtid, uint2 gid) {
return false; // TODO: access image or buffer?
}
void FFX_DNSR_Shadows_WriteMask(uint linear_tile_index, uint active_bits) {
// TODO: write to buffer?
}
#include "ffx_denoiser_shadows_prepare.h"
[numthreads(8, 8, 1)]
void main(int2 group_thread_id : SV_GroupThreadID,
uint group_index : SV_GroupIndex,
uint group_id : SV_GroupID) {
// TODO: remapping ids to optimization?
FFX_DNSR_Shadows_PrepareShadowMask(group_thread_id, group_id);
}
int2 FFX_DNSR_Shadows_GetBufferDimensions() {
return int2(0, 0); // TODO: return buffer dimensions?
}
float2 FFX_DNSR_Shadows_GetInvBufferDimensions() {
return float2(0, 0); // TODO: return inverse buffer dimensions?
}
uint FFX_DNSR_Shadows_ReadRaytracedShadowMask(uint linear_tile_index) {
return 0; // TODO: access image or buffer?
}
float4x4 FFX_DNSR_Shadows_GetProjectionInverse() {
return float4x4(0); // TODO: return projection inverse?
}
float4x4 FFX_DNSR_Shadows_GetViewProjectionInverse() {
return float4x4(0); // TODO: return view-projection inverse?
}
float3 FFX_DNSR_Shadows_ReadNormals(int2 p) {
return float3(0, 0, 0); // TODO: access image or buffer?
}
float2 FFX_DNSR_Shadows_ReadVelocity(int2 did) {
return float2(0, 0); // TODO: access image or buffer?
}
float4x4 FFX_DNSR_Shadows_GetReprojectionMatrix() {
return float4x4(0); // TODO: return reprojection?
}
float4 FFX_DNSR_Shadows_GetEye() {
return float4(0); // TODO: return eye?
}
float FFX_DNSR_Shadows_ReadPreviousDepth(int2 idx) {
return 0; // TODO: access image or buffer?
}
void FFX_DNSR_Shadows_WriteMetadata(uint id, uint mask) {
// TODO: access image or buffer?
}
void FFX_DNSR_Shadows_WriteReprojectionResults(uint2 did, float2 results) {
// TODO: access image or buffer? (results = mean, variance)
}
void FFX_DNSR_Shadows_WriteMoments(uint2 did, float3 moments) {
// TODO: access image or buffer? (results = mean, variance, temporal sample count)
}
bool FFX_DNSR_Shadows_IsShadowReciever(uint2 did) {
return false; // TODO: access image or buffer?
}
float FFX_DNSR_Shadows_ReadDepth(uint2 did) {
return 0.0f; // TODO: access image or buffer?
}
float3 FFX_DNSR_Shadows_ReadPreviousMomentsBuffer(int2 pos) {
return float3(0.0f); // TODO: access image or buffer?
}
float FFX_DNSR_Shadows_ReadHistory(float2 uv) {
return 0.0f; // TODO: access image or buffer?
}
bool FFX_DNSR_Shadows_IsFirstFrame() {
return false; // TODO: do not guess?
}
#include "ffx_denoiser_shadows_tileclassification.h"
[numthreads(8, 8, 1)]
void main(int2 group_thread_id : SV_GroupThreadID,
uint group_index : SV_GroupIndex,
uint group_id : SV_GroupID) {
// TODO: remapping ids to optimization?
FFX_DNSR_Shadows_TileClassification(group_index, uint2(group_id, 0));
}
...@@ -10,9 +10,10 @@ ...@@ -10,9 +10,10 @@
#include "ffx_denoiser_reflections_reproject.h.hxx" #include "ffx_denoiser_reflections_reproject.h.hxx"
#include "ffx_denoiser_reflections_resolve_temporal.h.hxx" #include "ffx_denoiser_reflections_resolve_temporal.h.hxx"
#include "reflectionDenoiser_prefilter.hlsl.hxx" #include "Common.hlsl.hxx"
#include "reflectionDenoiser_reproject.hlsl.hxx" #include "Prefilter.hlsl.hxx"
#include "reflectionDenoiser_resolveTemporal.hlsl.hxx" #include "Reproject.hlsl.hxx"
#include "ResolveTemporal.hlsl.hxx"
namespace vkcv::denoising { namespace vkcv::denoising {
...@@ -44,11 +45,12 @@ namespace vkcv::denoising { ...@@ -44,11 +45,12 @@ namespace vkcv::denoising {
ShaderProgram program; ShaderProgram program;
compiler.compileSourceWithHeaders( compiler.compileSourceWithHeaders(
vkcv::ShaderStage::COMPUTE, vkcv::ShaderStage::COMPUTE,
REFLECTIONDENOISER_PREFILTER_HLSL_SHADER, PREFILTER_HLSL_SHADER,
{ {
{ "ffx_denoiser_reflections_common.h", FFX_DENOISER_REFLECTIONS_COMMON_H_SHADER }, { "ffx_denoiser_reflections_common.h", FFX_DENOISER_REFLECTIONS_COMMON_H_SHADER },
{ "ffx_denoiser_reflections_config.h", FFX_DENOISER_REFLECTIONS_CONFIG_H_SHADER }, { "ffx_denoiser_reflections_config.h", FFX_DENOISER_REFLECTIONS_CONFIG_H_SHADER },
{ "ffx_denoiser_reflections_prefilter.h", FFX_DENOISER_REFLECTIONS_PREFILTER_H_SHADER } { "ffx_denoiser_reflections_prefilter.h", FFX_DENOISER_REFLECTIONS_PREFILTER_H_SHADER },
{ "Common.hlsl", COMMON_HLSL_SHADER }
}, },
[&program](vkcv::ShaderStage shaderStage, [&program](vkcv::ShaderStage shaderStage,
const std::filesystem::path& path) { const std::filesystem::path& path) {
...@@ -68,11 +70,12 @@ namespace vkcv::denoising { ...@@ -68,11 +70,12 @@ namespace vkcv::denoising {
ShaderProgram program; ShaderProgram program;
compiler.compileSourceWithHeaders( compiler.compileSourceWithHeaders(
vkcv::ShaderStage::COMPUTE, vkcv::ShaderStage::COMPUTE,
REFLECTIONDENOISER_REPROJECT_HLSL_SHADER, REPROJECT_HLSL_SHADER,
{ {
{ "ffx_denoiser_reflections_common.h", FFX_DENOISER_REFLECTIONS_COMMON_H_SHADER }, { "ffx_denoiser_reflections_common.h", FFX_DENOISER_REFLECTIONS_COMMON_H_SHADER },
{ "ffx_denoiser_reflections_config.h", FFX_DENOISER_REFLECTIONS_CONFIG_H_SHADER }, { "ffx_denoiser_reflections_config.h", FFX_DENOISER_REFLECTIONS_CONFIG_H_SHADER },
{ "ffx_denoiser_reflections_reproject.h", FFX_DENOISER_REFLECTIONS_REPROJECT_H_SHADER } { "ffx_denoiser_reflections_reproject.h", FFX_DENOISER_REFLECTIONS_REPROJECT_H_SHADER },
{ "Common.hlsl", COMMON_HLSL_SHADER }
}, },
[&program](vkcv::ShaderStage shaderStage, [&program](vkcv::ShaderStage shaderStage,
const std::filesystem::path& path) { const std::filesystem::path& path) {
...@@ -92,11 +95,12 @@ namespace vkcv::denoising { ...@@ -92,11 +95,12 @@ namespace vkcv::denoising {
ShaderProgram program; ShaderProgram program;
compiler.compileSourceWithHeaders( compiler.compileSourceWithHeaders(
vkcv::ShaderStage::COMPUTE, vkcv::ShaderStage::COMPUTE,
REFLECTIONDENOISER_RESOLVETEMPORAL_HLSL_SHADER, RESOLVETEMPORAL_HLSL_SHADER,
{ {
{ "ffx_denoiser_reflections_common.h", FFX_DENOISER_REFLECTIONS_COMMON_H_SHADER }, { "ffx_denoiser_reflections_common.h", FFX_DENOISER_REFLECTIONS_COMMON_H_SHADER },
{ "ffx_denoiser_reflections_config.h", FFX_DENOISER_REFLECTIONS_CONFIG_H_SHADER }, { "ffx_denoiser_reflections_config.h", FFX_DENOISER_REFLECTIONS_CONFIG_H_SHADER },
{ "ffx_denoiser_reflections_resolve_temporal.h", FFX_DENOISER_REFLECTIONS_RESOLVE_TEMPORAL_H_SHADER } { "ffx_denoiser_reflections_resolve_temporal.h", FFX_DENOISER_REFLECTIONS_RESOLVE_TEMPORAL_H_SHADER },
{ "Common.hlsl", COMMON_HLSL_SHADER }
}, },
[&program](vkcv::ShaderStage shaderStage, [&program](vkcv::ShaderStage shaderStage,
const std::filesystem::path& path) { const std::filesystem::path& path) {
......
...@@ -9,9 +9,9 @@ ...@@ -9,9 +9,9 @@
#include "ffx_denoiser_shadows_tileclassification.h.hxx" #include "ffx_denoiser_shadows_tileclassification.h.hxx"
#include "ffx_denoiser_shadows_util.h.hxx" #include "ffx_denoiser_shadows_util.h.hxx"
#include "shadowDenoiser_filter.hlsl.hxx" #include "filter_soft_shadows_pass_d3d12.hlsl.hxx"
#include "shadowDenoiser_prepare.hlsl.hxx" #include "prepare_shadow_mask_d3d12.hlsl.hxx"
#include "shadowDenoiser_tileClassification.hlsl.hxx" #include "tile_classification_d3d12.hlsl.hxx"
namespace vkcv::denoising { namespace vkcv::denoising {
...@@ -43,7 +43,7 @@ namespace vkcv::denoising { ...@@ -43,7 +43,7 @@ namespace vkcv::denoising {
ShaderProgram program; ShaderProgram program;
compiler.compileSourceWithHeaders( compiler.compileSourceWithHeaders(
vkcv::ShaderStage::COMPUTE, vkcv::ShaderStage::COMPUTE,
SHADOWDENOISER_FILTER_HLSL_SHADER, FILTER_SOFT_SHADOWS_PASS_D3D12_HLSL_SHADER,
{ {
{ "ffx_denoiser_shadows_filter.h", FFX_DENOISER_SHADOWS_FILTER_H_SHADER }, { "ffx_denoiser_shadows_filter.h", FFX_DENOISER_SHADOWS_FILTER_H_SHADER },
{ "ffx_denoiser_shadows_util.h", FFX_DENOISER_SHADOWS_UTIL_H_SHADER } { "ffx_denoiser_shadows_util.h", FFX_DENOISER_SHADOWS_UTIL_H_SHADER }
...@@ -66,7 +66,7 @@ namespace vkcv::denoising { ...@@ -66,7 +66,7 @@ namespace vkcv::denoising {
ShaderProgram program; ShaderProgram program;
compiler.compileSourceWithHeaders( compiler.compileSourceWithHeaders(
vkcv::ShaderStage::COMPUTE, vkcv::ShaderStage::COMPUTE,
SHADOWDENOISER_PREPARE_HLSL_SHADER, PREPARE_SHADOW_MASK_D3D12_HLSL_SHADER,
{ {
{ "ffx_denoiser_shadows_prepare.h", FFX_DENOISER_SHADOWS_PREPARE_H_SHADER }, { "ffx_denoiser_shadows_prepare.h", FFX_DENOISER_SHADOWS_PREPARE_H_SHADER },
{ "ffx_denoiser_shadows_util.h", FFX_DENOISER_SHADOWS_UTIL_H_SHADER } { "ffx_denoiser_shadows_util.h", FFX_DENOISER_SHADOWS_UTIL_H_SHADER }
...@@ -89,7 +89,7 @@ namespace vkcv::denoising { ...@@ -89,7 +89,7 @@ namespace vkcv::denoising {
ShaderProgram program; ShaderProgram program;
compiler.compileSourceWithHeaders( compiler.compileSourceWithHeaders(
vkcv::ShaderStage::COMPUTE, vkcv::ShaderStage::COMPUTE,
SHADOWDENOISER_TILECLASSIFICATION_HLSL_SHADER, TILE_CLASSIFICATION_D3D12_HLSL_SHADER,
{ {
{ "ffx_denoiser_shadows_tileclassification.h", FFX_DENOISER_SHADOWS_TILECLASSIFICATION_H_SHADER }, { "ffx_denoiser_shadows_tileclassification.h", FFX_DENOISER_SHADOWS_TILECLASSIFICATION_H_SHADER },
{ "ffx_denoiser_shadows_util.h", FFX_DENOISER_SHADOWS_UTIL_H_SHADER } { "ffx_denoiser_shadows_util.h", FFX_DENOISER_SHADOWS_UTIL_H_SHADER }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment