Graphics

Universiteit Utrecht - Information and Computing Sciences

academic year 2018/19 – 4th period

title image title image title image

Navigation

News

Lectures (Topics, Slides)

Exam & Grading

SLACKasdad

Course Overview

Schedule

Tutorials & Practica

Literature & Links

News

Recent news

July 15:


July 2:

  • Updated grade list, now including 'extra time' exams: download. Check carefully!
  • Exam review ("inzagemoment"): Tuesday July 9, 14:00.
  • Signing off for now, please feed the Caracal and see you sometime later!


June 29:


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 language for this course will be English.

The official schedule for this course is available on Osiris. Official course information via www.cs.uu.nl. And here is a list of participants.

Lecture back to navigation

Lecturers:

Teaching Assistants:

Practicals

  • Federico D'Ambrosio (AiO)
  • Mark Dekker (AiO)
  • Jan Posthoorn
  • Willem Wijnia
  • Iwan Boksebeld
  • Niels Kwadijk
  • Hugo Peters
Lecture:

Practicals tutorial/consultation hours

      • Math tutorials are offered after the math lectures (first three lectures and three lectures after the midterm exam).
      • Working colleges take place after all other lectures.
      • Room allocation for tutorials and practicals is complex; see schedule.


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.

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 23 - Intro / Math

Topics: Course introduction, and: Vectors, and vector algebra in 2D. Course structure, organization, formalities. Introduction to scalars, vectors, points.

Suggested readings:

Textbook Chapter 2.

Slides:

Jacco's course introduction
Deb's math introduction

NeedToKnow #1:

Lecture 0 (introduction)

 
Lecture 02
Thu Apr 25 - Math

Topics: Primitives and projections in 2D. Implicit and parametric geometry representation: lines, circles, ellipses. Projection and perspective. Circular coordinate system.

Suggested readings:

Textbook Chapter 2.

Slides:

Lecture 2 slides and annotated notes

 
Lecture 03
  Tue Apr 30 - Math

Topics: Circles, ellipses and lines  in 3D. Plane equations, cross product, ray/sphere intersection.

Suggested readings:

Textbook Chapter 2.

Slides:

Lecture 3 slides and annotated notes

 
Lecture 04
Thu May 2 - Math

Topics: Primitives (continued) and projections in 3D. Plane equations, cross product, ray/sphere intersection.

Suggested readings:

Textbook Chapter 2.

Slides:

Lecture 4 slides and annotated notes

 
Lecture 05
Tue May 7 - Theory

Topics: Ray Tracing (1). Scene representation, camera, primary rays, intersections. Textures: procedural, look-up, tiling, clamping, filtering. 

Suggested readings:

Textbook Chapter 4.1 - 4.4. Chapter 11.2.

Slides:

Lecture 5 slides

NeedToKnow #2:

Lecture 5 - rasters, colors, rays


Lecture 06
Thu May 9 - Theory

Topics: Ray Tracing (2). Normals and normal interpolation, reflections, recursion and Whitted-style ray tracing, the ray tree, shading models. 

Suggested readings:

Textbook Chapter 4.8 and 13.1.

Slides:

Lecture 6 slides

NeedToKnow #3:

Lecture 6 - ray tracing


Lecture 07
Tue May 14 - Theory

Topic: Accelerate. Object and spatial subdivisions for fast ray tracing. Slab test for ray/AABB intersection.

Suggested readings:

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

Slides:

Lecture 7 slides

NeedToKnow #4:

Lecture 7 - ray tracing (2)





Midterm Exam
Thu, May 16

Midterm Exam: Thursday May 16, 17:00-19:00 in EDUC-GAMMA.

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


Lecture 08
Thu May 23 - Math

Topic: Transformations (1).

Suggested readings:

Textbook Chapter 5.

Slides:

Lecture 8 slides


Lecture 09
Tue June 4 - Theory

Topic: OpenGL.

Suggested readings:

Textbook Chapter 6.

Slides:

Lecture 9 slides

NeedToKnow #5:

Lecture 9 - OpenGL

 
Lecture 10
Thu June 6 - Theory

Topic: Shaders. Phong, world & tangent space, normal mapping, rendering fur.

Slides:

Lecture 10 slides

NeedToKnow #6:

Lecture 10 - Shaders

Lecture 11
Tue June 11 - Math

Topic: Transformations (2).

Suggested readings:

Textbook Chapter 7.

Slides:

Lecture 11 slides and annotated notes

 
Lecture 12
Thu June 13 - Math

Topic: Viewing transformations, recap and Q&A.

Suggested readings:

Textbook Chapter 8.1, 17.1..7.

Slides:

Lecture 12 slides

 
Lecture 13
Tue June 18 - Theory

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

Suggested readings:

