Skip to content
Renderer and BVH traversal library
C++ CMake Cuda Shell Python C
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
benchmarks New results Apr 16, 2019
cmake Add test for rodent itself Jun 14, 2019
refs Added references Apr 29, 2019
src Add test for rodent itself Jun 14, 2019
testing Add test for rodent itself Jun 14, 2019
tools Add test for rodent itself Jun 14, 2019
.gitignore Shading benchmark Dec 19, 2018
CMakeLists.txt Add test for rodent itself Jun 14, 2019 Improve testability Jun 11, 2019


Rodent is a BVH traversal library and renderer implemented using the AnyDSL compiler framework (


The dependencies are: CMake, AnyDSL, libpng, SDL2, and optionally the Embree sources for the benchmarking tools. Once the dependencies are installed, use the following commands to build the project:

mkdir build
cd build
# Set the OBJ file to use with the SCENE_FILE variable
# By default, SCENE_FILE=../testing/cornell_box.obj
cmake .. -DSCENE_FILE=myfile.obj
# Optional: Create benchmarking tools for Embree and BVH extractor tools
# cmake .. -DEMBREE_ROOT_DIR=<path to Embree sources>


This section assumes that the current directory is the build directory. To run rodent, just type:


You may want to change the initial camera parameters using the command line options --eye, --dir and --up. Run bin/rodent --help to get a full list of options.

When ImageMagick is found by Cmake, use the following commands to test the traversal code with the provided test scene:

make test

This will only test the primary ray distribution with the packet, single, and hybrid variants. To test all possible combinations, or if you do not have ImageMagick installed, use the benchmarking tool directly:

bin/bench_traversal -bvh ../testing/sponza.bvh -ray ../testing/sponza-primary.rays --bench 50 --warmup 10 --tmax 5000 -o output-hybrid-primary.fbuf
bin/bench_traversal -bvh ../testing/sponza.bvh -ray ../testing/sponza-primary.rays --bench 50 --warmup 10 --tmax 5000 -s -o output-single-primary.fbuf
bin/bench_traversal -bvh ../testing/sponza.bvh -ray ../testing/sponza-random.rays --bench 50 --warmup 10 --tmax 1 -o output-hybrid-random.fbuf
bin/bench_traversal -bvh ../testing/sponza.bvh -ray ../testing/sponza-random.rays --bench 50 --warmup 10 --tmax 1 -s -o output-single-random.fbuf
bin/fbuf2png -n output-hybrid-primary.fbuf output-hybrid-primary.png
bin/fbuf2png -n output-single-primary.fbuf output-single-primary.png
bin/fbuf2png -n output-hybrid-random.fbuf output-hybrid-random.png
bin/fbuf2png -n output-single-random.fbuf output-single-random.png

This will run the traversal on the test set, and generate images as a result. For the primary ray distribution, the hybrid and single variants should generate the same images. The reference images for primary and random rays are in the testing directory.

Running bin/bench_traversal --help will provide a list of additional options.

You can’t perform that action at this time.