appleseed icon indicating copy to clipboard operation
appleseed copied to clipboard

Refactor volumes, add Rayleigh phase function, fix some bugs

Open biart opened this issue 5 years ago • 1 comments

Rework of volume rendering, including:

  • Remove RayTracer::march method and treat volume scattering events in an uniform way with the other types of bounces.
  • Remove the possibility of several distance samples per ray. It was used to provide a way to reduce sampling variance for scenes with fog while making each ray more computationally heavy. This was removed in favor of tracing more rays as it is more efficient for complex scenes and fits to the fashion of modern path tracers like appleseed, as well as to drastically simplify the lighting code. Equiangular sampling still remains as an example of usage of the new volume API and for reducing the noise for single-scattering homogeneous media. However, it is now set as disabled by default, since it is less efficient for small enclosed volumes (Multiple scattering is the main option to move further and if we want to enhance it for fog rendering, we have to look for more advanced importance sampling methods)
  • Remove MaterialSampler as it is not needed anymore. Add BSDF wrapper for phase functions.
  • FINALLY completely removed chromatic fireflies for multiple scattering. =)

Additionally:

  • Rayleigh phase function was added for media with small particles (as more physically accurate version of isotropic scattering)
  • Volumes can now be rendered even if the camera is enclosed inside them (solve #2057)
  • Solve #2287
  • Solves bug when the glass absorption is not fully accounted when there are lights behind glass: Before: before After: after No absorption: no_absorption Scene (compare with no nee): incorrect_glass_transmittance_light_behind.zip

biart avatar Jan 08 '19 15:01 biart

It looks like some reference images are much more noisy than before. Why?

dictoon avatar Feb 10 '19 01:02 dictoon