WickedEngine
WickedEngine copied to clipboard
Voxel GI improvements
Is there a way to prevent this type of artifacting?
I played with voxel size and the other GI parameters, and it did help . But it did not solve the problem entirely.
Unfortunately that is a side effect of voxelization. As you said, smaller voxel size can reduce this, but it should be infinitely small to completely avoid it which is not possible prectically. One other thing that would help it is anisotropic voxelization (voxelizing in multiple directions instead of just one). I'm not sure that I will implement it anytime soon though.
Additionally to quality improvements, it would be nice to achieve performance improvements as well with this technique. This stays at low priority feature request for now.
I tried my hand at anisotropic voxelization like 3 years ago and it gave me PTSD 😬 It's really hard to blend the different directional volumes into the same ray algorithm. If you don't do it right you end up with gaps in your geometry, especially around corners.
I ended up trying to port an antialiased line rasterization algorithm to work with raystepping. Then tried to generify it to work with elongated cell divisions. It was A) a nightmare to program and B) made rounded objects look like weird slicey messes. Though boxes looked fine and it prevented light bleed that way.
This was me having fun with voxelGI before I went crazy https://www.youtube.com/watch?v=PszzatVSnys
I am already getting a headach from these just when thinking about it. I was thinking just taking a single sample from aniso voxelization that is determined from the dominant ray direction would be enough, but I guess there could be a lot of corner cases. I can imagine that the DDA line algorithm could be interesting to try, but probably too slow. And not sure how to handle sampling between two mip levels with it. Thanks for dropping by, and nice video!