# Universiteit Utrecht - Information and Computing Sciences

academic year 2016/17 – 4th period

 News Tutorials Exam & Grading Course Overview Schedule Practica Literature & Links

## News

Recent news

July 17:

July 3:

June 30:

June 29:

older posts will be moved here.

## Course Overview

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

Lecturers:

Teaching Assistants:

Practicals

• Kevin van Mastrigt
• Sander Vanheste
• Zino Onomiwo
• Hugo Hogenbirk
• Niek Mulleners
Lecture:

Practicals tutorial/consultation hours

• Math tutorials are offered after the lectures on Tuesdays.
• Working colleges take place after the lectures on Thursdays.
• Room allocation is complex; see schedule.

## Topics

 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 Readings

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 25 - Intro Topics: Introduction and Graphics Fundamentals. Course structure, organization, formalities. Introduction to the field of computer graphics. Rasters, Colors & Geometry. The raster display. Color representations. Suggested readings: Textbook Chapter 3.2 and 3.3. Slides:

 Lecture 02 Tue May 2 - Math Topics: 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) and 2.5. Materials:

 Lecture 03   Thu May 4 - Theory Topics: Ray Tracing. 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 04 Tue May 9 - Math Topics: Vectors, co-ordinate systems, primitives and projections in 2D continued, and vectors, coordinate systems primitives and projections in 3D. Suggested readings: Textbook Chapter 2.1, 2.4 and 2.5. Materials:

 Lecture 05 Thu May 11 - 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 06 Tue May 16 - Math Topic:Coordinate systems in 3D. Cylindrical and spherical coordinate system, projections in 3D. Light transport: reflection, Fresnel. Suggested readings: Textbook Chapter 4.8 and 13.1. Materials:

 Lecture 07 Thu May 18 - 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:

 Midterm Exam Tue, May 23 Midterm Exam: Tue May 23, 08:30-10:30 in EDUC-GAMMA. What to study: Slides for lectures 1-7, suggested readings for these lectures, tutorials 1, 2 and 3. You may also want to take a look at the 2016 midterm exam. And maybe you even find the 2015 midterm exam useful. Note that this year's tutorials are a better indication of what to expect in terms of math questions! For this exam, you are not allowed to bring notes.
 Lecture 08 Tue May 31 - Theory Topic: OpenGL. Suggested readings: Textbook Chapter 8.1, 17.1..7. Slides:

 Lecture 09 Thu June 02 - Math Topic: Matrices. Suggested readings: Textbook Chapter 5 and 6. Materials:

 Lecture 10 Tue June 06 - Theory Topic: Shading. Suggested readings: Textbook chapter 10.1, 10.2, 17.8..13. Slides:
 Lecture 11 Thu June 08 - Math Topic: Matrices and Transformations. Suggested readings: Textbook Chapter 7. Materials:

 Lecture 12 Tue June 13 - 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 Thu June 15 - Math Topic: Jacobians and 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. Materials:
 Lecture 14 Tue June 20 - Theory Topic: Postprocessing. Slides:

 Lecture 15 Thu June 22 Topic: Grand Recap. Ask your final questions for the exam! Suggested readings: All slides. Slides (theory part):

 Final Exam Thu, June 30 Final Exam: Thu June 29, 13:30-16:30, in OLYMPOS-HAL2.
 Retake Exam Thu, July 13 Retake Exam: Thu July 13, 13:30-16:30, in EDUC-BETA.

## Course Schedule

