New Website
On November 14th I started working on a new website about my port of an existing (C++ code) implementation of a physically based renderer to Rust, a new programming language I was interested in learning. As the about page tells you there is
-
a book to learn from about the theory of Physically Based Rendering
-
an accompanying website which provides further resources and links e.g. to the C++ source code or a number of interesting scenes
-
an online edition of the same book, so there is no need to buy the book, but I do recommend it
-
the source code of the Rust implementation, which isn’t finished yet, but does implement most of the algorithms already and can be used for rendering
-
the online documentation of the aforementioned Rust implementation, which can also be found on this website (updated inbetween releases)
Blog
Whereas this blog is more about rendering in general and comparing
different commercial and open source renderers, the blog on
the new website is about releases and other topics around
the Rust executable (called rs_pbrt
) and how to use it. So far you
can find:
-
Getting Started: Tells you where to get the source code from, how to compile it, or create a local copy of the documentation, render your first image, or where to find more scenes (because
rs_pbrt
isn’t 100% compatible to the C++ counter part yet). -
Some Blender related posts (see tag), which tell you more about the current state of exporters, which allow you to create scenes in Blender, and render them with
rs_pbrt
. -
Release Notes: So far I have written about three releases, but in the future there will be more.
Features
I try to show an image for each release, which shows a new
feature, which was added to the latest rs_pbrt
executable and most
likely there is a scene file which allows you to render that image
yourself, after you have downloaded that scene and compiled the latest
Rust source code into an executable. Which raises the question:
Which features are already implemented?
Stochastic Progressive Photon Mapping (SPPM)
The last release added Stochastic Progressive Photon
Mapping (SPPM), which gets activated through an Integrator "sppm"
line in the scene file:
> grep sppm caustic-glass.pbrt
Integrator "sppm" "integer numiterations" [10000] "float radius" .075
As described here you can write out a pbrt.png
file
every iteration (or whatever you specify as argument):
> grep imagewritefrequency caustic-glass.pbrt
"integer imagewritefrequency" [1]
Subsurface Scattering (SSS)
See also the v0-5-0 relase notes.
Other Integrators
Ambient Occlusion (AO)
Direct Lighting
Path Tracing
Bidirectional Path Tracing (BDPT)
Metropolis Light Transport (MLT)
Other Features
There are other features, like motion blur, depth of field, realistic cameras etc. but those will be most likely documented with better example scenes and written about on the aforementioned website and/or blog.