Raytracer docs 🌐 FR

Raytracer

A modular ray-tracing renderer written in C++17. It produces synthetic images by casting rays from a virtual camera, intersecting geometric primitives, and evaluating direct lighting.

C++17 Makefile SFML .so plugins Real-time & headless rendering

Project goal

The Raytracer turns a scene description (a JSON file) into an image. For each pixel, the engine:

  1. generates a primary ray from the camera;
  2. finds the closest valid hit across scene geometry;
  3. computes shading from lights and material response;
  4. writes the final color to the image buffer (exported as PNG).

The project stands out with an interface-driven architecture and a runtime plugin system (.so) for rendering and the graphical interface, plus an interactive UI to edit the scene — including mesh vertices.

Use the search bar at the top (shortcut /) to quickly find an option, a class or a scene key. The documentation is available in French and English (🌐 FR button).

Feature overview

Quick start

# Build (produces ./raytracer and the plugins in ./plugins)
make

# Interactive render of a scene
./raytracer tests/configs/subject.json

# Direct render to a PNG (no UI)
./raytracer -r output.png tests/configs/subject.json

See Installation for prerequisites and Usage for options and the scene format.

Documentation map

SectionContent
InstallationPrerequisites, dependencies, build, troubleshooting.
UsageCommand line, scene file format, real examples.
ArchitectureCode organization, modules, tools and interactions, rendering pipeline, cluster.
FeaturesPrimitives, lights, materials, shadows, reflections, BVH, meshes.
Graphical interfacePanels, components, windows, gizmos, vertex editing, shortcuts.
ReferenceInterfaces, main classes, math types.
FAQCommon problems and solutions.

This documentation is generated from the project's real code (Makefile, headers, scene parser, examples in tests/configs/) and the Markdown docs in the docs/ folder.