Graphics

Utrecht University - Information and Computing Sciences

academic year 2022/23 – 4th period

title image title image title image

Navigation

Course Overview

Exam & Grading

Join us on Teams!Microsoft Teams icon

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.

This course takes place offline, in person, on campus. Please join us there!
We expect that the greater part of our communication will be offline during the lectures and tutorial sessions. Please use Teams as a way to interact with each other and with us, but we may not be able to respond quickly to Teams questions.

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)

Student Assistants:

  •   Pepijn Bakker
  •   Romeo Zeph
  •   Georgios Psomathianos
  •   Guido Mintjes
  •   Gideon Ogilvie
  •   Tjalle Schoonderwoerd
  •   Jonne Visser

Teaching Assistants:

  •   Sarita de Berg
  •   Victor Stenvers


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-primitive intersections
  • Visibility queries
  • Data structures
  • Recursive ray tracing (shadows, reflections, transparency)

Rasterization

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

Special effects

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

Global Illumination

  • Basic ideas of physically-accurate rendering

Acceleration Structures

  • Bounding volume hierarchy

(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
17 Tue Apr 25 11:00 - 12:45
Ruppert BLAUW
Introduction
Math: Vectors

Assignment P0:

OpenTK warm-up

Thu Apr 27 KING'S DAY
18 Tue May 2
11:00 - 12:45
Ruppert BLAUW
Math: 2D Geometry
Thu May 4
13:15 - 15:00
Educ THEATRON
Math: 3D Geometry
15:15 - 17:00
Padualaan PORTA 019, BBG 223, 079, 161

Math Tutorial: Vectors & 2D Geometry (no need to hand in!)
19
Tue May 9
11:00 - 12:45
Ruppert BLAUW
Graphics: Ray Tracing

Assignment P1:

Ray Tracing

Thu May 11 13:15 - 15:00
Educ THEATRON
Graphics: Shadows and Shading
17:15 - 19:00
BBG 201, 209, 214, 001

Math Tutorial: 2D and 3D Geometry
20
Tue May 16
11:00 - 12:45
Ruppert BLAUW
Graphics: Reflection and Refraction
Thu May 18
ASCENSION DAY
21 Tue May 23
13:30 - 15:30
Olympos HAL 3

MIDTERM EXAM
Thu May 25
13:15 - 15:00
Educ THEATRON
Graphics: Texturing

17:15 - 19:00
BBG 201, 209, 214, 001

Practical #1 Support
22 Tue May 30 11:00 - 12:45
Ruppert BLAUW
Graphics: Advanced Ray Tracing
Thu Jun 1
13:15 - 15:00
Educ THEATRON
Math: Matrices
P1 Deadline:
Fri June 2
17:00
23 Tue Jun 6
11:00 - 12:45
Ruppert BLAUW
Math: Transformations

Assignment P2:

Rasterization
Thu Jun 8 13:15 - 15:00
Educ THEATRON
Graphics: Rasterization
17:15 - 19:00
BBG 201, 209, 214, 001

Math Tutorial: Matrices
24 Tue Jun 13 11:00 - 12:45
Ruppert BLAUW
Graphics: GPU Pipeline

Thu Jun 15 13:15 - 15:00
Educ THEATRON
Graphics: OpenGL
17:15 - 19:00
BBG 201, 209, 214, 001

Math: Transformations
25 Tue Jun 20 13:30 - 15:30
Educ GAMMA
FINAL EXAM
Thu Jun 22 13:15 - 15:00
Educ THEATRON
Graphics: Shaders
17:15 - 19:00
BBG 201, 209, 214, 001

Practical #2 Support
Fri Jun 23
15:15 - 17:17
BBG 017
Practical #2 helping afternoon by study association Sticky
26

(exam week for other courses)
P2 Deadline:
Fri Jun 30
17:00



...
28
Thu Jul 13
17:00 - 19:00
Ruppert 038
RETAKE EXAM
Practical Retake Deadline:
Mon Jul 17
17:00

 


Math Tutorials & Examsback to navigation



MATH TUTORIALS

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 4 you should have finished all exercises on Vectors and 2D Geometry.
  • Presence at the Math tutorial sessions (certain Thursdays, usually 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 "Math Tutorials" 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’.

MATH EXAMS

The exams will take place on campus, digitally, on university computers, using the Remindo system. Bring a pen/pencil so you can sketch geometry questions or do calculations on paper. You're allowed to bring a simple, non-graphing calculator. Remindo also has a simple calculator built in.

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 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 us.
  • 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, but you will be expected to complete the same amount of work as a two-person team. 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 on the Teams channel "Graphics Practicals" or during the tutorial sessions. We 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 or share your projects publicly, e.g., on GitHub. If your code is used by another team you may be penalized as well. Sharing ideas is fine, of course.

    • We recognize the value of AI assistive technologies for programming such as GPT or Copilot to understand and improve code. However, using such tools to produce significant amounts of code is considered plagiarism.

  • Exceptions to the rules:


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 9).


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):
  • Friday, June 2, 17:00
  • Hand-in on Blackboard
  • Late submission: June 2, 23:59 (with 0.5 points deduction)
  • Very late submission: June 3, 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 30, 17:00
  • Hand-in on Blackboard
  • Late submission: June 30, 23:59 (with 0.5 points deduction)
  • Very late submission: July 1, 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 one 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: All exceptions require involvement of the study advisor. Ask the study advisor to email us directly with their suggested exception.

Literature & Links back to navigation

Textbook:

Additional free online resources that might be helpful:

About this course: