Universiteit Utrecht - Information and Computing Sciences

academic year 2015/16 – 4th period

title image title image title image



Lectures (Topics, Slides)


Exam & Grading

Course Overview



Literature & Links


Recent news

July 2:

  • "Best of P3" (click to enlarge). Awesome work, thanks all for participating!

July 1:

  • P3 grades have been uploaded - respond ASAP if you spot a problem.
  • T2 grades and course overview has been uploaded - respond ASAP if there is a problem.

older posts still available here.

Course Overview back to navigation

bunny logo image

Course: "Graphics" is an introductory course about computer graphics. Computer graphics deals with the algorithmic processing of visual (images) and spatial (geometry) data. The course will focus on the very basics of modeling and rendering, i.e., the mathematical description of three-dimensional scenes and how to create (realistic) images of such models.

Rendering Algorithms: We have several options to convert the mathematical representation of a virtual world into a digital image. Modern games typically rely on the z-buffer algorithm. An alternative approach is ray tracing. In this course we will explore both methods. Ray tracing allows us to produce 'correct' images; rasterization lets us approximate this in real-time.

Math: An important aspect of computer graphics is the use of mathematics. This course provides a short coverage of the mathematical basics needed for rendering. We will introduce fundamental concepts of linear algebra and other areas of higher mathematics that are important far beyond the field of graphics.

The lecture will be given in Dutch.

Het officiële rooster is beschikbaar via Osiris. officiële cursusinformatie via Klik hier voor de lijst van studenten voor dit vak.

Lecture back to navigation

Lecturer: Jacco Bikker (

Teaching Assistants:


  • Gerben Aalvanger
  • Hugo Hogenbirk
  • Bruno dos Santos Carvalhal
  • Casper Schouls
  • Sam van der Wal
  • Tuesdays, 09:00h - 10:45h,
    Room KBG-COSMOS (starting week #17)
  • Thursdays, 13:15h - 15:00h,
    Room KBG-COSMOS (starting week #17)

Practicals tutorial/consultation hours

  • Practical tutorials are offered after the lectures on Tuesdays.
  • Room allocation is complex; see schedule.
  • Practical tutorials start on Tue May 3 (second week of the course).

Topics back to navigation

Mathematics (40%)

Linear algebra

  • Points & vectors
  • Matrices & linear maps
  • Affine transformations
  • Linear systems & determinants

Projective geometry

  • Homogeneous coordinates
  • Projection matrices

Geometric modeling

  • Primitives (triangles, spheres, etc.)
  • Curves and surfaces
  • Differential properties / normals
Core Graphics (40%)


  • Ray visibility queries
  • Data structures
  • Recursive raytracing (shadows, reflections, transparency)


  • Camera models / perspective projection
  • Visibility algorithms
  • Rasterization pipeline

Special effects

  • Basic materials
  • Shadows
Advanced Graphics (20%)

Global Illumination

  • Basic ideas of physically-accurate rendering

Rendering hardware

  • Shaders
  • Programmable shaders

(These subjects will be touched upon only briefly.)

The list is intended to give a rough orientation; topics might still be subject to change, and additional aspects might be covered.

Lecture Slides & Recommended Readingsback to navigation

Below is a list of all lectures with a very brief summary of the topics, slides downloads, and recommended readings to prepare for the lecture.

Lecture 01
Tue Apr 26

Topic: Introduction and Graphics Fundamentals. Course structure, organization, formalities. Introduction to the field of computer graphics.

Suggested readings:

No recommendations. Rules / formalities are also listed on this webpage.


lecture1 - introduction.pdf

Lecture 02
Thu Apr 28

Topic: Rasters, Colors & Geometry. The raster display. Color representations. Vectors and coordinate systems. Implicit and parametric geometry representation.

Suggested readings:

Textbook Chapter 2.1, 2.4 (these sections cover more material than the topics listed above; the first halves of the respective chapters are most relevant), 2.5, 3.2 and 3.3.


lecture2 - rasters, vectors, colors.pdf

Lecture 03
Tue May 3

Topic: Ray Tracing Introduction. Procedural and look-up textures. Texture filtering techniques. Rays, intersections, camera.

Suggested readings:

Textbook Chapter 4.1 - 4.4. Chapter 11.2.


lecture3 - ray tracing intro.pdf

Lecture 04
Tue May 10

Topic: Lights & Shadows. Normal vectors, basic shading, shadow rays.

Suggested readings:

Textbook Chapter 4.5, 4.7 and 4.8. Chapter 10.1. Chapter 20.1.


lecture4 - ray tracing (2).pdf

Lecture 05
Thu May 12

Topic: Reflections. Pure specular materials, refraction. Snell and Fresnel. Recursive ray tracing and the ray tree.  

Suggested readings:

Textbook Chapter 4.6 and 4.8. Chapter 13.1.


lecture5 - ray tracing (3).pdf

Lecture 06
Tue May 17

Topic: Various Boxes. Ray/box intersection. Transformed rays and oriented boxes. Ray tracing efficiency. Incremental rendering.


lecture6 - boxes.pdf

Lecture 07
Thu May 19

Topic: Accelerate. Object and spatial subdivisions for fast ray tracing.

Suggested readings:

Textbook 12.3 and 12.4. Note that we deviate significantly from the book on these topics.


lecture7 - accelerate.pdf













Midterm Exam
Tue, May 24

Midterm Exam: Tue May 24 2016, 11:00-13:00 in EDUC-GAMMA.

What to study: Slides for lectures 1-7, suggested readings for these lectures, tutorials 1 and 2.

For this exam, you are not allowed to bring notes.

Lecture 08
Tue May 31

Topic: 3D Engine Fundamentals. Matrix operations. Coordinate systems and transforms.

Suggested readings:

Textbook Chapter 5 and 6.


lecture8 - engine fundamentals.pdf

Lecture 09
Thu June 02

Topic: Transformations. Matrices for projection and perspective. The scenegraph. Connectivity data. Rasterization.

Suggested readings:

Textbook Chapter 7, 8.1, 12.1 and 12.2. Note: not all information in the textbook is covered, and some of it is presented differently (most notably, triangle rasterization).


lecture9 - transformations.pdf

Lecture 10
Tue June 07

Topic: Shading Models. BRDF, energy equilibrium, Lambert, Phong.

Suggested readings:

Textbook Chapter 10.1, 10.2, 20.1.


lecture10 - shading models.pdf

Lecture 11
Thu June 09

Topic: Visibility. Depth sorting. Fine-grained and large-scale visibility determination. Level of detail.

Suggested readings:

Textbook Chapter 8.2, 8.4 and 12.4.


lecture11 - visibility.pdf

Lecture 12
Tue June 14

Topic: Postprocessing.

Suggested readings:

Just the slides.


lecture12 - post-processing.pdf

Lecture 13
Thu June 16

Topic: Stochastic Methods. Soft shadows, diffuse reflections, Monte-Carlo, Distributed Ray Tracing.

Suggested readings:

Textbook Chapter 13.4, 14 (as a whole), 24.1, 24.2.


lecture13 - stochastic.pdf

Lecture 14
Tue June 21

Topic: Grand Recap. Ask questions for the final exam!

Suggested readings:

All slides.


lecture14 - grand recap new.pdf

Final Exam
Thu, June 30

Final Exam: Thu June 30 2016, 17:00-20:00, in EDUC-BETA.

Retake Exam
Thu, July 14

Retake Exam: Thu July 14 2016, 13:30-16:30, in OLYMPUS-M.BUITING

Course Schedule back to navigation

Period 4 Schedule

Week Date Lecture / Exams Tutorials Practical #1 Practical #2 Practical #3
17 Tue Apr 26
Lecture 1:
Introduction & Fundamentals

Assignment P1
OpenTK Introduction / Tutorial

Thu Apr 28
Lecture 2:
Rasters, Colors, Geometry

18 Tue May 3
Lecture 3:
Ray Tracing Introduction
Practical #1
BBG-079, 083, 109, 112

Assignment P2:

Whitted-style ray tracing

Thu May 5
(Ascension Day)

19 Tue May 10
Lecture 4:
Ray Tracing Part 2
Practical #2
BBG-017, 109, 112
Wed May 11, 23:59h
Thu May 12
Lecture 5:
Ray Tracing Part 3

20 Tue May 17
Lecture 6:
Various Boxes
Practical #3
BBG-079, 017, 109, 112
Thu May 19
Lecture 7:

21 Tue May 24
Midterm Exam  EDUC-GAMMA
22 Tue May 31
Lecture 8:
3D Engine Fundamentals
Practical #4
BBG-023, 083, 109, 112
Tue May 31, 23:59h

Assignment P3:

Thu June 2
Lecture 9:

23 Tue June 7
Lecture 10:
Shading Models
Practical #5
BBG-023, 083, 109, 112
Thu June 9
Lecture 11:

24 Tue June 14
Lecture 12:
Practical #6
BBG-023, 083, 109, 112
Thu June 16
Lecture 13:
Stochastic Methods
Tue June 21
Lecture 14:
Grand Recap
Practical #7
BBG-023, 083, 109, 112

Thu June 23

26 Thu June 30
Final Exam Deadline:
Tue, June 28, 23:59h

Thu July 14
Retake Exam


Tutorials back to navigation


During the course we will hand out tutorial sheets.

  • The tutorials cover the theoretical aspects of the lecture.
  • There will be several (~5) assignment sheets throughout the semester. It is expected that you work on them in self studies. Please take this seriously! You will need the practice!
  • This year there are no supervised tutorials (despite what Osiris may tell you). You can ask questions about the tutorials during the working colleges instead.
  • The tutorials are a very good preparation for the midterm and final exam.
    Reading the textbook and attending the lectures is a good idea, but you can only be sure that you understood the material if you succeed in solving the assignments. The assignments in the tutorials will be very much like what you can expect in the written tests.

Assignment Sheets / Downloads

This set is now complete.

Practicals back to navigation


There will be three practical assignments, covering traditional rasterization algorithms, shaders and ray tracing. The first assignment will be online on Tuesday, April 26. We recommend that you start working on it right away.

Practicals tutorial/consultation hours

On Tuesdays, teaching assistants will be present in various rooms to help you if you have questions. These practical tutorials are offered after the lectures on Tuesdays. Please see the schedule for a list of available rooms for each week.


  • Additional rooms are typically available. In these rooms, no TA is present, but the room is reserved for this course, so you may use it if you need the hardware / software.
  • Practical tutorials start on Tue May 3 (second week of the course).
  • We might adapt the consultation hours (extend before deadlines, shorten elsewhere).

Important Rules

Because of the large group of students taking this lecture, we need strict rules to keep everything manageable. The most important rules are listed below. Further explanations might be given during the lecture.

  • Grading: You have to hand in all practical assignments. Your grade from the practicals has to be at least 5.0 to pass this course (cf. exams & grading).
  • Working in teams: The programming assignments must be done in groups of 2 or 3 students. If you submit alone without prior consultation with the course instructor, the grade of your submission will be reduced by 1.0.
    • Building groups: You can choose your partner(s) yourself among your fellow students. If you ca not find one on your own, contact one of the TAs during the practical consultation hours. They will help you to team up with other students.
    • If your partner drops the course: contact the instructor immediately. You will either be assigned a new partner or be allowed to work alone without penalty. Working alone without prior consultation reduces your grade.
    • Project team responsibility: It is up to you how you split the work among your team members. However, this freedom comes at the price that you have to be prepared for situations such as team members dropping the course or not delivering what they promised to you. It is your responsibility to make sure that you are aware of your team's progress, so you can react to such issues in an appropriate way.
  • Students doing the course a second time: For this year's course, the practicals have been redesigned. As a consequence, you cannot reuse last year's results.

Soft- / Hardware and Infrastructure:

  • Required equipment: For the practicals, you need a Windows PC with Visual Studio. The free Community Edition of Visual Studio is a good platform for C# development. We will be using OpenTK to access OpenGL from C#. This is also free software.
  • Alternative platforms: For this course, support will be mostly limited to Microsoft Windows and C#. You may of course use alternative platforms and programming languages, but an appropriate level of autonomy is expected in that case.
  • All necessary hard- and software is installed on the computers in the reserved rooms.
  • "Groep indeling" and TA-support: Ignore the "groep indeling" on OSIRIS. There are no groups other than the teams you form with your fellow students, and there are no fixed time slots where you have to be present.


There is an online discussion forum where the TAs and lecturer answer your questions (this is a best-effort offer; no guarantees; in particular, close to deadlines):

You can also join us on Slack using your address:


Assignment P1: OpenTK Tutorial
Assignment P2: Ray Tracing
Assignment P3: Advanced shaders

(1) Graphics Programming Tutorial

The first assignment is basically a tutorial that teaches you how to set up the framework that we will be using (VisualStudio, C#, OpenTK), and introduce you to some of the basics of graphics programming.


(2) Whitted-style Ray Tracing

In the second assignment you will create a basic recursive ray tracer, featuring shadows, reflections and refraction.


(3) Real-time

In the third assignment you will create a basic 3D engine using hardware rasterization via OpenGL.


Assignment P1

The first assignment is a tutorial introducing basic 2D graphics, coordinate systems, and OpenTK. OpenTK allows us to create OpenGL applications in C#. Details for the assignment are in the document which you can download below.



  • Wednesday, May 11, 2016, 23:59h
  • Late submission: May 12, 2016, 12:00 (noon) (with 0.5 points deduction)
  • Very late submission: May 12, 2016, 23:59 (with 1.0 points deduction)


Assignment P2

The second assignment is all about ray tracing. Full details are in the assignment description which you can download below.



  • Tuesday, May 31, 2016, 23:59h
  • Late submission: June 1, 2016, 12:00 (noon) (with 0.5 points deduction)
  • Very late submission: June 1, 2016, 23:59 (with 1.0 points deduction)


Assignment P3

For the third and final assignment, you will be creating a small 3D engine based on the supplied template.



  • Tuesday, June 28, 2016, 23:59h
  • Late submission: June 29, 2016, 12:00 (noon) (with 0.5 points deduction)
  • Very late submission: June 29, 2016, 23:59 (with 1.0 points deduction)


Exam & Grading back to navigation


Programming assignments: There will be three programming assignments throughout the semester. The final grading P for your programming assignments makes up 1/3 of your overall grade for this course. It is calculated as follows: P=0.2*P1+0.4*P2+0.4*P3. P must be at least 5.0 (before rounding) to pass the course.

Exams: There will be a midterm exam T1 and a final exam T2. The final grading T for your exams makes up 2/3 of your overall grade for this course. It is calculated as follows: T = 0.5*T1 + 0.5*T2. T must be at least 5.0 (before rounding) to pass the course.

Final grade: If both T (= the grade for the written exams) and P (= the programming grade) are at least 5.0, the final grade for the course is (2T + P) / 3. Your final grade must be at least 6 (after rounding) to pass the course.


If you did not pass the course but your final grade for the course is at least 4.0 (before rounding), you are entitled to participate in a retake. This can either be a retake assignment or a retake exam.

Retake (exam) T3: This exam will cover all lectures and tutorials. The result from your retake exam T3 will replace the lower one of your original scores, i.e. either T1 or T2 if and only if it improves your final grade. Criteria for passing stay the same as indicated above (i.e. P and T must be at least 5.0 before rounding, and your final grade must be at least 6 after rounding). 

Retake (practicals): There will be one retake assignment that can replace either P1, P2, or P3 if it improves your final grade. The topic for the retake assignment is decided individually. To get your assignment and related deadlines, contact the instructor.

Exceptions: Exceptions to these rules in principle always require involvement of the study coach.


To be released.


Literature & Links back to navigation


  • The textbook of this course is Fundamentals of Computer Graphics by Peter Shirley et al.. The course is designed based on the 3rd edition of the book. Since the basics (which we are covering) did not change that much, older editions might work, too (no promises).
  • Here is the web page of the text book.

Additional resources for the practicals:

Resources that might be helpful, especially for programming assignment 2 and 3:

Web references:


News Archive back to navigation

Old posts

June 30:

  • Exam with notes can be downloaded by clicking here.

June 21:

June 16:

June 14:

June 9:

June 8:

  • Grades for P2 ("Ray Tracing") are now available.
  • "Best of P2" (click to enlarge, best watched with this background music):

June 7:

  • Math tutorial sheet T4 has been uploaded.
  • Today's slides have been uploaded.

June 2:

  • Fix for the P3 template to be not as culture sensitive (thanks Mathijs!).
  • Slides for today's lecture ("Transformations") have been uploaded.

June 1:

  • Math tutorial sheet T3 has been uploaded.

May 31:

May 25:

  • Mid-term exam grades are ready.

May 24:

May 19:

  • Grades for P1 (in .xlsx format) can be downloaded via this link.
  • Slides for lecture 7 are now online.

May 18:

May 17:

  • Example mid-term exam: check here.
  • Slides for the illegally long lecture 6.

May 12:

May 10:

May 4:

  • Assignment 2 details now available.

May 3:

April 26:

April 26:

April 25:

  • Assignment P1 details now available.

April 22:

April 4:

  • Initial version of the 2015/2016 website.