Introduction to Computer Graphics
Undergraduate Course, Escola de Noves Tecnologies Interactives - Universitat de Barcelona, 2019
Videogames and virtual reality often require considerable computer graphics knowledge. During two years I taught a computer graphics course (2017 – 2019). I designed the course and took care of most of the classes, except the advanced openGL topics which were taken care by Jesús Ojeda.
1. Syllabus
You can find here all the materials used to teach a course lasting 15-16 weeks, with 4 hours or class per week.
01 | Introduction | A general introduction |
02 | OpenGL | What is OpenGL? |
03.01 | MyFirstShader | What is a shader? |
03.02 | ModelViewProjection | World View Projection and Solutions to Exercises |
03.03 | Solutions | Example shader |
04.01 | LoadModelAndLight | Load Model and Put Light |
04.02 | Cube | Cube for Exercises |
05.01 | RenderCubeDetails.pdf | Details on cube rendering |
06.01 | GeometryShaders.pdf | Geometry Shaders |
06.02 | Exercises.pdf | Exercises |
06.03 | Solutions.cpp | Exercises solved |
07.01 | Texturing.pdf | Texturing |
08.01 | ToonRendering-part1.pdf | Non Realistic Rendering |
08.02 | ToonRendering-part2.pdf | Non Realistic Rendering |
09.01 | LoadTexture.zip | Example load texture |
10.01 | Alpha-Accum.pdf | Transparencies and tricks to have depth |
11.01 | FrameBufferObjects.pdf | Frame Buffer Objects |
11.02 | Compute.pdf | Compute Shaders |
11.03 | InstancingExample.zip | An example of indirect instancing |
11.04 | ComputeShader.zip | An example of compute shader |
2. Deliveries
This course had three deliveries:
Model, Camera and Light. This required showing a decent understanding of how to load a model, compose a scene with different elements and implement the Phong lightning model. ModelCameraLight.pdf
A geometry shader. This required implementing a grid from a set of seeds, and doing several interpolations in a geometry shader. GeometryShader.pdf
![example](computer-graphics/image8.gif “”)
- Advanced Techniques. This required implementing advanced OpenGL solutions, such as Instancing and rendering techniques to obtain Blur. AdvancedOpenGL.pdf
3. Requirements
A student of this course would, ideally, have a decent understanding of the following topics:
- Linear Algebra and Basic Trigonometry
- Acquaintance with the syntax of C++
If you want to follow this course but feel like you have gaps on these topics, you will need to find alternative sources to explore them for a full understanding of the topics of the course.
4. Bibliography and Online Materials
The materials here introduced have been used in a course delivered at the second year of a four year degree for computer scientists specialized in videogame development. The materials have been used during scholar years 2017-18 and 2018-19 at ENTI-UB ( Escola de Noves Tecnologies Interactivesof Universitat de Barcelona.
The course has been organized following closely the OpenGL SuperBible book, using also a miscelanea of materials from academic-oriented books and from tutorials available online. I have tried to credit all the sources used, but please let me know if some material does not credit properly the original source.
Bibliography
- Feynmann, Leigthon & Sands (2011) The Feynmann Lectures on Physics (volume 1) The new Millennium Edition Basic Books
- Bourg & Bywalec (2013) Physics for Game Developers 2nd edition O’Reilly
- Millington (2010) Game Physics Engine Development CRC Press
Sellers et al. (2016) OpenGL SuperBible 7th Edition
- Edward Angel, Dave Shreiner (2012) Interactive Computer Graphics: A Top-down Approach Using Opengl, 6th Edition. Pearson education
- Graham Sellers, Richard S. Wright Jr, Nicholas Haemel (2014) OpenGL SuperBible. 6th Edition. Addison Wesley
- Tomas Akenine-Möller,, Eric Haines, Naty Hoffman ( 2008) Real-Time Rendering. 3rd edition