This year was a tough one for most of us. Not just because of
COVID-19. Let me start with a personal email I did send to
3D-PRO, a private, carefully curated mailing list, which is
around for over 20 years:
So the year is coming to an end. I haven’t signed a new contract yet,
but I’m positive that this will happend within 2020. So beside giving
you a little history of my working life, I mention a couple of
things in the email above. For example the article
from Bjarne Stroustrup about Thriving in a crowded and
changing world: C++ 2006–2020 might be interesting not just for C++
fans (or haters), but how things develop over time and how to react
(or not react) to changes in HW etc. Lessons learned … for the
evolution of programming languages (in general) …
Which brings me to a newer language, Rust, I started to like a
lot, and used to write my own renderer (to learn the language, and see
how easy or difficult it is to translate an existing C++ code base to
a new language).
RS-PBRT
There is a whole web page I created about rs-pbrt and I’m
not going to repeat the information you will find there, but basically
it’s a feature complete Rust-based implementation of the 3rd
edition of the PBRT book (the book ships with C++ code).
There is a fourth edition of the same book on the horizon and the
C++ source code is already available.
v3
But let’s first talk about the third edition and it’s Rust
counterpart. In contrast to the C++ version I ship a
couple of executables (and example scenes) with the Rust-based
source code, which can render images:
To render for example the Cornell Box (.pbrt is a file format
defined in the book for v3 and will most likely change a bit for v4):
More v3 scenes can be found on the pbrt.org web site or on
GitLab (tested versions for the Rust-based
renderer). So, please, read the Getting Started
page, compile the source code, and run some example scenes to see
for yourself.
What most people don’t know is that I wrote a little example program
for Arnold’s scene description (.ass extention) as well:
It’s not really meant to render an arbitrary Arnold scene, but it was
a proof of concept, that a parser for .ass files could be written
and the API of the Rust-based renderer could be used to render such a
scene (using some heuristics to translate shaders into a PBRT
material).
Last, but not least, Blender scenes (for now I focused on
version 2.79 for examples provided by myself) can be rendered like
this:
This executable is useful to render the same scene with different
settings (and render algorithms) and/or cameras without changing the
scene. See the output of the help message:
Scenes which were tested to render with rs-pbrt can be found in the
GitLab repository as well (in the blend
folder). To find out which cameras are defined etc. in a .blend file
you can use blend_info which I provide the source code for on
codeberg.org. Here some examples:
As I said before, there is a fourth edition of the same book on
the horizon and the C++ source code is already
available. You can find a video with Matt Pharr (one of
the authors of the book) about the pbrt-v4 code walkthrough. There
are also slides and another video about Porting
PBRT to the GPU While Preserving its Soul. I’m not sure if I will
have time to convert the new C++ code to Rust, but there are a couple
of things I would like to do for the Rust-based version. Similar to
the C++ version I would like to be able to watch the renderer while
the image is created. The C++ version connects to tev, a EXR
Viewer (can be seen in one of the videos). The Rust code can be
compiled with support for OpenEXR already, but maybe there is an even
simpler way to show the progress while rendering? Last, but not least,
it would be interesting to see how the GPU code can be done in Rust,
similar to those changes in the C++ version.
Which brings me to my last topic (for this year).
Mitsuba 2
The second version of Mitsuba (by Jakob Wenzel, another
author of the book mentioned above) is available (the
code is on GitHub). There is a video and a
paper available and Enoki is another piece
of code, which I would like to study and discuss with others.
Job
But first I need to resolve my job situation … Stay tuned …
Update
I signed a contract with Parakar Germany GmbH to be able to
work remotely for Paramex Limited in the UK. Starting date
is Monday, 14th of December 2020.