Graphics

Utrecht University - Information and Computing Sciences

academic year 2021/22 – 4th period

title image title image title image

Navigation

Course Overview

Exam & Grading

Join us on Teams!

Teaching Team

Schedule

Literature & Links


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 information on this website is static; announcements and discussions will be on Teams.

Note that thanks to the easing/lifting of Corona restrictions, INFOGR takes place in person on campus. Please join us there!
We will focus our efforts to organize the graphics course offline. So we expect that the greater part of our communication will be offline during the lectures, tutorial sessions, and practicals. Please see Teams as a way to interact with each other and with us in the case of an emergency. We cannot respond to Teams questions as fast as in the case of an online course, except if they address an urgent matter.

This course will be taught in English.

Teaching Team back to navigation

Lecturers:     (email both of us if you have a personal question that cannot be asked in Teams)

Teaching Assistants:

  •   Aleksej Cornelissen
  •   Ilan Hartskeerl
  •   Pieter Brune
  •   Nathan Oerlemans
  •   Martijn Drenth
  •   Niels Kwadijk
  •   Jorik Roebroek
  •   Tessel Haagen

Math Tutorials:

  •   Sarita de Berg
  •   Fernando Lucatelli Nunes
  •   Tessel Haagen
  •   Jorik Roebroek


Topics back to navigation

Mathematics (50%)

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%)

Raytracing

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

Rasterization

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

Special effects

  • Basic materials
  • Shadows
  • Shaders
 
Advanced Graphics (10%)

Global Illumination

  • Basic ideas of physically-accurate rendering

Acceleration Structures

  • BVH

