4 Comments
User's avatar
Zenith's avatar

I've noticed that nearly all 2D radiance cascade implementations I could find seem to have overlaid wave like patterns (I think someone referred to this as interference patterns in the first post). I was curious about why this is happening and if there is any way to reduce the effect.

Also I am a little puzzled on performance compared to sampling N random rays per pixel like in the first tutorial of this series (https://mini.gmshaders.com/p/yaazarai-gi).

For example if you have 6 cascades with 4 rays per pixel, isn't that about the same as sampling random 24 rays per pixel in one pass? From my tests sometimes RC runs slower than random sampling when the total ray operations match. (Big emphasis on sometimes because for some magical reason it depends on the device. On my desktop RC for the same scene runs with 40% GPU load (6 cascades) while naive rm runs 70% GPU load (24 rays) while on my laptop the same scene runs slower in RC compared to naive rm)

I agree that RC looks way better as its noiseless, but 24 random rays + blue noise + bilateral filtering (reducing noise) produces comparable results and sometimes its even better aesthetically as there are no ringing artifacts. If both implementations call the raymarch function 24 times per pixel then where is the performance difference coming from?

This might be an implementation issue on my side so I am not jumping to any conclusions but is RC supposed to be way faster?

Alex's avatar

Theres been a lot of development since the article. You can use one less cascade, you can start using more c0 rays (say 6 instead of 4), you can use different scaling factors (2x or 3x angular scaling). There's also HRC which is the pinnacle of 2D GI atm (also on my github page).

RC's performance is tunnable and so is its visual fidelity. The implementation provided here is a showcase from 2yrs ago and wasnt ever entirely meant to be a "shippable product."

Zenith's avatar

Where can one find these developments? At least for RC I was following your RC-optimized folder on Github.

I am aware of HRC, which has been on my todo list. Will there be an in depth explanation for that like this blog post or is following the README and code enough for that?

Alex's avatar

I do not provide them. If your understanding of RC is good enough re-writing the shader for your use case should be feasible. These blogs/source are a guide, not a drop in solution as every game will have different requirements and performance targets.

That said I along with many others are willing to help on XorDev's or RC discords.

I have no blog planned for HRC.