Release Notes for v0.6.2

Intro

Art Gallery scene from Radiance book

As described in the last release notes there is an executable to read binary Blender files and render them, called parse_blend_file:

> ./target/release/examples/parse_blend_file --help
pbrt 0.6.2
Jan Walter <jan@janwalter.com>
Parse a Blender scene file and render it.

USAGE:
    parse_blend_file [OPTIONS] <path>

FLAGS:
    -h, --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -c, --camera_name <camera_name>    camera name
    -i, --integrator <integrator>      ao, directlighting, path, bdpt, mlt
    -l, --light_scale <light_scale>    global light scaling [default: 1.0]
    -s, --samples <samples>            pixel samples [default: 1]

ARGS:
    <path>    The path to the file to read

There are no new command line options, but I did work on a more complex scene from the Rendering with Radiance book, by Greg Ward Larson and Rob A. Shakespeare. The corresponding Blender file is still work in progress. Basically this scene exists already in Blender's file format (see here) but I tried to simplify it (because it was generated by some Python scripts parsing the Radiance scene description and translating it to Blender). The current parser for the binary Blender file format has a couple of assumptions, like:

  1. Objects, data, and materials have the same base name, e.g. OBcornellbox, MEcornellbox and MAcornellbox (the prefixes OB, ME, and MA are only visible in the binary file format, and used internally within Blender, but not in the UI).
  2. If no camera name is specified from the command line options the name "Camera" is used to get the camera transformation.
  3. Smoothness is valid for the whole mesh, which means that if you don't want to provide vertex normals everywhere, split the mesh into several parts (at least two, smooth, and flat). An example would be a cylinder with flat top and bottom faces/triangles, and smooth sides (so you don't see the tesselation there).
  4. If there is a single HDR image mentioned within the binary file, assume that we should use it for Image Based Ligthing (IBL). The Simple Room scene from the last release notes uses such a HDR texture for lighting.
  5. Lights with type LA_SUN have a position but point always to the origin. That might be changed in the future.

Since the last release I added two new features:

  1. You can use textures now. The art gallery has an image hanging on one of the walls, which is simply a rendering of another scene. It also uses procedural noise on the floor, which was baked into a texture.

  2. Mis-using the specular color you can create tinted glass. The same color would be copied over and adjusted with HSV (so the V value should be 0.96).

Tinted glass uses two colors in Blender's UI

Above you see the material settings in Blender (using the old material interface, not the Cycles node tree), and below a rendering using Cycles (using some glass material in the node tree) on the left and parse_blend_file on the right (still extracting the old materials settings regardless of the node tree).

Tinted glass rendered by Cyles and rs-pbrt

I think currently you see some differences in the reflected color, because Cycles seems to pick up the color used for tinting, whereas rs-pbrt was told to use a white color for reflection (so that part is not tinted).

Bug fixes

This release fixes a couple of minor problems, which I found more or less while working on a bigger issue, the Coffee Splash scene not picking up the proper color. It does now:

Coffee Splash from PBRT

There is still a difference (between the Rust and C++ version) in the handle of the cup, but that will be fixed sometime in the future.

Daniel Egger joins

Daniel Egger (@therealprof) submitted a couple of pull requests for this release and I accepted all of them.

The End

I hope I didn't forget anything important. Have fun and enjoy the v0.6.2 release.