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, Al-Jibury, Li, Vlontzos,  Hou, Budd
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, Al-Jibury
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, Li, Vlontzos
31/01 Thursday 11-12 Texture Mapping Lecture Rueckert
31/01 Thursday 12-1 Illumination, Shading & Color Lab Li, Vlontzos
Coursework Task 3: Illumination and Shading 1 week assessed Kainz, Li
Week 5 (starting 4th February)
04/02 Monday 11-12 no lecture or lab
04/02 Monday 12-1 no lecture or lab
07/02 Thursday 11-12 no lecture or lab
07/02 Thursday 12-1 no lecture or lab
Coursework Task 4: Geometry 1 week not assessed
Week 6 (starting 11th February)
11/02 Monday 11-12 Rasterization, Visibility & Anti-aliasing Lecture Rueckert
11/02 Monday 12-1 Texture Mapping Tutorial Tutorial Hou, Budd
14/02 Thursday 11-12 Ray Tracing 1 Lecture Kainz
14/02 Thursday 12-1 Generating Primitives Lab Kainz, Al-Jibury
Coursework Task 5: Colour 1 week not assessed
Week 7 (starting 18th February)
18/02 Monday 11-12 Ray Tracing 2 Lecture Kainz
18/02 Monday 12-1 Ray Tracing Tutorial Tutorial Kainz, Hou, Budd
21/02 Thursday 11-12 Splines 1 Lecture Kainz
21/02 Thursday 12-1 Texture Lab Lab Kainz, Hou, Budd
22/02 19:00 Coursework Task 6: Texture & Render to Texture 1 week assessed Kainz, Vlontzos
Week 8 (starting 25th February)
25/02 Monday 11-12 Splines 2 Lecture Kainz
25/02 Monday 12-1 Splines Tutorial Tutorial Kainz, Budd, Al-Jibury
28/02 Thursday 11-12 no lecture or lab
28/02 Thursday 12-1 Warping and Morphing Lecture Kainz
08/03 19:00 Coursework Task 7: Simple GPU ray tracing 2 weeks assessed Kainz, Hou
Week 9 (starting 4th March)
04/03 Monday 11-12 Radiosity Lecture Kainz
04/03 Monday 12-1 Radiosity and Raytracing Q&A Tutorial Kainz, Budd, Li, Hou
07/03 Thursday 11-12 Special Effects (not examined) Lecture Kainz
07/03 Thursday 12-1 Revision lecture Lecture Kainz
08/03 19:00 Coursework Task 7: Simple GPU ray tracing 2 weeks assessed Kainz, Hou


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 Windows 10 (maybe also 7 but untested): ShaderLabFramework_installer.exe
Highly experimental stand-alone version for MacOS: ShaderLabFramework_standalone.dmg