Samplin' Safari is a research tool to visualize and interactively inspect high-dimensional (quasi) Monte Carlo samplers.
It was initially developed as part of the publication:
Orthogonal Array Sampling for Monte Carlo Rendering
Wojciech Jarosz, Afnan Enayet, Andrew Kensler, Charlie Kilpatrick, Per Christensen
In Computer Graphics Forum (Proceedings of EGSR), 38(4), July 2019
Project page PDF
and now released under the 3-clause BSD license. For details, see the LICENSE file.
- Independent random
- Regular grid and Jittered
- (Correlated) Multi-jittered
- Orthogonal Arrays
- N-Rooks (Latin hypercubes)
- Sobol'
- XORed/shuffled (0,2) sequence
- Halton (Zaremba)
- Hammersley (Zaremba)
- Larcher-Pillischammer (with Gruenschloss-Keller extension to 3D)
- interactively switching samplers, setting number of samples, dimensions, and various sampler parameters
- 3D and 2D orthographic views for X, Y and Z dimensions
- view of all 2D projections (useful for high-dimensional samples)
- custom mapping of any (higher) dimensions to X, Y or Z
- save all of these views as vector EPS files
- show point index and point coordinates
- show stratification grids
- displaying only a subset of points, either by subsetting on sample index, or sample coordinates.
Compiling requires CMake and a C++11 toolchain. Primary development in on macOS, but the code should also successfully compile on Linux and Windows.
On macOS and Linux, compiling should be as simple as
git clone --recursive https://github.com/wkjarosz/SamplinSafari.git
cd SamplinSafari
mkdir build
cd build
cmake ../
make -j 4
Samplin' Safari was primarily developed by Wojciech Jarosz with additions from Afnan Enayet.
The code depends on the following libraries (which are included as git submodules in the ext
subdirectory):
- NanoGUI, which is available under a BSD-style license.
- galois++, which is available under a BSD-style license.
- pcg32, which is available under the Apache License.
- tinyformat, which is available under the Boost Software License.
Several of the orthogonal array constructions are adapted from Art Owen's code in Statlib.
The Halton and Sobol samplers use code from Leonhard Grünschloß.