Dade wrote: ↑Mon Mar 26, 2018 10:04 pm
It is a lot faster and it works
I must admit I have still aliasing problem with sharp edges but there aren't usually a lot of sharp edges in most common heterogeneous volumes (i.e. smoke, etc.).
Just compile the latest sources and try to use an heterogeneous volume with density grid (btw, I added the OpenCL support for density grid texture too).
OpenCL support is really great. Thanks for that. I tried to implement that some time ago but only got frustrated as debugging the code was a nightmare.
It always is Anyway the winning trick was to store the density grid 3D data as a 2D image map (x projected on image x and y/z on image y). I had already in place the infrastructure to encode/transfer image maps on GPUs and everything worked flawless once I used this trick (I hadn't to write any additional code).
neo2068 wrote: ↑Tue Mar 27, 2018 7:16 am
Is there an automatic step size estimation for heterogeneous volumes?
No but the step size is now fixed (it was variable before) so if you want to render a 1 meter cube you know you are going to need a 5cm-20cm step size. It is not hard to setup once you know the step size in expressed in a real world unit.
neo2068 wrote: ↑Tue Mar 27, 2018 7:16 am
Aliasing was bad with the old code, too, and multiple scattering volumes wasn't as bright as rendered with other renderers. I have to try it.
Single scatter:
Multi-scattering
It is also so much faster, multi-scattering at 9M samples/secs:
Support LuxCoreRender project with salts and bounties
edit: their nomenclature is a bit weird, I think with "primary bounces" they mean the first indirect bounce, and with "secondary bounces" all following bounces.
Maybe this image shows it: https://docs.chaosgroup.com/display/VR2R/Brute+Force+GI