Graphics

Universiteit Utrecht - Information and Computing Sciences

academic year 2020/21 – 4th period

title image title image title image

Navigation

Course Overview

Exam & Grading

Join us on Teams!asdad

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.

Note that due to ongoing Corona restrictions, INFOGR takes place on TEAMS. Please join is there!
The information on this website is static; announcements and updates will be on Teams.

This course will be taught in English.

Teaching Team back to navigation

Lecturers:

Teaching Assistants:

Math Tutorials:

Practicals:


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 10am
lecture videos
11am
lecture Q&A
1:15pm
tutorials
Coding
Tutorial
Practical #1 Practical #2
17



OpenTK Introduction

   
Thu Apr 29
10:00
Lecture 1
video available

LIVE: course structure; Lecture 1.
   
18 Tue May 4

Lecture 2
video available
Lecture 1 Q&A
   
Thu May 6



Tutorial on Lecture 1
2:30pm: OpenTK advice
   
19 Tue May 11
Lecture 3
video available
Lecture 2 Q&A
(no need to hand in!)

Assignment P1:

Ray tracing

 
Thu May 13

ASCENSION DAY


20 Tue May 18

Lecture 4
video available
Lecture 3 Q&A
   
Thu May 20



Tutorial on Lecture 2&3
2:30pm: Ray tracing advice


21 Tue May 25

Lecture 5
video available
Lecture 4 Q&A
   
Thu May 27



Tutorial on linear algebra
2:30pm: Tutorial on Lecture 4&5



TUE JUNE 1
MIDTERM EXAM         

22 Tue June 1

Lecture 6
video available



Assignment P2:

Rasterization
Thu Jun 3



Tutorial on Lecture 6;
Rasterization advice
  Deadline:
Thu Jun 3, 17:00h
23 Tue June 8
10:00 - 12:00
Lecture 7
video available
Lecture 6 Q&A
 
Thu June 10
15:00 - 17:00


Tutorial on Lecture 7;
Rasterization advice
   
24 Tue June 15
10:00 - 12:00
Lecture 8
video available
Lecture 7 Q&A
   
Thu June 17
15:00 - 17:00


Tutorial on Lecture 8;
Rasterization advice
   
25 Tue June 22
10:00 - 12:00
Lecture 9
video available
Lecture 8 Q&A
   
Thu June 24
15:00 - 17:00


Q&A on Lecture 9;
Tutorial Lecture 9
   
26 Thu June 29
Final Exam

P2 Deadline:
Tue, June 29, 17:00h
...

?
?
Retake Exam                                                       .

 


Math Tutorials back to navigation



MATH ASSIGNMENTS

There will be a math assignment (almost) every week. The exercises cover the topics discussed in the math lectures and will prepare you well for the exam. The assignments are mandatory, but do not need to be handed in.

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 should finish the exercises for a lecture before the tutorial session on that lecture. So, for example, on May 6 you should have finished all exercises on Lecture 1.
  • Presence at the tutorial sessions (Thursdays at 13:15-14:15) is mandatory. During the session, we will ask randomly chosen students to explain how they solved the exercises. There is no need to prepare slides or anything for this, the idea is that you just shortly explain your solution, for example using the Teams blackboard function, or just in words.
  • If you are asked and you are not there or have not done the exercise, there will be a penalty of 0.5 to your final exam grade (T).
  • You can ask questions about the exercises in the Math tutorials channel on Teams. Post your question as: @Math tutorials: ‘question’, if you want to ask your question to the students, or @Fernando @Sarita: ‘question’, if you want to ask question specifically to the tutorial organisers. Make sure your question is concise and suitably specific. We cannot help you if you just state ‘I do not understand this exercise’.
  • We will (generally) look at the Math tutorials channel to answer questions on each working day at 9:30 and 16:00.
  • If you did not manage to do one or more of the exercises, you can let us know by posting in the Math Tutorials channel what you did not manage to do. We will take this information into account when randomly selecting students to present. We will only accept this information till Wednesday evenings. If you could not do the exercise for personal reasons (and not because the task was too difficult) please contact Sarita and Fernando by email.

Practicals back to navigation


PRACTICAL ASSIGNMENTS

There will be two practical assignments, covering traditional rasterization algorithms, shaders and ray tracing. A tutorial 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.

  • Working in teams: The two programming assignments are designed for groups of two students. You may however also work on the assignments alone. Details:
    • Working alone: This year 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(s) yourself among your fellow students. If you can not find one on your own, contact one of the TAs during the online assistance 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 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 2019 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: Feel free to ignore this. We do.


(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 (VisualStudio, C#, OpenTK) and introduces you to some of the basics of graphics programming.

 
(1) Whitted-style Ray Tracing

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

Will be announced during the course.

 
(2) Real-time

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

Will be announced during the course.

 

Assignment P1

Please find files and documents for the first assignment on the Teams page.

Deadline(s):
  • Thursday, June 3, 17:00
  • Late submission: June 3, 23:59 (with 0.5 points deduction)
  • Very late submission: June 4, 17:00 (with 1.0 points deduction)

 

Assignment P2

Please find files and documents for this assignment on the Teams page.

Deadline(s):
  • Tuesday, June 29, 17:00
  • Late submission: June 29, 23:59 (with 0.5 points deduction)
  • Very late submission: June 30, 17:00 (with 1.0 points 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 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. 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.

 

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: