# Computer Graphics:  2021-2022

 Lecturers Degrees Term Hilary Term 2022  (16 lectures)

## 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
• 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.

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