How hksfang/pathtracer works
PathTracer is a desktop path-tracing renderer. Its documented workflow loads an XML scene, renders it, presents it in an interactive viewport, waits for completion, and saves a PNG image. The graph preserves scene description, shading and lighting, photon mapping, sampling, and parallel rendering as distinct concerns. Source excerpts are partial, so uncertain internal wiring—especially scene parsing and image encoding—is omitted.
Main entry points: MyRendererV2.cpp Custom renderer · main.cpp Application entry · renderer.h Renderer state · xmlload.cpp XML scene loader
Components 18
Application flow
- Application entry
main.cpp
Scene and assets
- XML scene loader
Source/Provided/xmlload.cpp - Scene model
Include/Provided/Scene.h - Geometry
Source/objects.cpp - Materials
Source/materials.cpp - Lights
Source/lights.cpp - Textures
Source/Provided/texture.cpp
Rendering
- Custom renderer
Source/MyRendererV2.cpp - Photon mapping
Include/Provided/photonmap.h - Shading and rays
Source/MyShadeInfo.cpp - Halton sampling
Include/HaltonPoint2D.h - Render workers
Source/Concurrency/ThreadPool.cpp - Renderer state
Include/Provided/renderer.h
Presentation
- Interactive viewport
Source/Provided/viewport.cpp - Rendered image
Include/Provided/renderer.h
Other components
- User
- Competition XML
- Saved PNG
Connections 19
- User → Application entry: runs
- Application entry → Competition XML: loads
- Application entry → Custom renderer: creates and loads
- Custom renderer → XML scene loader: loads scene
- XML scene loader → Scene model: populates
- Custom renderer → Geometry: intersects rays
- Custom renderer → Lights: samples lighting
- Custom renderer → Materials: samples materials
- Custom renderer → Photon mapping: builds and queries
- Custom renderer → Shading and rays: traces secondary rays
- Custom renderer → Halton sampling: generates samples
- Custom renderer → Render workers: schedules tiles
- Application entry → Interactive viewport: opens
- Interactive viewport → Renderer state: reads render state
- Custom renderer → Renderer state: updates
- Renderer state → Rendered image: holds pixels
- Application entry → Custom renderer: waits for completion
- Application entry → Rendered image: saves
- Rendered image → Saved PNG: writes