Introduction

Crust Render is a physically-based path tracer written in safe Rust. It reads USD scenes and writes a linear EXR plus a tone-mapped PNG.

A Crust Render image

What it is

Crust Render is a toy path tracer, informed by PBRT, Ray Tracing in One Weekend and Autodesk Standard Surface / OpenPBR. It is a single-author project, not a production renderer. It still loads production-scale USD assets such as Disney Animation's Moana Island and ALab.

The full scene comes from the USD stage: camera, geometry, lights, materials and render settings. Crust reads standard USD schemas (UsdGeom, UsdLux, UsdShade, UsdRender) and adds its own settings as crust:* custom attributes.

How a render is configured

A render takes its settings from three places. When two of them set the same thing, the one higher in this list wins:

  1. Command-line flags, such as --samples or --filter. They override the scene for one render. See Command line.
  2. USD attributes on the stage, such as crust:samplesPerPixel on the RenderSettings prim. They travel with the scene. See USD attributes.
  3. Built-in defaults, used when nothing else sets a value.

Environment variables (CRUST_*) are a separate thing. They don't change what the scene looks like. Each one switches an optimization off, or tunes a memory budget, so you can compare against the old behaviour. See Environment variables.

Output

Each render writes two images:

  • a linear EXR at the -o path (default output.exr), and
  • a tone-mapped sRGB PNG beside it, at the same path with a .png extension.

Next steps

Edit this page on GitHub