CornellJungle2

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.

Keys:

  • 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’

Project executables+dlls+scenes:
(rt.exe for GPU ray-tracing preview, rtCPU.exe for OpenGL preview, requires GeForce>=NV40)
zip GPURayTracerBin

Project sources :

(Visual Studio project, requires QT 4, QGLViewer, Glew and Cg 1.5 SDK)
zip GPURayTracerSrc

Full package:
zip GPURayTracerFull1_0

Slides (in french):

Features:
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):

DeuxPlans1
CornelSpheres1
TasSpheres1
Refraction1
BoundingBoxes
GPURTRefract2
 FresnelMer1
test
inria_cubeMap(1)
CornellLapin2
PlanetesRefract3
cubeMapET(1)