Skip to main content

Computer Graphics:  2021-2022

Lecturers

Degrees

Schedule S1(CS&P)(3rd years)Computer Science and Philosophy

Schedule A2(CS&P)Computer Science and Philosophy

Schedule B1 (CS&P)Computer Science and Philosophy

Schedule S1(3rd years)Computer Science

Schedule A2Computer Science

Schedule B1Computer Science

Schedule S1(M&CS)(3rd years)Mathematics and Computer Science

Schedule A2(M&CS)Mathematics and Computer Science

Schedule B1(M&CS)Mathematics and Computer Science

Term

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

 

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

This form is not to be used by students studying for a degree in the Department of Computer Science, or for Visiting Students who are registered for Computer Science courses

Other matriculated University of Oxford students who are interested in taking this, or other, courses 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.