Release Notes for v0.7.1

New files

Changes since last release

The following files were added:

  1. accelerators/ Everything you need to implement a k-d tree. Mainly the KdTreeAccel struct. Other details can be found in the kdtreeaccel module documentation.
  2. filters/ The LanczosSincFilter struct and its functions.
  3. src/lights/ The ProjectionLight and related methods.
  4. examples/ Example, used in the filters documentation, how to create a MitchellNetravali filter.
  5. examples/ Example, used in the filters documentation, how to create a LanczosSincFilter.


The GitLab repository contains a new .blend file, conference_room_v2_79.blend, which can be rendered using the parse_blend_file (example) executable:

> parse_blend_file ... conference_room_v2_79.blend

The Blender scene is also setup for the Cycles renderer and renders (using the denoiser) like this:

Conference Room rendered by Cycles and using the denoiser

The rendering time went down from about 3 hours to just a bit longer than one minute. This shows how important the denoiser is to get rid of the noise fast. For rs-pbrt I created a project for that. Currently, without a denoiser, you get a good result, using 128 samples, in about 10 minutes:

Conference Room rendered by rs-pbrt and without a denoiser

Here the command line used to render the image above:

> parse_blend_file --camera_name current_cam --integrator path --light_scale 1 --samples 128 conference_room_v2_79.blend
parse_blend_file version 0.7.1 [Detected 8 cores]
14109472 bytes read
number of lights = 336
number of primitives = 207512
integrator = "path" [(Unidirectional) Path Tracing]
Rendering with 8 thread(s) ...
2709 / 2709 [========================================================================] 100.00 % 4.52/s  
Writing image "pbrt.png" with bounds Bounds2 { p_min: Point2 { x: 0, y: 0 }, p_max: Point2 { x: 1000, y: 676 } }

To see more images rendered by various other renderers have a look into the GitHub repository, where I collect those images and other information.

Here is the current help information about the available command line flags and options:

> parse_blend_file --help
pbrt 0.7.1
Parse a Blender scene file and render it.

    parse_blend_file [OPTIONS] <path>

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

    -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]

    <path>    The path to the file to read

To find out, which other cameras are defined in the Blender scene, and what their names are, please read the following blog post to understand the command I'm using to retrieve that information:

> blend_info conference_room_v2_79.blend | grep '  "CA'
  "CAcurrent_cam" has 2 data blocks
  "CAdoor1_cam" has 2 data blocks
  "CAdoor2y_cam" has 2 data blocks
  "CAshaft_cam" has 2 data blocks
  "CAxY_cam" has 2 data blocks

Basically the blend_info executable can be compiled from this Codeberg repository and will print a lot of information to the shell, where the program was started from. I filter that information and search (via grep) for lines using the CA prefix (Blender uses internally that prefix for cameras). So, to render other camera perspectives defined in the same Blender file use:

> parse_blend_file --camera_name current_cam ...
> parse_blend_file --camera_name door1_cam ...
> parse_blend_file --camera_name door2y_cam ...
> parse_blend_file --camera_name shaft_cam ...
> parse_blend_file --camera_name xY_cam ...

Warning: Do not expect any arbitrary Blender file to render via parse_blend_file. There is not much documentation about the current limitations, but those files stored here, should render fine. Maybe one day I will find time to write more about the current status and the future plan(s).

The End

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