Physically-based spectral rendering in Rust

99 points poleis

I created Shimmer, a physically-based spectral rendering system. The project is based on the fabulous PBRT textbook (4th ed.) which was released last year. This project was a great experience for both learning Rust and learning about rendering systems and ray tracing.

There are certainly improvements to be made. Some features such as volumetric rendering are missing, and the program is currently CPU-bound. Further, I'd like to improve error handling, reduce memory consumption, and make some changes so that I do not rely on some unsafe nightly features. But I am at least at the point where I can make some pretty renders, so I thought I would share.

I'd like to point to rs-pbrt as well, which is an existing project which ports PBRT-v3 to Rust. That system is RGB-based, however, where PBRT-v4 and Shimmer are spectral systems. I checked a few months ago and the author of rs-pbrt didn't have plans to update it to reflect PBRT-v4, but this may have changed since then. Shimmer isn't a fork of rs-pbrt, but it's a cool project in the same vein (that is more feature complete than mine!) so I thought I'd point to it.

Render from Shimmer.