This project is an implementation of Monte Carlo path tracing in Rust.
The renderer takes a custom Internal Scene Format (isf) as input.
But don't worry we're able to convert glTF scenes into isf.
Minimal command line:
path-tracer convert --help # Prompt all available options for scene conversion
path-tracer render --help # Prompt all available options for rendering
path-tracer convert my_scene.glb my_scene_isf/ # Convert a gltf scene into an isf
path-tracer render scene.isf -o my-render.png -p profile.yml # Render a scene with a custom profile
Profile files are used to configure the renderer behaviour.
Option | Description | Default |
---|---|---|
resolution.width |
Width of the output image | 1920 |
resolution.height |
Height of the output image | 1080 |
samples |
Number of sample ray throw by pixel | 64 |
bounces |
Maximum number of bounces per sample | 4 |
brdf |
Which brdf tu use (COOK_TORRANCE ) |
COOK_TORRANCE |
tonemap |
Which color tone map tu use (REINHARD , FILMIC , ACES ) |
FILMIC |
Here is a profile example.
resolution: # Resolution of the output image
width: 1920
height: 1080
samples: 64 # Number of sample ray throw by pixel
bounces: 4 # Maximum number of bounces per sample
brdf: COOK_TORRANCE # Which brdf to use
tonemap: FILMIC # Which color tone map to use
- Parallel computation
- KD Tree
- Unidirectional Monte Carlo path tracing
- Microfacet BRDF
- Importance sampling
- Various Tone mapping
- Viewer
- Alpha Transparency
- Snell Refraction
- BSSRDF
- ...