# Computer Graphics: 2021-2022

## Overview

**The lectures for this course will be pre-recorded and can be found here.**

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, and with emphasis on both theory and practice. Core topics include: essential mathematics, the GPU pipeline, common geometry data structures, viewing 3D objects, the human visual system, colour science, image processing, basic drawing, materials modelling, 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
- Colour and light representation and manipulation in graphics systems
- Common data structures to represent and manipulate geometry
- Common approaches to model light and materials
- Basic image-processing techniques
- Basic shading techniques
- Application of mathematics to graphics systems
- How the human visual system plays a role in interpretation of graphics

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: GPU programming**(2 lectures) GPU programming theory and practice. Pipelines - Graphics programming + Event driven pipelines. OpenGL and Direct X 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: Geometry**(2 lectures): Primitive Objects. Constructive solid geometry. Polygons. Voxels. Boundary representation. Level of Detail and Tessellation. Acceleration Data structures.**Set 5: Materials**(1 lectures) 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 6: 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.**Set 7: More GPU Programming**(2 lectures). Examples and in-depth examples.**Set 8: Basic Drawing**(1 lecture) Fonts Basics. Drawing lines. Half ray test. Scan conversion. Rasterisation.**Set 9: Basic Image Processing**(1 lectures) 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 10:****Human Factors and Basic****Colour Science**(2 lectures): Human visual system: basics of how we perceived 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.

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 for 20-21 is

- “
**Fundamentals of Computer Graphics**” by Peter Shirley et al., 4th edition (2016), CRC Press, ISBN 978-1-4822-2941-7 (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 9780273752264- "
**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-1-1386-2700-0 **“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