(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.


Course Schedule back to navigation

Period 4 Schedule

Week
Date
Time & Location
Lecture
Tutorial
Practical #0
Practical #1 Practical #2
17 Tue Apr 26 11:00 - 12:45
Ruppert BLAUW
Introduction
Math: Vectors

Assignment P0:

OpenTK



Thu Apr 28 15:15 - 17:00
Educ MEGARON
Math: 2D Geometry


17:15 - 19:00
BBG 2.09/2.14/2.19 / DDW 1.30

Math: Tutorial 1 - Vectors


18 Tue May 3
9:00 - 10:45
BOL 1.204 / Ruppert A / Bestuurs LIEREGG / BBG 1.65

Math: Tutorial 2 - 2D Geometry
   
11:00 - 12:45
Ruppert BLAUW
Math: 3D Geometry



Thu May 5
LIBERATION DAY


19
Tue May 10
9:00 - 10:45
BOL 1.204 / Ruppert A / Bestuurs LIEREGG / BBG 1.65

Math: Tutorial 3 - 2D and 3D Geometry
(no need to hand in!)

Assignment P1:

Ray Tracing

 
11:00 - 12:45
Ruppert BLAUW
Graphics: Ray Tracing


Thu May 12 15:15 - 17:00
Educ MEGARON
Graphics: Shadows and Shading


17:15 - 19:00
BBG 2.09/2.14/2.19 / DDW 1.30

Math: Tutorial 4 - 3D Geometry

20
Tue May 17
9:00 - 10:45
BOL 1.204 / Ruppert A / BBG 2.23/1.65

Practical #1 Support
   
11:00 - 12:45
Ruppert BLAUW
Graphics: Reflection and Refraction



Thu May 19
15:15 - 17:00
Ruppert BLAUW

Graphics: Texturing



17:15 - 19:00
BBG 2.09/2.14/2.19 / DDW 1.30

Practical #1 Support

21 Tue May 24
9:00 - 10:45
BOL 1.204 / Ruppert A / Bestuurs LIEREGG / BBG 1.65

Practical #1 Support    
11:00 - 12:45
Ruppert BLAUW
Advanced Ray Tracing



Thu May 26
ASCENSION DAY


22 Tue May 31 9:00 - 10:45
BOL 1.204 / Ruppert A / Bestuurs LIEREGG / BBG 1.65

Practical #1 Support
& Midterm Math Support

P1 Deadline:
Tue May 31
17:00


11:00 - 12:45
Ruppert BLAUW
Math: Matrices



Thu Jun 2
13:30 - 15:00/15:15
Educ GAMMA
MIDTERM EXAM



23 Tue Jun 7
9:00 - 10:45
BOL 1.204 / BBG 2.14 / Bestuurs LIEREGG / BBG 1.65

Math: Matrices
 

Assignment P2:

Rasterization
11:00 - 12:45
Ruppert BLAUW
Math: Transformations



Thu Jun 9 15:15 - 17:00
Ruppert BLAUW
Graphics: Rasterization
   
17:15 - 19:00
BBG 2.09/2.14/2.19 / DDW 1.30

Math: Transformations

24 Tue Jun 14 9:00 - 10:45
BOL 1.204 / Ruppert A / Bestuurs LIEREGG / BBG 1.65

Practical #2 Support
   
11:00 - 12:45
Ruppert BLAUW
Graphics: GPU Pipeline



13:15 - 16:00
BBG 1.61

"Helping Afternoon"
Practical #2 Support
organized by Sticky


Thu Jun 16 15:15 - 17:00
Educ THEATRON
Graphics: OpenGL
   
17:15 - 19:00
BBG 2.09/2.14/2.19 / DDW 1.30

Practical #2 Support

25 Tue Jun 21 9:00 - 10:45
BOL 1.204 / Ruppert A / Bestuurs LIEREGG / BBG 1.65

Practical #2 Support    
11:00 - 12:45
Ruppert BLAUW
Graphics: Shaders



Thu Jun 23 17:15 - 19:00
BBG 2.09/2.14/2.19 / DDW 1.30

Practical #2 Support
& Exam Math Support
    P2 Deadline:
Fri Jun 24
17:00
26 Thu Jun 30
13:30 - 15:30/16:00
Olympos HALL 1
FINAL EXAM



...
28
Thu Jul 14
13:30 - 15:30/16:00
Olympos HALL 2
RETAKE EXAM



 


Math Tutorials back to navigation



MATH ASSIGNMENTS

There will be math assignments during a number of weeks. The exercises cover the topics discussed in the math lectures. We highly recommend that you work on all the assignments as we put a special effort to make sure they prepare you well for the exam.

IMPORTANT RULES
  • You are supposed to work alone on the exercises, for the reason that they prepare you for the exam, which is also individual.
  • You are expected to prepare the solution for the exercises before the tutorial session. So, for example, before the tutorial session on May 3 you should have finished all exercises on Vectors and Lines.
  • Presence at the Math tutorial sessions (certain Tuesdays at 9:00-10:45 and Thursdays at 17:15-19:00) is highly recommended, as the solutions of the exercises will be discussed and you will get a chance to ask questions. During these sessions, we will offer you the possibility to present your solution, either verbally or using the blackboard. This gives you an additional possibility to train your presentation and verbal skills, so please use it as much as you can. Please do not worry: presenting your solution will not influence your grade in any way.
  • Please use the Teams channel "Linear Algebra and Analytic Geometry" to ask questions about the exercises but only do this in two cases:
    • if for some good reason you were not able to attend the corresponding Math tutorial session, or
    • if you don't understand the question of the exercise.
    Make sure your question is concise and suitably specific. We cannot help you if you just state ‘I do not understand this exercise’.

Graphics Practicals back to navigation


PRACTICAL ASSIGNMENTS

There will be two practical assignments, covering the two main rendering algorithms: ray tracing (P1) and rasterization (P2). An introduction practical (P0) that prepares you for these assignments will be online on the first day of the course. We recommend that you start working on it right away.

Important Rules

Because of the large group of students taking this lecture, we need strict rules to keep everything manageable.

  • Presence at the Practicals Support sessions (certain Tuesdays at 9:00-10:45 and Thursdays at 17:15-19:00) is strongly recommended. During these sessions, you should bring your laptop so you can work on the practicals and get help from your classmates and from the TAs.
  • Working in teams: The programming assignments are designed for groups of two students. You may however also work on the assignments alone. Details:
    • Working alone: There is no penalty for working alone on the assignments. It is however not allowed to work in a team of three or more students.
    • Building groups: You can choose your partner yourself among your fellow students. If you cannot find one on your own, ask one of the TAs during the tutorial sessions. They will help you to team up with other students.
    • If your partner drops the course: This is a risk of working in pairs. You may continue working with the materials that you produced together. You can however not continue working on these materials with a new partner.
    • 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.
  • Plagiarism:
    • We use an automated plagiarism detection system. Plagiarism will always be reported and may have severe consequences.

    • Do not store your projects on GitHub or share code in any other way. If your code is used by another team (e.g. in the future) you may be penalized as well. Sharing ideas is fine, of course.

  • Exceptions to the rules:
    • All exceptions require involvement of the study counselor.


Soft- / Hardware and Infrastructure:

  • Required equipment: For the practicals, you need a Windows PC with Visual Studio. The free Community Edition of Visual Studio 2022 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.


(0) Graphics Programming Introduction

Before you start working on the assignments we expect you to complete the provided tutorial, which teaches you how to set up the framework that we will be using (Visual Studio, C#, OpenTK) and introduces you to some of the basics of graphics programming.

 
(1) Ray Tracing

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

Will be announced during the course.

 
(2) Real-time Rasterizer

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

Will be announced during the course.

 

Assignment P0

This assignment introduces basic 2D graphics, coordinate systems, and OpenTK. OpenTK allows us to create OpenGL applications in C#.

Please find the following Files on Teams:

  • C# / OpenTK template (zip)
  • Assignment description (pdf)
Deadline:
  • No need to hand in.
  • Please start working on this assignment from the start of the course and try to finish it before the start of P1 (Tuesday, May 10).


Assignment P1

This assignment is all about ray tracing. You can find all the details in the formal assignment description.

Please find the following Files on Teams:

  • C# / OpenTK template (similar to P0)
  • Assignment description including optional honours assignment (pdf)
Deadline(s):
  • Tuesday, May 31, 17:00
  • Hand-in on Blackboard
  • Late submission: May 31, 23:59 (with 0.5 points deduction)
  • Very late submission: June 1, 17:00 (with 1.0 point deduction)

 

Assignment P2

For this final assignment, you will be creating a small OpenGL-based rasterizer engine. Details are in the formal assignment description.

Please find the following Files on Teams:

  • C# / OpenTK template with post-processing example (new)
  • Assignment description (pdf)
Deadline(s):
  • Friday, June 24, 17:00
  • Hand-in on Blackboard
  • Late submission: June 24, 23:59 (with 0.5 points deduction)
  • Very late submission: June 25, 17:00 (with 1.0 point deduction)

 

Exam & Grading back to navigation

GRADING

Programming assignments: There will be two programming assignments throughout the course. The final grading P for your programming assignments is the average of the two grades for the assignments: P = (P1+P2)/2. 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 is calculated as follows: T = 0.3*T1 + 0.7*T2. T must be at least 5.0 (before rounding) to pass the course.

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

RETAKES AND REQUIREMENTS

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 final exam (T2): This exam will cover all lectures and tutorials. 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 or P2 if it improves your final grade. The topic for the retake assignment is decided on 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.

 

Literature & Links back to navigation

Textbook:

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

Additional resources:

Free online resources that might be helpful:

Web references: