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;
}