Skip to content

Gallery

Renders from the bundled scenes, grouped by what they show. Every image can be reproduced from resources/scenes/ with the offline modes (-m 4 or -m 2).


The Stanford bunny as a cumulus cloud on a ground plane
Cloud bunny — 17_cloud_bunny.yaml. The volume material with procedural shape noise, a hidden sun and volumetric shadow rays. OptiX, 512 spp, 720p.
OpenVDB bunny cloud density grid
VDB bunny — 17_vdb_bunny.yaml. The OpenVDB bunny_cloud grid, 289×286×219 cells, read straight into the 3D density texture. OptiX, 512 spp, 720p.
The VDB bunny cloud at 2048 samples per pixel in 1080p
VDB bunny, 2048 spp, 1080p — the same scene left to converge.
Ten ray-marched SDF primitives in a studio room
SDF gallery — 18_sdf_shapes.yaml. Mandelbulb, death star, cut hollow sphere, torus, glass octahedron, pyramid, capsule, box, cylinder and sphere, sphere-traced on the GPU. OptiX, 384 spp, 720p.

Cornell box with colour bleeding between the coloured walls and the spheres
Cornell box — 09_color_bleed_box.yaml. Coloured diffuse walls bleed onto the neighbouring surfaces; the area light overhead gives soft shadows.
Indoor scene with reflective and diffuse spheres
Indoor spheres — dielectric, metallic and diffuse spheres in an enclosed room with area lighting.
Spheres on a reflective floor
ISC spheres — the five colours of the ISC programme's majors, with strong inter-reflections between specular surfaces.
Many spheres in a grid
BVH test scene — 01_bvh_test_scene.yaml, 150 spheres used to measure the acceleration structure.
Golf ball with procedural displacement
Golf ball — a displaced sphere: the dimple pattern is procedural, and its count, radius and depth are live sliders in the GUI.
Anisotropic metals scene at 512 spp
Anisotropic metals — 01_anisotropic_metals_test.yaml at 512 spp: anisotropy along the rows, roughness along the columns.

Tinted rough mirrors: gold, copper and steel
Tinted rough mirrors — gold, copper and steel tints. The roughness blurs the reflection, from a perfect mirror at 0 towards diffuse at 1.
Glass spheres with caustics next to metallic surfaces
Dielectrics and metals — glass follows Snell's law with Schlick's Fresnel approximation; the caustic under the sphere emerges from the path tracing alone.
Soap-bubble thin-film shading
Thin film — 11_soap_bubbles.yaml. The Airy interference formula at several film thicknesses sweeps through the spectrum.
Clear coat over a diffuse base on the dragon
Clear coat — a Lambertian base under a smooth dielectric coat; the highlight is view-dependent.
UV textured cube, sphere and plane
UV texture mapping — 13_texture_test1.yaml. A grid texture through MTL files, interpolated with barycentric coordinates.
Blender export with multi-material textures
MTL-driven textures — 14_texture_test2.yaml. Each group of a Blender export picks its texture from the .mtl file.

Normal visualisation mode
Normals — key N maps the surface normal to RGB (R = X, G = Y, B = Z). The smooth interpolation hides the face boundaries of the mesh.
Interactive window with the Dear ImGui panel
Interactive mode — the SDL2 window with the Dear ImGui panel: sample counter, convergence and the live sliders.
OBJ mesh with smooth normals
OBJ loading — an imported mesh rendered with the vertex normals of the file.
Depth of field with bokeh blur
Depth of field — thin-lens aperture and focus distance, adjustable live in the Camera Settings section.

The anisotropic metals scene at increasing sample counts. Monte Carlo noise decays as \(\mathcal{O}(1/\sqrt{N})\): every doubling of the samples removes about 30 % of the noise. The anisotropic highlights are the slowest to resolve.

4 samples per pixel
4 spp — the highlights are buried in noise.
16 samples per pixel
16 spp — shapes emerge, the streaks are faintly visible.
32 samples per pixel
32 spp — the anisotropic streaks form.
64 samples per pixel
64 spp — usable; the direction of the highlights is clear on the smooth spheres.
128 samples per pixel
128 spp — clean for most materials.
512 samples per pixel
512 spp — near convergence.

Scenes lit by equirectangular HDR environments from Poly Haven (CC0). Six environments are downloaded by bash resources/hdri/download_hdri.sh 8k, see HDR Sky Dome.

HDR sky render HDR sky render HDR sky render HDR sky render HDR sky render HDR sky render HDR sky render HDR sky render HDR sky render