Release Notes for v0.7.0

Main Executable

The main executable is now found in either the release or debug subfolder:

> ls ./target/release/rs_pbrt
./target/release/rs_pbrt
> ls ./target/debug/rs_pbrt
./target/debug/rs_pbrt

This was achieved by moving rs_pbrt.rs out of the examples folder into a bin folder and by adjusting the Cargo.toml file:

> tail Cargo.toml -n 3
[[bin]]
name = "rs_pbrt"
path = "src/bin/rs_pbrt.rs"

Other executables

Therefore there are three executables which can be used for rendering:

> ./target/release/rs_pbrt --help
Usage: ./target/release/rs_pbrt [options]

Options:
    -h, --help          print this help menu
    -i FILE             parse an input file
    -t, --nthreads NUM  use specified number of threads for rendering
    -v, --version       print version number
# e.g.
> ./target/release/rs_pbrt -i assets/scenes/cornell_box.pbrt 
pbrt version 0.7.0 [Detected 8 cores]
Copyright (c) 2016-2019 Jan Douglas Bert Walter.
Rust code based on C++ code by Matt Pharr, Greg Humphreys, and Wenzel Jakob.
Film "image"
  "integer xresolution" [500]
  "integer yresolution" [500]
Sampler "sobol"
  "integer pixelsamples" [8]
Integrator "path"
Rendering with 8 thread(s) ...
1024 / 1024 [======================================================================] 100.00 % 191.89/s
Writing image "pbrt.png" with bounds Bounds2 { p_min: Point2 { x: 0, y: 0 }, p_max: Point2 { x: 500, y: 500 } }

The other two still reside in the examples folder and are currently experimental:

> ./target/release/examples/parse_ass_file --help
Usage: ./target/release/examples/parse_ass_file [options]

Options:
    -h, --help          print this help menu
    -i FILE             parse an input file
    -s, --samples NUM   samples per pixel
# e.g.
> parse_ass_file -i assets/ass/cornell_box.ass -s 1
FILE = assets/ass/cornell_box.ass
search_directory is /mill3d/users/jan/git/github/rs_pbrt/assets/ass
5174 bytes read
options {
 xres 500 
 yres 500 
 camera "CACamera" 
 GI_total_depth 11 }
standard_surface { name MAdefault }
standard_surface { name MAbox_Material 
 base_color 0.5 0.5 0.5 
 specular_color 1 1 1 }
standard_surface { name MAcbox_Material 
 base_color 0.4 0.4 0.4 
 specular_color 1 1 1 }
standard_surface { name MAcbox_red 
 base_color 0.5 0 0 
 specular_color 1 1 1 }
standard_surface { name MAcbox_green 
 base_color 0 0.5 0 
 specular_color 1 1 1 }
render_camera = "CACamera" 
fov = 39.14625 
filter_name = "gaussian"
filter_width = 2.0
max_depth = 11
samples_per_pixel = 1
number of lights = 2
number of primitives = 36
resolution = Point2 { x: 500, y: 500 }
Rendering with 8 thread(s) ...
1024 / 1024 [=====================================================================] 100.00 % 1071.78/s
Writing image "pbrt.png" with bounds Bounds2 { p_min: Point2 { x: 0, y: 0 }, p_max: Point2 { x: 500, y: 500 } }

The parse_ass_file executable mentioned above can be used to render some Arnold files. It was a quick test, if the API can be used to render other scene descriptions in general. There is a ticket about the current state.

Another test was if it would be possible to render binary Blender directly, because I plan to model test scenes with Blender:

> ./target/release/examples/parse_blend_file --help
pbrt 0.7.0
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
# e.g.
> parse_blend_file assets/blend/suzanne_integrator_test_2_79.blend 
parse_blend_file version 0.7.0 [Detected 8 cores]
BLENDER-v279
857932 bytes read
number of lights = 2
number of primitives = 5426
Rendering with 8 thread(s) ...
1024 / 1024 [======================================================================] 100.00 % 927.55/s
Writing image "pbrt.png" with bounds Bounds2 { p_min: Point2 { x: 0, y: 0 }, p_max: Point2 { x: 500, y: 500 } }

Here a link about Blender's scene files and a ticket to follow the progress.

USD

The plan for the future is to find a workflow where Blender scenes can be converted to Pixar's Universal Scene Description USD and rendered directly by rs-pbrt. That way we can generate USD scenes from other sources (e.g. Maya and Houdini) and still render them.

Procedural Textures

There are a couple of new procedural textures and the documentation shows some images for texture patterns now. Those images can be rendered by the provided .pbrt test scenes:

  1. assets/scenes/checkerboard.pbrt
  2. assets/scenes/dots.pbrt
  3. assets/scenes/fbm.pbrt
  4. assets/scenes/marble.pbrt
  5. assets/scenes/windy.pbrt
  6. assets/scenes/wrinkled.pbrt

Procedural Textures

Issues

Since the last release the following issues were solved:

  1. A problem with the villa test scene, showed that we have to deal with shadowalpha.
  2. The ticket to create a marble texture inspired me to go through other procedural textures, provide test scenes for them, and implement what's missing.

The End

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