CO317 Computer Graphics

CO317 Computer Graphics


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

  • Monday 11-1, room 311
  • Thursday 11-1, 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 2019])


Week 1 (starting 7th January)
No lectures, no tutorials.
Week 2 (starting 14th January)
14/01 Monday 11-12 Projections and Transformations Lecture Kainz
14/01 Monday 12-1 Transformations for animation Lecture Kainz
17/01 Thursday 11-12 Clipping and 3D Geometry Lecture Kainz
17/01 Thursday 12-1 3D space and transformations Tutorial Kainz
Coursework Task 1: Framework 1 week not assessed
Week 3 (starting 21th January)
21/01 Monday 11-12 Graphics Pipeline and APIs Lecture Kainz
21/01 Monday 12-1 Graphics APIs and Shading languages Lecture Kainz
24/01 Thursday 11-12 Illumination, Shading & Color I Lecture Kainz
24/01 Thursday 12-1 Getting started with GLSL Lab Kainz
Coursework Task 2: Transformations 1 week not assessed
Week 4 (starting 28th January)
28/01 Monday 11-12 Illumination, Shading & Color II Lecture Kainz
28/01 Monday 12-1 Illumination, Shading & Color Tutorial Kainz
31/01 Thursday 11-12 Texture Mapping Lecture Kainz
31/01 Thursday 12-1 Illumination, Shading & Color Lab Kainz
Coursework Task 3: Illumination and Shading 1 week assessed
Week 5 (starting 4th February)
04/02 Monday 11-12 Rasterization, Visibility & Anti-aliasing Lecture Kainz
04/02 Monday 12-1 Texture Mapping Tutorial Kainz
07/02 Thursday 11-12 Ray Tracing 1 Lecture Kainz
07/02 Thursday 12-1 Generating Primitives Lab Kainz
Coursework Task 4: Geometry 1 week not assessed
Week 6 (starting 11th February)
11/02 Monday 11-12 Ray Tracing 2 Lecture Kainz
11/02 Monday 12-1 Splines 1 Lecture Kainz
14/02 Thursday 11-12 Ray Tracing Tutorial Kainz
14/02 Thursday 12-1 Texture Lab Kainz
Coursework Task 5: Colour 1 week not assessed
Week 7 (starting 18th February)
18/02 Monday 11-12 Splines 2 Lecture Kainz
18/02 Monday 12-1 Splines Tutorial Kainz
21/02 Thursday 11-12 Warping and Morphing Lecture Kainz
21/02 Thursday 12-1 Ray tracing Lab Kainz
Coursework Task 6: Texture & Render to Texture 1 week assessed
Week 8 (starting 25th February)
25/02 Monday 11-12 Special Effects Lecture Kainz
25/02 Monday 12-1 Animation and Kinematics Lecture Kainz
28/02 Thursday 11-12 Radiosity Lecture Kainz
28/02 Thursday 12-1 Radiosity Tutorial/Lab Kainz
Coursework Task 7: Simple GPU ray tracing 2 weeks assessed
Week 9 (starting 4th March)
04/03 Monday 11-12 No lecture or tutorial
04/03 Monday 12-1 Revision lecture Lecture Kainz
07/03 Thursday 11-12 No lecture or tutorial
07/03 Thursday 12-1 No lecture or tutorial
Coursework Task 7: Simple GPU ray tracing 2 weeks assessed


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

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

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