1) if you have a "world" (i.e. empty space) volume defined it leads to a huge amount of computations (like if there was a scattering media) just to produce a 0.0 (i.e. nothing, nada, niente);
2) the expf() is widely used across SingleScattering/MultiScattering volume integrator and it is extremely slow. This is a know problem of expf() however it is even more annoying to wast time for computing expf(0.0) because the result is 1.0, no matter how you turn it.
You can partially avoid this problem by not defining a "world" volume however I think is handy to have NoneScattering volume integrator in order to have the best performance no matter how your scene is defined.
This is LuxBall5 rendered with Hybrid BiDir and SingleScattering:
This is LuxBall5 rendered with Hybrid BiDir and NoneScattering:
In this particular case, NoneScattering produces exactly the same output of SingleScattering but it is about a 40% faster
Even no hybrid rendering benefits from NoneScattering. This normal BiDir with SingleScattering:
This normal BiDir with NoneScattering:
Again, it is about a 40% faster.
Indeed, with NoneScattering, you loose the support for stuff like SSS and media scattering but by using NoneScattering you are sure to achieve max. performance if you don't need that features. As explained, you can observe a large speedup with NoneScattering only if you were defining a "world" volume.