Textbook Chapter 8.4, 12.4.

Slides:

Lecture 13 slides

NeedToKnow #7:

Lecture 13 - Visibility

Lecture 14
Thu June 20 - Theory

Topic: Postprocessing, and: Grand Recap. Ask your final questions for the exam!

Suggested readings:

All slides.

Slides:

Lecture 14 slides

 
   
Final Exam
Thu, June 27

Final Exam: Thu June 27, 13:30-16:30, in EDUC-GAMMA.

Retake Exam
Thu, July 11

Retake Exam: Thu July 11, 13:30-16:30, in EDUC-GAMMA.

Course Schedule back to navigation

Period 4 Schedule

Week Date Lecture / Exams Tutorials Practical #1 Practical #2 Practical #3
17 Tue Apr 23
09:00-10:45
Lecture 1  in MEGARON
Introduction, vectors, coords
Practice math in:
BBG-001; MIN-2.02; BBG-023

Assignment P1
OpenTK Introduction

   
Thu Apr 25
13:15-15:00
Lecture 2  in COSMOS
Math: Points & lines in 2D
Practice math in:
BBG161; BOL0.204;Best-Lieregg
   
18 Tue Apr 30
09:00-10:45
Lecture 3  in MEGARON
Math: Expanding to 3D
Practice math in:
BBG-001; DDW-0.42; BBG-161

Assignment P2:

Whitted-style ray tracing

 
Thu May 2
13:15-15:00
Lecture 4  in COSMOS
Math: Projections in 3D
Practice math in:
BBG161; BOL0.204;Best-Lieregg
 
19 Tue May 7
09:00-10:45
Lecture 5  in MEGARON
Theory: Ray tracing (1)
Write a ray tracer in:
BBG-001; MIN-2.02; BBG-161
Deadline:
Tue May 7, 23:59h
 
Thu May 9
13:15-15:00
Lecture 6  in COSMOS
Theory: Ray tracing (2)
Write a ray tracer in:
BBG161; BOL0.204;Best-Lieregg


20 Tue May 14
09:00-10:45
Lecture 7  in MEGARON
Theory:  Accelerate.
Write a ray tracer in:
BBG-001; BBG-061; BBG-214
   
Thu May 16
17:00-19:00
Midterm Exam



21 Tue May 21
NO LECTURE




Thu May 23
13:15-15:00
Lecture 8  in COSMOS
Math: Transformations (1)
Finish the ray tracer in:
BBG161;BOL0.204;Best-Lieregg
 
22 Tue May 28
09:00-10:45
DUE TO OV STRIKE:
Online Working Lecture on Slack, 09:00 - 13:00
  Deadline:
Tue May 28, 23:59h

Assignment P3:

Rasterization
Thu May 30
NO LECTURE


 
23 Tue June 4
09:00-10:45
Lecture 9  in RUPPERT BLAUW
Theory: OpenGL
Code & calculate in:
BOL0.204;Best-Liereg;MIN-2.02
 
Thu June 6
13:15-15:00
Lecture 10  in COSMOS
Theory: Shaders
Code & calculate in:
BBG161;BOL-0.204;Best-Lieregg
   
24 Tue June 11
09:00-10:45
Lecture 11  in RUPPERT BLAUW
Math: Transformations (2)
Code & calculate in:
BBG-001; Best-Lieregg;BBG-214
   
Thu June 13
13:15-15:00
Lecture 12  in COSMOS
Math: View transforms, Q&A
Code & calculate in:
BBG-161;BOL0.204;Best-Lieregg
   
25
Tue June 18
09:00-10:45
Lecture 13  in RUPPERT BLAUW
Theory: Visibility
Code & calculate in:
BBG-001; MIN 2.02; BBG-214;


Thu June 20
13:15-15:00
Lecture 14  in COSMOS
Theory: Post-processing
Last minute advice in:
BBG161;BOL0.204;Best-Lieregg


26 Thu June 27
13:30-16:30
Final Exam in EDUC GAMMA
P3 Deadline:
Tue, June 25, 23:59h
...

28
Thu July 11
13:30-16:30
Retake Exam in EDUC GAMMA                                                           .

 

Tutorials back to navigation

Overview

During the course we will hand out tutorial sheets.

  • The tutorials cover the mathematical aspects of the course.
  • There will be several problem sheets throughout the semester. It is expected that you work on these at home and during the tutorial sessions. Please take this seriously! You will need the practice!
  • 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 these problems. The problems in the tutorials will be very much like what you can expect in the written tests.

Assignment Sheets / Downloads

Sheet 1: Vectors and vector algebra, and: solutions.
Sheet 2: Vector algebra (continued), primitives and projections in 2D, and: solutions.
Sheet 3: Shapes in 3D, (hyper) planes and the cross product, and: solutions.
Sheet 4: Primitives (continued) and projections in 3D, and: solutions. Both v2.
Sheet 5 (v2): Matrices and introduction to transformations, and: solutions.
Sheet 6: Matrix Reloaded 1 - Transformations, and: solutions.
Sheet 7: Matrix Reloaded 2 - Viewing Transformations, and: solutions.


Tutorials & Practicals back to navigation

MATH TUtorials

During the course we will hand out tutorial sheets.

  • The tutorials cover the mathematical aspects of the course.
  • There will be several problem sheets throughout the semester. It is expected that you work on these at home and during the tutorial sessions. Please take this seriously! You will need the practice!
  • 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 these problems. The problems in the tutorials will be very much like what you can expect in the written tests.

Assignment Sheets / Downloads

Will be made available during the course.


PRACTICAL ASSIGNMENTS

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

Practicals tutorial/consultation hours

After each lecture, teaching assistants will be present in various rooms to help you with the mathematics and practicals. Please see the schedule for a list of available rooms for each week.

Important Rules

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

  • Working in teams: Programming assignments 2 and 3 are designed for groups of 2 students. Details:
    • Assignment 1: The introduction assignment is a solo assignment. You can find a partner for assignment 2 and 3 after doing this assignment.
    • Working alone: This year there is no penalty for working alone on the assignments. This is an experiment.
    • Building groups: You can choose your partner(s) yourself among your fellow students. If you can 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: 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.
  • Rules for returning customers:
    • You can not reuse your grades this year; we have new assignments.

  • Plagiarism:
    • We use an automated plagiarism 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, Corine de Gee (c.degee@uu.nl).


Soft- / Hardware and Infrastructure:

  • Required equipment: For the practicals, you need a Windows PC with Visual Studio. The free Community Edition of Visual Studio 2017 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.
  • "Groep indeling" and TA-support: Respect the "groep indeling" on OSIRIS.


(1) Graphics Programming Introduction

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

Will be announced before the course starts.

 
(2) Whitted-style Ray Tracing

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

Will be announced during the course.

 
(3) Real-time

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

Will be announced during the course.

Assignment P1

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

Files:

Available after lecture 1.

Deadline(s):

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

 

Assignment P2

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

Files:

Deadline(s):

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

 

Assignment P3

For the third and final assignment, you will be creating a small 2.5D engine. Details are in the formal assignment description.

Files:

Deadline(s):
  • Tuesday, June 25, 23:59h
  • Late submission: June 26, 12:00 (noon) (with 0.5 points deduction)
  • Very late submission: June 26, 23:59 (with 1.0 points deduction)

 

Exam & Grading back to navigation

GRADING

Programming assignments: There will be three programming assignments throughout the course. The final grading P for your programming assignments 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 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 written 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 (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, will replace one exam grade in such a way that the positive impact on your final grade is maximal. I.e.: either T1 or T2 if and only if it improves your final grade. In most cases this will be T2, since this exam has a higher weight. 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 P2 or P3 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.

Results

To be released.

 

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

Other resources will be added during the course.

Web references:

 

News Archive back to navigation

Old posts

June 28:

  • Expect a more visual impression of P3 after the weekend.
  • And here is the complete grade overview (v2), including the exam grade list.
  • Version 2 does not yet include 'extented time' participants; will be added on Tuesday.


June 21:


June 18:


June 17:


June 13:


June 11:


June 10:


June 6:

  • Slides and 'NeedToKnow' for lecture 10 ("Shaders") now available.


June 5:


June 4:

  • Lecture 9 ("OpenGL") slides and NeedToKnow now available.
  • Grades for assignment P2 are available. Media will follow later.


June 1:


May 27:


May 24:

  • Slides for lecture 8 now available.
  • Exam review for the midterm exam: Wednesday May 29, 14:45 to 15:45.

May 23:

  • Schedule has been changed to accommodate the public transport strike on May 28.
  • May 28: there will be an online working lecture on Slack, 09:00 - 13:00.

May 20:


May 16:


May 15:


May 14:

  • Slides & NeedToKnow for today's lecture now available.
  • P1 grades now available: download. Use the code sent to you to find your result.

May 13:

  • Finalize your midterm preparations:
  • Check your answers to the official midterm practice exam
  • Check your answers to last year's midterm.
  • Check your answers to the midterm from two years ago.

May 9:

May 8:


May 7:


May 6:

  • Tutorial 1 and 2 solutions can now be downloaded.


May 3:


May 2:


Apr 30:


Apr 25:


Apr 23:


Apr 17:


Apr 4:

  • INFOGR2018 Slack channel now open: welcome! (uu.nl e-mail address required)

Feb 26:

  • Initial version of this website.