How muttimarcello/tiny_renderer works
Tiny Renderer is a compact C++ ray-tracing application. Its workflow is defined in src/main.cpp: configure a camera, objects, materials, scene, image, and directional light; call the renderer; then write a PPM image. The rendering and shading implementation is concentrated in src/tools.cpp, with types and interfaces declared in src/tools.hpp. The README documents sampling, recursive light transport, tone mapping, and multithreading; omitted source excerpts limit verification of some internal calls, so those links are documented rather than inferred from module names.
Main entry points: main.cpp Render Setup · tools.cpp Recursive Ray Shading
Components 17
Application
- Render Setup
src/main.cpp
Scene Model
- Pinhole Camera
src/tools.cpp - Sphere Geometry
src/tools.cpp - Hittable Scene
src/tools.cpp - Lambertian Material
src/tools.cpp - Metal Material
src/tools.cpp - Directional Light
src/tools.cpp
Rendering
- Render Scheduler
src/tools.cpp - Pixel Sampling
src/tools.cpp - Recursive Ray Shading
src/tools.cpp - Shadow Testing
src/tools.cpp - Thread Workers
src/tools.cpp - Ray and Math Types
src/tools.hpp
Image Output
- Image Buffer
src/tools.cpp - Tone Mapping
src/tools.cpp - PPM Writer
src/tools.cpp
Other components
- Renderer User
Connections 27
- Renderer User → Render Setup: runs
README.md - Render Setup → Pinhole Camera: configures
src/main.cpp - Render Setup → Sphere Geometry: creates
src/main.cpp - Render Setup → Lambertian Material: creates
src/main.cpp - Render Setup → Metal Material: creates
src/main.cpp - Render Setup → Hittable Scene: populates
src/main.cpp - Render Setup → Directional Light: creates
src/main.cpp - Render Setup → Image Buffer: allocates
src/main.cpp - Render Setup → Render Scheduler: calls
src/main.cpp - Render Scheduler → Pixel Sampling: uses
README.md - Render Scheduler → Thread Workers: dispatches
src/tools.cpp - Thread Workers → Pixel Sampling: renders pixels
README.md - Pixel Sampling → Pinhole Camera: generates rays
README.md - Pixel Sampling → Recursive Ray Shading: evaluates rays
README.md - Recursive Ray Shading → Hittable Scene: intersects
src/tools.cpp - Hittable Scene → Sphere Geometry: queries objects
src/tools.cpp - Recursive Ray Shading → Directional Light: uses illumination
src/tools.cpp - Recursive Ray Shading → Shadow Testing: tests visibility
src/tools.cpp - Shadow Testing → Hittable Scene: casts shadow ray
src/tools.cpp - Recursive Ray Shading → Lambertian Material: scatters via
README.md - Recursive Ray Shading → Metal Material: scatters via
README.md - Recursive Ray Shading → Recursive Ray Shading: recurses
src/tools.cpp - Pixel Sampling → Image Buffer: stores pixels
README.md - Pixel Sampling → Tone Mapping: converts radiance
README.md - Tone Mapping → Image Buffer: encodes pixels
README.md - Render Setup → PPM Writer: writes image
src/main.cpp - PPM Writer → Image Buffer: reads buffer
src/tools.cpp