appleseed.foundation is a modern, high performance, platform-independent C++ library built out of the foundation code in appleseed. It provides infrastructure code and utilities such as command line parsing, a full set of linear algebra classes, random number generation, Monte Carlo and Quasi-Monte Carlo sampling, k-nearest neighbors search, dictionaries, string utilities, etc.
appleseed.foundation is developed with a strong focus on quality: quality of the algorithms for performance; quality of the implementation for performance, reliability and extensibility. The code is covered by more than 800 unit tests and more than 100 unit benchmarks. It's also field-tested: we used it in several products, on several platforms, on 32-bit and 64-bit architectures.
Last but not least, appleseed.foundation is distributed as a single pair of header file and source file and has no external dependencies (apart from the C++ Standard Library), making it trivial to install and use in any C++ project.
appleseed.foundation is released as open source under the very permissive MIT license.
- Low-overhead interoperability with ILM's Imath library (which is part of the OpenEXR library).
- Defined the
overridekeyword for compilers that don't yet implement C++11.
- Renamed the arbitrary-power variant of
- Improved the
- Removed the
foundation::RQMCSamplingContextsince it was mostly placeholder code.
- Changed the vector-matrix multiplication to actually right-multiply the vector instead of left-multiplying it.
foundation::PagedArraysince it was incorrect, inefficient, incomplete and unused.
foundation::StringArray(until STL containers, those can safely cross DLL boundaries).
foundation::SACacheclass that implements a set-associative cache now supports non power-of-two numbers of cache lines.
- Slightly improved the
- Some platform-specific header files are now included conditionally.
- Added dependencies required by the k-nearest neighbors (knn) code.
- Added a sample program that builds a random point cloud and performs random knn queries on it.
- The k-nearest neighbors code no longer requires nor depends on any timing functionalities.
- Removed declarations of
- Removed declaration of
- All functionalities from the foundation/utility/containers and foundation/utility/test components are now included.
- Added most of the foundation/utility/log component (everything except the console log target files).
- Added a single-threaded implementation of
foundation::Loggerto fix linking.
#defines that map
portable_[v]snprintf()to the platform's
- Initial release.