February, 2011

Feb 11

A few changes

I’ve just committed a batch of changes that have piled up on my machine. Most are architectural improvements plus a few bugfixes. Here is a list of changes:

  • Switched to a cleaner build system organization (1 SConscript file per directory instead of a single huge file)
  • Robustness improvements to the KD-tree construction code: it now does a better job at handling degenerate triangles
  • Switched to an epsilon-free KD-tree traversal loop based on Havran’s T_{AB}^{rec} algorithm
  • Generalization of the KD-tree construction code (now supports plugging in arbitrary tree construction heuristics)
  • Addition of some utility code (a LRU cache, adaptive Gauss-Lobatto quadrature, etc.)
  • Switched to a generic dense matrix class that supports arbitrary dimensions
  • Pixel traversal within image blocks now uses a space-filling curve ordering
  • Added support for several noise functions from PBRT
  • Cleanups of various top-level interfaces (Luminaires, Phase functions, BSDFs, Participating media, etc.)
  • Robustness improvements to the participating media code (faster + now does a better job at dielectric boundaries)
  • Added a basic tonemapping utility (can be invoked via mtsutil)