Open utterances-bot opened 4 years ago
Thanks Alain, currently writing a basic game engine with sparse voxel octrees...having all of this information in one place is absurdly helpful.
Thanks Alain, excellent post. Just a quick typo correction, I found a line that says this, where it should say 7x7 Gaussian Kernel.
int radius = 3; // ⚪ 3x3 Gaussian Kernel
When I read further up that denoisers use a 3x3 kernel 5 times, it sounds like an affordable amount of work, especially if they can all be done within a single compute shader. However, does this typo imply that it is actually a 7x7 kernel, 5 times? If so it's a lot more expensive, so it's worth clarifying.
Thanks @redorav, you're right, that example is a 7x7 kernel, I went ahead and updated that section to reflect this, thanks so much!
Thanks for this great post! It's definitely gold for people who want to improve their naive path tracer's performance(YES THAT'S ME)
thanks for this excellent survey of techniques. i appreciate the amount of work that must have gone into preparing this. and on top of that you also made it quite slick looking!
looking over the code examples, i found a couple spots that look like typos, though.
in the clamp rejection code snippet, return max(radiance, maxRadiance);
, should the max be min instead?
ray tracing gems section 17.3 gives the following example on clamping for fireflies, c' = min(c,t)
in several examples of filtering across some kernal in x and y, there's a check to skip the center pixel.
if (xx != 0 || yy != 0) { continue; }
which i read as "if x isn't zero, or y isn't zero, skip." but it seems like you only want to skip the opposite case, where both x and y are zero.
Great post, thank you. Just a small issue, i think something got messed up in the HLSL code snippet:
float histlen = tHistoryLength, ipos, 0).r; <- something ate the .Load() there
Ray Tracing Denoising
Alain Galván is an Engineer @ Marmoset.co, here's his personal portfolio focused on 🛆 Computer Graphics, 🎨 Art & 🎹🎸 Audio Design/Engineering.
https://alain.xyz/