A7B39RTG -- Ray Tracing for Games

Lecturer: Dr. Jacco Bikker, Utrecht University / Breda University of Applied Sciences, Netherlands

The course takes students from ray tracing basics to game-oriented interactive CPU ray tracing. At the end of the course, students will have a good understanding of the ray tracing and path tracing algorithms, as well as high-level and low-level optimizations needed to make these run in real-time. The students will also have a basic understanding of game development using a ray tracing engine.

This course will be taught using C + +. Students are expected to be reasonably fluent in this language.

Course Schedule

The course is organized in a two-week block of lectures and seminars (one lecture, one exercise per day)!

The course is awarded by 3 credits and is finished with assessment and exam.

Course dates: Monday 9.3. 2015 - Friday 20.3. 2015


Lectures – in 10 days block

  1. Game development basics: actors, scene management, performance, constraints.
  2. Light transport basics: taking your game from rasterization to Whitted-style ray tracing.
  3. Optimizing fundamentals for games and graphics: high-level, low-level, parallelism.
  4. High-level optimizations: divide-and-conquer and Monte-Carlo applied to ray tracing.
  5. Instruction-level parallelism: SSE programming primer.
  6. Intermediate light transport: from Whitted-style to Cook-style.
  7. Advanced light transport: from Cook-style to path tracing.
  8. Importance sampling techniques for path tracing.
  9. Game development concluded: ray traced physics and AI. Several suggestions for improving a ray traced game.
  10. Demo presentations by students. Exam.

Seminars in computer lab – in 10 days block

  1. A minimal game using a supplied software rasterizer.
  2. Implementation of a minimal ray tracer.
  3. Low-level optimization of the ray tracing renderer and integration with the game.
  4. High-level optimization of the minimal ray tracer.
  5. Applying SSE in the game and its renderer.
  6. Adding soft shadows, diffuse reflections and depth of field to the game.
  7. Adding indirect illumination to the game renderer (making it a minimal path tracer).
  8. Applying basic variance reduction techniques to the minimal path tracer.
  9. Finalizing the minimal game.
  10. Demo presentations by students.


The grade for this course is determined based on three components, for a total of 100 points:

  1. A multiple-choice exam (40 points, 2 points per question)
  2. A practical assignment (39 points)
  3. A brief oral exam (11 points)

Classification is given by the Study Regulations of CTU in Prague https://www.cvut.cz/legislativa .

  • A (90 points and more): “excellent”
  • B (80 - 89 points): “very good”
  • C (70 - 79 points): “good”
  • D (60 - 69 points): “satisfactory”
  • E (50 - 59 points): “sufficient”
  • F (less than 50 points): “failed”

The exam will take place on Friday March 20 at 09.15. The exam will be followed by presentations of the game projects, which will start at 10.30. Presentations and exam take place in the room assigned for the course according to the course schedule. Students can sign up for the oral exam at the end of this exam. The oral exam will take place on the same day, starting at 12.30, on the fourth floor, opposite to office E421.

For details on the minimum requirements for the practical assignment please refer to the slides of lecture 6.


[1] Watt A. 3D Computer Graphics. Addison-Wesley , 1999.

[2] Jesse Schell. The Art of Game Design: A book of lenses. CRC Press, 2008.

[3] Žára a kol. Moderní počítačová grafika, Computer Press, 2005.

[4] Matt Pharr, Greg Humphreys. Physically Based Rendering, From Theory To Implementation. Morgan Kaufmann; 2 edition (2010).

Additional Materials

For this course, we will be using a quick-start C++ template, which you can obtain here:




The template comes with Visual Studio 2013 project files. Adapting it for older versions of Visual Studio is straightforward. The zip file includes brief documentation for the template and the included software rasterizer. The template (including rasterizer) is open source and can be used and distributed freely.



Remaining lectures (for CVUT students only) can be found on the lectures page.

courses/a7b39rtg/start.txt · Last modified: 2015/03/19 17:21 by bikkejac