# Computer Graphics: 2023-2024

| |

| Schedule A2(CS&P) — Computer Science and Philosophy Schedule B1 (CS&P) — Computer Science and Philosophy Schedule A2 — Computer Science Schedule B1 — Computer Science |

| Hilary Term 2024 (16 lectures) |

## Overview

This course is an introductory course in Computer Graphics, and will describe mathematical tools for reasoning about displaying 2D and 3D geometric objects that are stored in a variety of data structures (covered separately in Geometric Modelling). The focus will be on display challenges and techniques for achieving satisfactory representations.

## 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 topics will covered, not necessarily in this order:

- What is computer graphics and the purpose of course? Brief history of computer graphics. I/O in Graphics. Overview of the course.
- 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.
- The Virtual Camera. Euclidean space and basic terminology. Rigid body Transformations. Transformations: Translation, Scale, Rotation. 2D vs 3D transformations.
- GPU programming.
- Primitive Objects. Constructive solid geometry. Polygons. Voxels. Boundary representation. Level of Detail and Tessellation. Acceleration Data structures.
- 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.
- Fonts Basics. Drawing lines. Half ray test. Scan conversion. Rasterisation.
- Signal processing. Common Image Formats. Lossy vs Lossless image compression. Sampling and Reconstruction. Basic image processing. Filtering and convolution. High dynamic range imaging. Aliasing.
- 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.
- 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.

Practical work will supplement the lecture material. The course assumes some experience of programming in an imperative language, as well as basic knowledge of matrices and vectors.

## Syllabus

General topics covered:

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

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.

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

## Feedback

Students are formally asked for feedback at the end of the course. Students can also submit feedback at any point here. Feedback received here will go to the Head of Academic Administration, and will be dealt with confidentially when being passed on further. All feedback is welcome.

## Taking our courses

Matriculated University of Oxford students who are interested in taking this course, or others in the Department of Computer Science, must complete this online form by 17.00 on Friday of 0th week of term in which the course is taught. Late requests, and requests sent by email, will not be considered. All requests must be approved by the relevant Computer Science departmental committee and can only be submitted using this form. Priority will be given to students studying for degrees in the Department of Computer Science.