From a4ffd3459653c3ffeca3b7db29de58dba3062eed Mon Sep 17 00:00:00 2001 From: Tomasz Stachowiak Date: Fri, 16 Feb 2024 13:25:16 +0100 Subject: [PATCH] Prevent the spread of NaNs in the ircache --- assets/shaders/inc/reservoir.hlsl | 2 +- assets/shaders/ircache/sum_up_irradiance.hlsl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/shaders/inc/reservoir.hlsl b/assets/shaders/inc/reservoir.hlsl index 92194332..f45f5616 100644 --- a/assets/shaders/inc/reservoir.hlsl +++ b/assets/shaders/inc/reservoir.hlsl @@ -41,7 +41,7 @@ struct Reservoir1spp { } uint2 as_raw() { - return uint2(payload, pack_2x16f_uint(float2(M, W))); + return uint2(payload, pack_2x16f_uint(float2(M, max(0.0, W)))); } bool update(float w, uint sample_payload, inout uint rng) { diff --git a/assets/shaders/ircache/sum_up_irradiance.hlsl b/assets/shaders/ircache/sum_up_irradiance.hlsl index 36331e36..90e1ec68 100644 --- a/assets/shaders/ircache/sum_up_irradiance.hlsl +++ b/assets/shaders/ircache/sum_up_irradiance.hlsl @@ -75,7 +75,7 @@ void main(uint dispatch_idx: SV_DispatchThreadID) { ircache_irradiance_buf[entry_idx * IRCACHE_IRRADIANCE_STRIDE + basis_i] * frame_constants.pre_exposure_delta; - const bool should_reset = all(0.0 == prev_value); + const bool should_reset = !any(0.0 != prev_value); if (should_reset) { prev_value = new_value; }