CU5010 - Graphics and Shader Programming (2020/21)
|Module specification||Module approved to run in 2020/21|
|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|
|Running in 2020/21||
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).
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
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.
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.
The assessment will consist of the two components: CW1 and CW2, all pass on aggregate. The tutor will set the subject.
CW1, the first assessment (40%) will ask student to research and design a computer game/level prototype (for example, a 3D scene and character/object(s) from a programmers [SW engineering] point of view, i.e. using relevant UML diagrams such as Class, Use Case and Sequence Diagrams or function prototype in pseudo-code and block/flow diagram for a chosen game/level). The particular focus in the design will be on the completeness and logical correctness of the graphical notation used in diagrams.
Continuing first assignment, based on the design, student will have to write a code that initialise and renders a 2D/3D scene of a game/level prototype (by using geometry primitives or loading already existing 2D/3D models including loading and mapping textures to the objects used in the scene/level). The implementation of a game/level prototype must be completely original and must show visual and aesthetic awareness.
CW2, the second assignment assessment (60%) will ask student to continue previous work and add the interaction to control the 3D character or object(s) and some additional functionality (for example, choice of options, GUI, shaders, and possibly some effects) and that way enhance the believability of a complete rendered game/level prototype. In this last assignment student will also have to give a presentation of their work to the module teaching team.
All assessment assignments are designed so that student will have to demonstrate their capability and skills [LO1 – LO5] to integrate, use and apply a relevant API and programming skills they have used throughout the complete computer graphics programming and implementation workflow.
To reduce a student workload and ensure efficient and useful feedback to students all assignments will be spread in time throughout 30 teaching weeks. Students will have many opportunities for assessed and non-assessed feedback during the module (see next section).
Core Texts (Latest list will be provided in the module handbook):
• Hill, F. S. et al (2006), Computer Graphics using OpenGL, Prentice Hall,
• 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,
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.