Raytracer
A ray-tracing renderer, extensible through plugins.
Developer (Epitech academic project, 2nd year)

A 3D rendering engine written in C++ that produces images by ray casting, built around a runtime plugin architecture so the renderer can be extended without touching its core.
A multi-object scene with reflections, shadows and coloured lighting, rendered to PPM.
Overview
The renderer fires rays from a virtual camera into a scene, finding the nearest intersection for each pixel and shading it from the scene’s lights. Everything that can vary between scenes is loaded as a plugin:
- Primitives: sphere, plane, cylinder, cone
- Light sources: point, directional, ambient
- Materials and post-processing filters: sepia, black & white, negative
Because these are plugins, new shapes, lights or effects can be dropped in without recompiling the core engine.
Highlights
- Plugin-based core: primitives, lights, materials and filters are loaded at runtime, keeping the renderer open for extension.
- Plain-text scenes: scenes are described in human-readable
.cfgfiles. - Multi-threaded rendering: pixels are rendered in parallel for faster frames.
- Several display backends: a live SFML preview, PPM file output, or an ASCII terminal view of the same render.
A walkthrough of the architecture and results is also available as a slide deck, embedded further down the page.
My role
Developer on a two-person Epitech academic project (2nd year). C++ engine design, the plugin loading system and the rendering pipeline.
Tech
C++ for the engine and plugins, SFML for the live preview window.





