CO317 Computer Graphics

CO317 Computer Graphics


This course is taught jointly with Prof Daniel Rueckert. Please also refer to his teaching page, especially for information about the lecture.

Note that this course has been timetabled for 4 hours per week:

  • Tuesday 2-4, room 311
  • Thursday 2-4, room 311 and 206, 209 (for labs)

However, not all timetabled slots will be used every week so please check the timetable below for more information. All notes, tutorials and coursework (including coursework hand-out/in dates) can be found on CATE. Revision notes on vector algebra can be found here.

Questions can be discussed on the course’s Piazza page (317 Graphics [Spring 2018])

Spring 2017/18: Panopto Recordings


Week 1 (starting 8th January)
No lectures, no tutorials.
Week 2 (starting 15th January)
16/01 Tuesday 2-3 Projections and Transformations Lecture Rueckert
16/01 Tuesday 3-4 Transformations for animation Lecture Rueckert
18/01 Thursday 2-3 Clipping and 3D Geometry Lecture Rueckert
18/01 Thursday 3-4 3D space and transformations Tutorial Rueckert
Coursework Task 1: Framework 1 week
Week 3 (starting 22th January)
23/01 Tuesday 2-3 Graphics Pipeline and APIs Lecture Kainz
23/01 Tuesday 3-4 Graphics APIs and Shading languages Lecture Kainz
25/01 Thursday 2-3 Illumination, Shading & Color I Lecture Rueckert
25/01 Thursday 3-4 Getting started with GLSL Lab Kainz
Coursework Task 2: Transformations 1 week
Week 4 (starting 29th January)
30/01 Tuesday 2-3 Illumination, Shading & Color II Lecture Rueckert
30/01 Tuesday 3-4 Illumination, Shading & Color Tutorial Rueckert
01/02 Thursday 2-3 Texture Mapping Lecture Kainz
01/02 Thursday 3-4 Illumination, Shading & Color Lab Kainz
Coursework Task 3: Illumination and Shading (assessed) 1 week
Week 5 (starting 5th February)
06/02 Tuesday 2-3 Rasterization, Visibility & Anti-aliasing Lecture Kainz
06/02 Tuesday 3-4 Texture Mapping Tutorial Kainz
08/02 Thursday 2-3 Ray Tracing 1 Lecture Kainz
08/02 Thursday 3-4 Generating Primitives Lab Kainz
Coursework Task 4: Geometry (assessed) 1 week
Week 6 (starting 12th February)
13/02 Tuesday 9-10 Ray Tracing 2 Lecture Kainz
13/02 Tuesday 3-4 Splines 1 Lecture Rueckert
15/02 Thursday 2-3 Ray Tracing Tutorial Kainz
15/02 Thursday 3-4 Texture Lab Kainz
Coursework Task 5: Colour 1 week
Week 7 (starting 19th February)
20/02 Tuesday 2-3 Splines 2 Lecture Rueckert
20/02 Tuesday 3-4 Splines Tutorial Rueckert
22/02 Thursday 2-3 Warping and Morphing Lecture Rueckert
22/02 Thursday 3-4 Ray tracing Lab Kainz
Coursework Task 6: Texture & Render to Texture (assessed) 1 week
Week 8 (starting 26th February)
27/02 Tuesday 2-3 Special Effects Lecture Kainz
27/02 Tuesday 3-4 Animation and Kinematics Lecture Kainz
01/03 Thursday 2-3 Radiosity Lecture Rueckert
01/03 Thursday 3-4 Radiosity Tutorial/Lab Rueckert/Kainz
Coursework Task 7: Simple GPU ray tracing (assessed) 2 weeks
Week 9 (starting 5th March)
06/03 Tuesday 2-3 No lecture or tutorial
06/03 Tuesday 3-4 Revision lecture Lecture Kainz
08/03 Thursday 2-3 No lecture or tutorial
08/03 Thursday 3-4 No lecture or tutorial
Coursework Task 7: Simple GPU ray tracing (assessed) 2 weeks


There will be seven practical coursework tasks; four of them are assessed:

  1. Framework
  2. Transformations
  3. Illumination (example output 3a 3b 3c 3d) (assessed 20%)
  4. Geometry (example output 4a level 0, level 2, 4b) (assessed 20%)
  5. Colour (example output)
  6. Texture & Render to Texture (example output 6a1 6a2 6b 6c) (assessed 20%)
  7. Simple GPU ray tracing (example output 7a, 7b: 5 rays, 10 rays, 15 rays, 30 rays, 50 rays) (40%)

The individual tasks of the coursework will be implemented using a simplified framework for shader development:

The ShaderLab Framework

ShaderLab is a teaching tool to solidify the fundamentals of Computer Graphics. The ShaderLab framework is based on Qt5, CMake, OpenGL 4.0, and GLSL and allows the student to modify GLSL shaders in an IDE-like environment. The framework is able to render shaded polyhedral geometry (.off/.obj), supports image-based post-processing, and  allows to implement simple ray-tracing algorithms.


The ShaderLab framework is available for download on github and DoC gitlab and will be also provided on the lab machines. To execute the framework in the lab type on a command line:

cd /vol/bitbucket/bkainz



Highly experimental stand-alone version for MacOS: ShaderLabFramework_standalone.dmg