Period 4 Schedule

 Week Date Lecture / Exams Tutorials Practical #1 Practical #2 Practical #3 17 Tue Apr 25 09:00-10:45 Lecture 1: Introduction & Fundamentals Assignment P1 OpenTK Introduction / Tutorial Thu Apr 27 13:15-15:00 NO LECTURE (Ascension Day) 18 Tue May 2 09:00-10:45 Lecture 2: Math: Vectors & Coordinates Tutorial in BBG-001, 161, 214 Assignment P2: Whitted-style ray tracing Thu May 4 13:15-15:00 Lecture 3: Ray Tracing Practical in BBG-103, 106, 109; KBG 228, UNNIK 101, 104 19 Tue May 9 09:00-10:45 Lecture 4: Math: Vectors & Coords (2) Tutorial in BBG-001, 161, 214 Deadline: Wed May 10, 23:59h Thu May 11 13:15-15:00 Lecture 5: Ray Tracing (2) Practical in BBG-103, 106, 109; KBG 228, UNNIK 101, 105 20 Tue May 16 09:00-10:45 Lecture 6: Math: Coordinates in 3D Tutorial in BBG-001, 161, 214 Thu May 18 13:15-15:00 Lecture 7: Accelerate Practical in BBG-103, 106, 109; KBG 228, UNNIK 101, 105 21 Tue May 23 08:30-10:30 Midterm Exam EDUC-GAMMA 22 Tue May 30 09:00-10:45 Lecture 8: OpenGL Practical in BBG-001, 161, 214 Deadline: Tue May 30, 23:59h Assignment P3: Rasterization Thu June 1 13:15-15:00 Lecture 9: Math: Transformations Tutorial in BBG-103, 106, 109; KBG 228, UNNIK 101, 105 23 Tue June 6 09:00-10:45 Lecture 10: Shading Practical in BBG-001, 161, 214 Thu June 8 13:15-15:00 Lecture 11: Math: Matrices (2) Tutorial in BBG-103, 106, 109; KBG 228, UNNIK 101, 105 24 Tue June 13 09:00-10:45 Lecture 12: Visibility Thu June 15 13:15-15:00 Lecture 13: Math: Stochastic Methods Tutorial in BBG-103, 106, 109; KBG 228, UNNIK 101, 105 25 Tue June 20 09:00-10:45 Lecture 14: Post-processing Practical in BBG-001, 161, 214 Thu June 22 13:15-15:00 Lecture 15: Grand Recap 26 Thu June 29 13:30-16:30 Final Exam Deadline: Tue, June 27, 23:59h ... 28 Thu July 13 13:30-16:30 Retake Exam

## Tutorials

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.

Remaining sheets will be made available during the course.

## Practicals

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

Remarks:

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

Assignments:

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

 (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. Files: Deadline(s): Wednesday, May 10, 23:59h Late submission: May 11, 12:00 (noon) (with 0.5 points deduction) Very late submission: May 11, 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. Files: Deadline(s): Tuesday, May 30, 23:59h Late submission: May 31, 12:00 (noon) (with 0.5 points deduction) Very late submission: May 31, 23:59 (with 1.0 points deduction)   Assignment P3 For the third and final assignment, you will be creating a small 3D engine. See the official assignment description for details. Files: Deadline(s): Tuesday, June 27, 23:59h Late submission: June 28, 12:00 (noon) (with 0.5 points deduction) Very late submission: June 28, 23:59 (with 1.0 points deduction)

Programming assignments: There will be three programming assignments throughout the semester. 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, 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.

Results

To be released.

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.

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

Web references:

## News Archive

Old posts

June 24:

• Slides for the Grand Recap (theory part) now available.
• Slides for the Grand Recap (math part) now available.

June 23:

June 20:

June 20:

• Slides for lecture 14 on post-processing now online.

June 19:

June 15:

June 13:

• Slides for lecture 12 ("Visibility") now available.
• Updated tutorial 4 solutions.
• Notes for lecture 13 ("Advanced topics") can be previewed.

June 12:

June 9:

June 7:

June 6:

June 5:

• Recordings of math lectures can from now on be downloaded; check the first one here. Use solis credentials to access them.

June 1:

May 30:

• Notes for lecture 9 ("Matrices") also available.
• Fresh tutorial 4 document has been added.

May 29:

• Assignment P3 ("Rasterization") details now available.

May 25:

• Tentative grades for the midterm exam.
• Check your e-mail for details on the math retake. Didn't receive a mail? Let me know.

May 23:

May 22:

May 20:

May 19:

May 18:

May 17:

May 16:

May 11:

• Slides for lecture 5 on ray tracing are now available.

May 9:

May 4:

May 2:

May 1:

Tutorial 1 can now be downloaded. Discuss these during the tutorial sessions and on Slack.

April 26: