# Computer Graphics: 2021-2022

## Overview

**Note:** Sets 1, 3, 5, 6, 7 and 8 will be delivered by Stuart Golodetz in Lecture Theatre A. Set 2 will be delivered remotely by Jassim Happa, and Set 4 will be delivered remotely by Stefano Gogioso. Sets 9 and 10 will be delivered by Jassim Happa; it will be decided whether they are in-person or not nearer the time, based on the COVID situation at the time.

This course is an introductory course in Computer Graphics, and covers a wide range of the field of interactive computer graphics at all levels of abstraction, with an emphasis on both theory and practice. Core topics include: the GPU pipeline, essential mathematics, viewing 3D objects, common geometric data structures, materials modelling, basic drawing, image processing, the human visual system, colour science, illumination and rendering. It follows a standard textbook in the field, with additional material.

## Learning outcomes

Knowledge and understanding

- The fundamentals of the modern GPU programming pipeline
- Essential mathematics in computer graphics
- Application of mathematics to graphics systems
- Common data structures to represent and manipulate geometry
- Common approaches to model light and materials
- Basic shading techniques
- Basic image-processing techniques
- How the human visual system plays a role in interpretation of graphics
- Colour and light representation and manipulation in graphics systems

Practical skills

- Working knowledge of GPU programming
- Working knowledge of a modern 3D graphics library via practical assignments
- Ability to produce usable graphics user-interfaces
- Ability to manipulate 3D objects in virtual environments
- Ability to write programs from a practical specification and produce realistic graphics outputs

## Synopsis

The following are major topics that will be covered. (Numbers in brackets give an approximation to the number of lecture hours spent on the topic.)

**Set 1: Introduction**(1 lecture): What is computer graphics and the purpose of course? Brief history of computer graphics. I/O in Graphics. Overview of the course.**Set 2: Graphics and GPU Programming**(2 lectures): GPU programming theory and practice. Pipelines - Graphics programming + Event driven pipelines. OpenGL and DirectX APIs - key differences. Key CPU vs. GPU programming differences. Shaders. Desktop, Mobile and Web graphics differences.**Set 3: Essential Mathematics for Computer Graphics**(2 lectures): The Virtual Camera. Euclidean space and basic terminology. Rigid body Transformations. Transformations: Translation, Scale, Rotation. 2D vs 3D transformations.**Set 4: More GPU Programming**(2 lectures): Practical GPU programming via examples.**Set 5: Geometry**(2 lectures): Primitive Objects. Constructive solid geometry. Polygons. Voxels. Boundary representation. Level of Detail and Tessellation. Acceleration Data structures.**Set 6: Materials**(1 lecture): Texture Mapping. Bump Mapping. Capturing the surface colour of objects – challenges. Light to Surface Interactions. OpenGL lighting/reflectance model. Bidirectional Reflectance Distribution Functions. Bidirectional Subsurface Scattering Reflection Distribution Functions. Bidirectional Texture Functions.**Set 7: Basic Drawing**(1 lecture): Fonts Basics. Drawing lines. Half ray test. Scan conversion. Rasterisation.**Set 8: Basic Image Processing**(1 lecture): Signal processing. Common Image Formats. Lossy vs Lossless image compression. Sampling and Reconstruction. Basic image processing. Filtering and convolution. High dynamic range imaging. Aliasing.**Set 9:****Human Factors and Basic****Colour Science**(2 lectures): Human visual system: basics of how we perceive the world. Strengths and weaknesses of the human visual system. Graphics and usability – best practices for designing GUIs and graphics applications. Human eye anatomy. Measuring Light: Radiometry vs. Photometry. Colour models: RGB, CMYK, HVS, XYZ, Spectral Radiance.**Set 10: Illumination and Rendering**(2 lectures): Defining Realism. Image Synthesis Validation. The challenges in computing light. Optics Models. Real-time vs. offline rendering. Global Illumination vs. Local Illumination. Types of Light Sources. Shadows. Non-photorealistic Rendering.

There is practical work to supplement the lecture material; the course does assume previous experience of practical programming, and simple knowledge of matrices and vectors. The practicals themselves will be in Python and Javascript.

## Syllabus

The following are major topics that will be covered. (Numbers in brackets give an approximation to the number of lecture hours spent on the topic.)

- Fundamentals of graphics hardware and software (3).
- Essential algorithms: line generation, solid area display, transformations, clipping, projection (4).
- Abstraction, and simple examples of libraries of graphics functions (2).
- Modelling of 3-dimensional solids (2).
- Rendering techniques and colour and lighting models (3).
- Input devices, interactive techniques, and the human-machine interface (1).
- Human factors in computer graphics (1).

There is practical work to supplement the lecture material; the course does assume previous experience of practical programming in a high-level language, and simple knowledge of matrices and vectors. The practicals themselves will be in Python and Javascript.

## Reading list

The** **main course text is

- “
**Fundamentals of Computer Graphics**” by Peter Shirley et al., 3rd edition (2009), CRC Press, ISBN 978-1568814698 (cf. Material)

Supplemental Reading. There are many text books on computer graphics. Books you are likely to find in college libraries are:

**Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL**by Shreiner and Angel, Pearson Education ISBN 978-0273752264- "
**Computer Graphics: Principles and Practice**" by Foley, Van Dam, Feiner, & Hughes, Addison-Wesley ISBN 0201848406 - “
**Mathematics for Computer Graphics**” by John Vince, ISBN 1849960224 - “
**Real-time Rendering**” Akenine-Möller, T., Haines, E., & Hoffman, N. (2019). CRC Press, ISBN 978-1138627000 **“Global Illumination Compendium”**by Philip Dutre (websource: https://people.cs.kuleuven.be/~philip.dutre/GI/)

Another recent book is

- "
**Computer Graphics with OpenGL**" by Hearn, Baker and Carithers, ISBN 978-0132484572