High Resolution Low Resolution


The concept of our rendering is motivated by a few sci-fi video games, including, FreeSpace and Homeworld. The scene shows a spaceship being shot at from the distance by a big laser weapon which impacts the comet, missing the fighter and giving it the chance to flee towards the asteroid field for cover.

The Scene



We used the BVH with full-sweep SAH, which allowed us to use a big amount of triangles in our scene without big performance hits (rt/groups/sah.cpp) Additionally, we parallelized the implementation of our renderer to get better performance (rt/renderer.cpp). This and a lot of code optimization gets us to render the image in about 2 hours on a fast machine (R5 1600) or 10 hours on a slower machine (i3 5005U).

Volume rendering

We implemented volume rendering beyond the scope of having a global volume but also allowed to have volumes constrained by primitives. For this, we implemented a new integrator (rt/integrators/marchtrace.cpp) as well as new material types (rt/materials/explosion.cpp etc.). This allowed us to model both the explosion and the engine exhaust.

Transparent materials

We extended the set of available materials with a transparent material (rt/materials/alpha.h). This material is also shadow-less and is treated differently in our intersection logic when intersecting with shadow rays and primary rays (this also currently breaks the build pipe-line on the server).

Cook-Torrance material

To give the fighter a metal-like appearance we built a Cook-Torrance material with Beckmann BRDF (rt/materials/cooktorrance.cpp).

Motion blur

We used the motion blur, which we implemented as part of the bonus assignments for the explosion fragments (rt/primmod/mobinstance.cpp).

Simpler Bump mapping

To allow bump mapping of the asteroid field we implemented a kind of bump-mapper that does not take any uv coordinates but instead works on global coordinates with a 3d texture (rt/primmod/dumbmap.cpp)






seconds of runtime


  • Spaceship: https://www.turbosquid.com/3d-models/free-blend-mode-light-sendercorp/550669
  • NASA Starmap: https://svs.gsfc.nasa.gov/3895
  • 67p/Churyumov-Gerasimenko model: https://imagearchives.esac.esa.int/index.php?/page/navcam_3d_models