Software Ray Tracer / Rasterizer

C++, QT6 Software (CPU) Whitted Ray Tracer & Rasterizer

CPU ray-tracer + rasterizer entirely done in C++ and Qt6 for the interface.


Features

  • Qt6 C++ Interface
C++ QT6 Interface
  • Ray tracing rendering
  • Rasterization rendering
  • Hybrid rendering (rasterization of the visibility + ray tracing for the shading)
  • Clip-space clipping algorithm
  • Hard shadows (shadow rays)
Ray-traced hard shadows
  • Octree based BVH + 7 planes bounding volumes
  • Rough reflexions (random ray cast around the normal)
  • Normal mapping
  • Diffuse texture, roughness map, ambient occlusion mapping
  • Parallax occlusion mapping
  • Skyspheres support
Showcase of implemented normal mapping, parallax occlusion mapping, rough reflexions & skysphere support. The mesh of the sphere is perfectly flat (analytic sphere). The perceived geometry is only due to the parallax mapping algorithm.
  • Skyboxes support
  • Super Sampling Anti Aliasing (SSAA)
  • AVX2 Screen Space Ambient Occlusion (SSAO) implementation
Showcase of the SIMD AVX2 Screen Space Ambient Occlusion (SSAO) implementation
  • Hair modeling
Hair modeling (ad-hoc method, following a simulated falling particle)

Github

This project is open-source on Github: Software Ray Tracer & Rasterizer