Opposite Renderer

GPU Photon Mapping

View on GitHub

Opposite Renderer

This project is a part of Stian Pedersen's master's thesis project at NTNU. This demo renderer contains a GPU implementation of the Progressive Photon Mapping algorithm. It is written in C++ using CUDA and OptiX. The renderer has a GUI and can load scenes from the well known Collada (.dae) scene format. It has a client-server architecture allowing multi-GPU (distributed) rendering with any number of GPUs. It has been tested with up to six GPUs via Gigabit ethernet with very good speedup.

Master's Thesis

An introduction to ray-tracing, photon mapping, participating media, as well as details on implementation and results are available in the full thesis.

Download thesis (.pdf)

Download binary

A precompiled version for Windows 7 64-bit is available for testing. A Nvidia CUDA capable card is required. If you click on the images below, you will find more .DAE scenes you can test the implementation on.

Disclaimer: This is only a prototype implementation, not for any production use. Use at your own risk.

DOWNLOAD (Win7 x64) 15MB

Source code

Source code is released on github. Feel free to use this for anything if you want. The necessary libraries are listed below. You must link against these to compile, and it may require trickery to compile on other systems than 64-bit Windows.


Some libaries were used for this project: Qt 4.8.3, Nvidia CUDA 4.2.9, Nvidia OptiX 3.0.0, Open Asset Import Library 3.0, libtga 1.0.1.

Rendered images

These images was rendered as a part of the thesis. Click on them to find more details about render time and see full resolution image.

Cornell Box

Conference Room

Crytek Sponza

Foggy Box (participating medium)