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.

01IntroductionA general introduction
02OpenGLWhat is OpenGL?
03.01MyFirstShaderWhat is a shader?
03.02ModelViewProjectionWorld View Projection and Solutions to Exercises
03.03SolutionsExample shader
04.01LoadModelAndLightLoad Model and Put Light
04.02CubeCube for Exercises
05.01RenderCubeDetails.pdfDetails on cube rendering
06.01GeometryShaders.pdfGeometry Shaders
06.02Exercises.pdfExercises
06.03Solutions.cppExercises solved
07.01Texturing.pdfTexturing
08.01ToonRendering-part1.pdfNon Realistic Rendering
08.02ToonRendering-part2.pdfNon Realistic Rendering
09.01LoadTexture.zipExample load texture
10.01Alpha-Accum.pdfTransparencies and tricks to have depth
11.01FrameBufferObjects.pdfFrame Buffer Objects
11.02Compute.pdfCompute Shaders
11.03InstancingExample.zipAn example of indirect instancing
11.04ComputeShader.zipAn example of compute shader

2. Deliveries

This course had three deliveries:

  1. 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

  2. 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 “”)

  1. 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