Computer Graphics

PDF versionPDF version

Course Title:  
Computer Graphics 

László Szirmay-Kalos and László Szécsi

Weeks 1-14, 2x2 hours/week, 4 credits

Short Description of the Course: 
This course teaches the basics of computer graphics, animation and game development. First, backgrounds in mathematics (analytical geometry of Euclidean and projective spaces, homogeneous coordinates and transformation by matrices) and physics (light transport, reflection/refraction, BRDF) are summarized; then the main elements of graphics production pipeline are examined. In the modeling section, we study the creation of polygonal and free form surfaces. In rendering, we first build a ray tracing system, then present the stages of an incremental rendering pipeline, its OpenGL API and hardware realization in the GPU. The rendering knowledge is extended by examining the principles of animation, and finally we develop a game engine and use it to implement a first person shooter game. 

Aim of the Course: 
This course teaches the principles of computer graphics and enables students to implement modeling/rendering/animation systems as well as 3D video games in a C++/OpenGL/Cg environment. 

Programming skills in C++ or a similar object-oriented programming language (e.g. Java or C#), and basic mathematical knowledge (matrices, coordinate geometry, calculus) are prerequisites for this course. 

Detailed Program and Class Schedule: 

  1. Introduction:
    Modeling, virtual world, and rendering. Abstract visualization. 3D Display technology.
    Practical: Development environment setup.
    Compilation and linking of a simple Anaglyph 3D stereoscopic rendering application.


  2. Fundamentals of graphics software
    Event driven programming, device independence, graphics libraries. GLUT and OpenGL.
    Practical: Drawing triangles and polylines. Moving them with keys and the mouse.
    Assignment 1: Simple 2D game in OpenGL


  3. Geometric modeling
    Coordinate systems. Explicit, implicit and parametric forms. Curves with interpolation and approximation. Lagrange interpolation, Bezier curves, B-spline, Catmull-Rom spline. Parametric and implicit surfaces. Subdivision surfaces. Solids.
    Practical: Drawing various curves, adding/moving control points interactively.


  4. Color theory.
    Color matching functions. RGB, CMY, and HSV color systems.
    Practical: Colorful curves. Implementation of a simple color selector interface.


  5. Geometric transformations
    Homogeneous coordinates. Affine transformations and their matrix representation. Projective geometry.
    Practical: Rotating and moving objects.


  6. 2D image synthesis
    2D rendering pipeline: vectorization, transformations, clipping, line and polygon rasterization. Software architecture of 2D drawing programs.
    Practical: Drag&drop.
    Assignment 2: 2D drawing program


  7. 3D rendering and optical laws
    Power and radiance. Laws of light-matter interaction. BRDFs.


  8. Ray tracing
    Local illumination model and ray casting. Solution of the visibility problem. Recursive ray tracing. Software architecture of ray tracers. Ray tracing acceleration.
    Double practical: Ray casting with spheres.
    Assignment 3: Ray tracing program


  9. Incremental image synthesis
    3D rendering pipeline: tessellation, transformations, 3D clipping in homogeneous coordinates, visibility determination, shading, and texturing.


  10. 3D graphics with OpenGL
    Double practical: textured, waving ocean surface.
    Assignment 4: Game development I: modeling and rendering


  11. Animation
    Requirements of realistic animation. Newton’s law. Key-frame animation, path animation, character animation, dynamics. Motion capture.
    Practical: Floating objects. User-controlled objects. Projectiles.


  12. Computer Games
    Game architecture: virtual world, game loop, user interfaces. Character animation.
    Practical: Naval battle game.
    Assignment 5: Game development II: adding controls, physics and game play


  13. GPU programming
    GPU architecture. Vertex shader and fragment shader programs. Examples: Phong shading, shadow mapping, and environment mapping. GPGPU concepts. CUDA
    Practical: Shader vertex displacement, environment mapping and normal mapping.


  14. Special topics depending on the student interests
    Examples: Mobile graphics, medical visualization, scientific visualization, computational aesthetics, game engines, global illumination rendering, etc.


Method of instruction:
The course consists of lectures (3 hours per week), practices (1 hour per week) and 5 home assignments. Parallel to the lectures, students have to develop programs in C++ aiming at the discussed graphics problems. Students are provided with a simple C++/GLUT/OpenGL framework program which should be extended. During practices, parts of these assignments are solved together under the teachers’ supervision. The remaining parts should be finalized at home individually or forming small teams.

The final assessment is based on the quality of the home assignments (60%) and on the final presentation about the topic of one of the assignments (each team is given a different assignment to talk of).

Tomas Akenine-Moller, Eric Haines, Eric Haines: Real-Time Rendering, A.K. Peters. 
László Szirmay-Kalos: Computer Graphics (in Algorithms of Informatics II edited by Antal Iványi, Mondat Kiadó, available electronically)

Instructors’ Bio: 

László Szirmay-Kalos (born 1963) is a full professor and the head of the Department of Control Engineering and Information Technology at the Budapest University of Technology and Economics. He received Ph.D. and D.Sc. degrees from the Hungarian Academy of Science in 1992 and 2001, respectively. His research interests cover computer graphics, games, Monte Carlo methods, scientific and medical visualization, and the application of graphics cards for general-purpose computation. He has published more than 200 papers in these fields, including 24 books, 16 chapters, 50 journal articles, and 112 conference papers. He has worked as a visiting researcher or professor at the University of Minnesota (USA), University of Girona (Spain), and the Technical University of Vienna (Austria). He is the associate editor of Computer Graphics Forum and is a member of the editorial board of Computers & Graphics. He received a Charles Simonyi Award in 2004, a Bolyai Award in 2005, and was elected as the Fellow of Eurographics in 2008. 

László Szécsi (born 1978) is an associate professor at the Department of Control Engineering and Information Technology at the Budapest University of Technology and Economics. He also lectured Computer Graphics at the János Selye University in Slovakia. He received his Ph.D. in 2010. His research interests include real-time computer graphics, non-photorealistic rendering, computer game programming, and programming of graphics cards both for rendering and for general-purpose computations. He is author of 43 publications, including 1 book, 7 book chapters, 10 journal articles, and 25 conference papers. He won the Bolyai Award of the Hungarian Academy of Sciences in 2012.