Computer Graphics: 2019-2020
Lecturer | |
Degrees | Schedule S1(CS&P)(3rd years) — Computer Science and Philosophy Schedule S1(3rd years) — Computer Science Schedule S1(M&CS)(3rd years) — Mathematics and Computer Science |
Term | Michaelmas Term 2019 (16 lectures) |
Overview
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 Java 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 Java and Javascript.
Reading list
The main course text is
- “Fundamentals of Computer Graphics” by Peter Shirley et al., ISBN 978-1568812694
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. (2008). CRC Press.
- “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
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.