This is the final version of a RayTracer project developed in 2007 with Adeline Pihuit during our master thesis. It is composed of a fast real-time GPU raytracer developed using OpenGL and Cg that can run on a GeForce 6 (NV40, SM3.0) class GPU, and an off-line CPU recursive raytracer that can be used to compute reference images.
The application load scenes described in XML files and allows manipulating light sources and debugging individual rays.
- Load a scene (.scn) file : ‘l’
- Manipulate light source : ’3′ to select the light to manipulate, then CTRL+RIGHT-CLICK to move the light
- Display helpers (lights, cameras, paths…): ’7′
- Render static image with CPU ray-tracer: ‘d’
- For other keys, display the help window: ‘h’
(rt.exe for GPU ray-tracing preview, rtCPU.exe for OpenGL preview, requires GeForce>=NV40)
Project sources :
Slides (in french):
Both GPU and CPU raytracing engines provides near the same rendering quality. They manage multiple point and directional light sources, shadows, Fresnel reflexions and refractions, parallax bump-mapping, cube map based environment mapping and multi-sampling.
The GPU engine allows only spheres and planes rendering while the CPU engine also manage triangle meshes stored into an Octree acceleration structure. For real-time preview, the triangle meshes are rendered unsing OpenGL rasterization and rasterized objects combine correctly with real-time ray-traced ones.
Note that the CPU ray-tracing engine was design to be flexible and easily extensible and was not optimized for performance.
Some GPU real-time rendered images (10-30FPS on a GeForce 6800GT):