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)