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.

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:
- Command-line flags, such as
--samplesor--filter. They override the scene for one render. See Command line. - USD attributes on the stage, such as
crust:samplesPerPixelon theRenderSettingsprim. They travel with the scene. See USD attributes. - 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
-opath (defaultoutput.exr), and - a tone-mapped sRGB PNG beside it, at the same path with a
.pngextension.
Next steps
- Quick Start → Build Crust Render and render a bundled sample.
- Command line → Every flag.
- Environment variables → Every
CRUST_*switch. - USD attributes → Every
crust:*attribute. - Architecture → How Crust Render is built, and why.
- FAQ → Common problems.