Skip to content

Sebb57/raytracer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

166 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Raytracer

Version française

Real-time raytracer written in C++20 featuring a modular architecture, dynamic plugin system for shapes and an interactive rendering pipeline. The engine includes a graphics abstraction layer, allowing the use of any rendering library; an SFML implementation is currently provided. The project also supports object creation, editing and deletion directly through the GUI while allowing free navigation inside the 3D scene.

Dependencies

  • CMake >= 3.16
  • SFML 2.5
  • libconfig++ (config++)
  • dl (Linux)

Quick install (Ubuntu/Debian)

sudo apt install cmake libsfml-dev libconfig++-dev

Build

Release build

cmake -S . -B build
cmake --build build -j

Debug build

cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build -j

The raytracer executable will be generated at the project root, while plugins are placed inside the plugins/ directory.


Project structure

src/
├── Graphics/        # GUI, preview and SFML backend
├── Math/            # Vectors, points and 3D math
├── RayTracer/       # Core raytracer
│   ├── BVH/         # BVH acceleration structure
│   ├── Lights/      # Lighting system
│   └── Shapes/      # Dynamically loaded shapes
├── utils/           # Parsing and utilities
└── main.cpp

Available plugins

  • Sphere
  • Plane
  • Cone
  • Infinite Cone
  • Cylindre
  • Infinite Cylinder
  • Torus
  • TangleCube

Controls

Movement

Key Action
ZQSD Movement
Space Move up
Shift Move down
Arrows Camera orientation
A / E Rotate camera left / right
P saves a screenshot using the PPM P6 format

GUI

Object creation

  • Click on a creation window to open it
  • All interactions are handled with the mouse
  • Escape closes the creation window

Object deletion

  • Right click on a shape
  • Press Delete

About

our implementation of a raytracer

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors