module specification

CU5010 - Graphics and Shader Programming (2024/25)

Module specification Module approved to run in 2024/25
Module title Graphics and Shader Programming
Module level Intermediate (05)
Credit rating for module 30
School School of Computing and Digital Media
Total study hours 300
 
219 hours Guided independent study
81 hours Scheduled learning & teaching activities
Assessment components
Type Weighting Qualifying mark Description
Coursework 40%   CW1 (Production1): Research and Design for 3D game prototype, 5 x A4 pages; coding a 3D scene/game level)
Coursework 50%   CW2 (Production2): coding interactivity/control of 3D character/objects
Coursework 10%   Presentation of work
Running in 2024/25

(Please note that module timeslots are subject to change)
Period Campus Day Time Module Leader
Year North Tuesday Afternoon

Module summary

The module is designed to broaden student understanding and develop practical skills up to the advanced level in programming applications for computer graphics, imaging and the associated technology with the focus on game programming. The theoretical work is designed to give a broad-based understanding of the graphics devices, graphics/images and shaders as well as graphics API (Applications Programming Interface) used in a variety of applications (including game development industry). The practical work is designed for programming of computer games (prototypes) or computer graphics and images as game elements for display on relevant devices.
Students will gain an overview of the physical processes of graphics/image enhancement and processing, as well as an understanding of the software framework necessary to produce graphics/images and shaders including for mobile devices.

Prior knowledge and Skills: This module requires a successful completion of Level 4, i.e. relevant knowledge and practical skills of the programming (preferably in C/C++, and in case of C# or Java student may face additional challenge to (re-)learn a new programming language).

AIMS
The main aim of the module is to provide an advanced level of knowledge and understanding of the entire programming workflow and relevant API for rendering computer graphics, image processing and visualisation.
This module aims to:
- enable students to understand the 2D/3D graphics API, the processes of computer graphics programming, storage, and visualisation of graphics/images on various display devices;
- develop communication and practical skills with particular reference to graphics programming and image processing as well as their visualisation;
- design and implement mathematical concepts and programming structures as well as algorithms in the area of graphics and image processing;
- equip students for employment in the variety of industries relying on computer graphics and image processing (computer games, Virtual Reality, simulations, aerospace or automotive industry, engineering, CAD/CAM and machine/robotic vision, medical applications, geo-survey, security and etc applications).

The module also aims to help students to continue development of a personal portfolio by adding a computer graphics application or game (prototype) that demonstrates understanding of the key principles and practical skills to use industry standard API for 2D/3D computer graphics programming and image processing in a variety of applications.

Prior learning requirements

Level 4 C++ programming or similar

Syllabus

The indicative syllabus will focus on (desktop/mobile) computer graphics, particularly on the following:
- Introductory survey of graphics APIs (focusing on OpenGL/OpenGL ES) and issues for different platforms (Win/Mac), achieving device independence;
- Graphics hardware and software;
- 2D/3D mathematical models;
- Using models and relevant algorithms to create and display computer graphics objects;
- 2D/3D representations and transformations.  Use of matrices and homogeneous co-ordinates, surface normals and shading;
- Cameras, 2D/3D viewing, clipping planes, viewing volume, viewing transformations;
- Introduction to animation programming;
- Colour and colour rendering, lights and attributes/properties of materials/textures and shaders;
- Creating controls (interactivity) to manipulate computer graphics objects;
- Image manipulation: scanning, importing and editing with graphics software;
- Image processing, thresholding, edge detection and connectivity, image enhancement and understanding.

While computer graphics and image processing has a vast variety of application areas, the delivery and teaching of this indicative syllabus will be provided from the viewpoint of computer game prototype development.

LO1, LO2, LO3, LO4, LO5

Balance of independent study and scheduled teaching activity

The advanced programming for computer graphics and image processing concepts, workflow and other theoretical material will be covered in the lectures and workshop based sessions (using tutorials and relevant examples).  Time will be devoted to the discussion and evaluation of problem solutions.  The student will be expected to spend an equivalent time in private study (research connected with the subject, directed reading, and developing their own programming style/techniques and skills).  In addition to this, a substantial coursework will be set.

Learning outcomes

On successful completion of this module, students will be able to:

LO1: understand the concept of the graphics API (for example, OpenGL/OpenGL ES), demonstrate self-awareness, understanding and confidence to critically analyse and evaluate personal skills as well as implement the project and present it with confidence and self esteem;
LO2: write a code to build a 2D/3D computer graphics scene (a game prototpye or some of its elements) composed from simple graphical objects (geometry primitives; or based on mathematical models and functions; or by loading a geometry from a file with already available models) as well as apply geometric transformations to the objects in the scene;
LO3: write a code to read, load, apply shaders/textures and render the objects in the scene in the variety of contexts; also process images on screen for enhancement and recognition;
LO4: communicate skilfully with particular reference to graphics and the powers of presentation available.
LO5: demonstrate the ability to evaluate, synthesize, document and present the created artefacts in an entertaining and educational way using the relevant communication skills.

Bibliography

Core Texts (Latest list will be provided in the module handbook):
• Hill, F. S. et al (2006), Computer Graphics using OpenGL, Prentice Hall,
ISBN: 0-13-149670-0.
• Aaftab, M., Shreiner, D. and Ginsburg, D. (2008) OpenGL ES 2.0 Programming Guide,
Addison-Wesley, ISBN-13: 9780321502797.

Recommended supplementary reading:
Shreiner, D., Woo, M., Neider, J., Davis, T. (2008) OpenGL Programming Guide, 6th edition,
Addison Wesley, ISBN-13: 978-0-321-48100-9.  
Wright, R. S., Lipchak, B., Haemel, N. (2007) OpenGL SuperBible, 4th edition,
Addison Wesley, ISBN-13: 978-0-321-49882-3.
Hearn, D. and Baker, M. P. (2004) Computer Graphics with OpenGL, 3rd edition, ,
Prentice-Hall, ISBN: 0-13-120238-3.
Rabin, S. Introduction to Game Development, Thomson Learning.
Hill, F. S., Kelley S. M. Computer Graphics using OpenGL, 3rd edition, Pearson,
Prentice Hall.
Nik Lever Real time 3D Character Animation with Visual C++, Focal Press.
Sonka, M., Hlavac, V., Boyle, R. Image Processing, Analysis and Machine Vision, PWS publishing.
Rogers, D. F. and Adams, J. A. Mathematical Elements for Computer Graphics, McGraw Hill
Graphics Gems, Vols I - V, various editors, Academic Press.
Watt, A. 3D Computer Graphics, Addison Wesley.