Hardware for computer graphics - current information (2016/2017)

Lecture: every THURSDAY AT 9:00 in S4 room (Malá Strana)

Labs: every other THURSDAY AT 10:40 (starting on 2. 3. 2017) in the SW1 lab (Rotunda). Two alternating groups.

Lecture plan

Lecture #1 (23. 2. 2017)

Introduction, literature, GPU history & architecture

Course content, additional sources, brief overview of GPU history

Lecture #2 (2. 3. 2017)

GPU architecture

GPU architecture overview (OpenGL style, FFP & programmable pipeline), 3D data, graphic primitives, .. GPU programming basics, shader types.

Lab #1 (2.-9. 3. 2017)

Credit system, tasks, programming environment (C++/C# environments, SVN repositories, MS Visual Studio).
C# examples: 038trackball [086shader, 087fireworks].
C++ examples: sample01.
Libraries: OpenTK 2.0, SDL 2.0.

Lecture #3 (9. 3. 2017)

Basic GPU techniques

Buffers, double- and triple- buffering, semi-transparency, anti-aliasing, stencil buffer, GPU FFP lighting.

Lecture #4 (16. 3. 2017)

Textures, GPU shaders

Texture basics, multi-texturing, environment maps, bump mapping, filtering, MIP-maps, texture compression, more advanced texture techniques..
Shader concepts (RenderMan), history, vertex processor, fragment processor, interoperation data, vertex shaders, fragment shaders, shading language basics.

Lab #2 (16. - 23. 3. 2017)

Modes of data transfer CPU->GPU: immediate mode, client-side buffers, index buffers, glVertexPointer(), .., server-side buffers (VBO), GL extensions (glew.h, glew.c).
C# examples: 038trackball [086shader, 087fireworks]
C++ examples: template01.

Task gpu004: Trackball (C++)

Lecture #5 (23. 3. 2017)

Shaders II, GLSL

Shaders: GLSL [& Cg] languages. Uniform / varying quantities. GLSL shaders, programs, linking. Some detail on GLSL.

Lecture #6 (30. 3. 2017)

Math for realtime graphics, coord systems, Quaternions, interpolation

Coordinate systems, homogenous coordinates, projections, OpenGL coordinate systems, Euler angles, quaternions and its interpolation, perspective-correct interpolation.

Lab #3 (30. 3. - 6. 4. 2017)

OpenGL coordinate systems, textures: glGenTextures(), glBindTexture(), .., data transfer modes for textures.
Shaders: GLSL shader/program setup (simple VS-FS system - Phong shading with optional texture).
C# examples: 086shader, [087fireworks]
C++ examples: sample09 (GLSL shader, texture), [sample10 (Cg shader)]

Task gpu010: Texture animation using shaders (C++, C#)

Lecture #7 (6. 4. 2017)

Math for realtime graphics II

Interpolation and approximation (Hermite curves, Bezier, natural spline, B-spline), quaternion spline interpolation

Lecture #8 (13. 4. 2017)

Data & LoD

The rest of math: quaternion interpolation, skinning, ..
Data for real-time graphics: B-rep, scene hierarchies, triangle meshes, relation to OpenGL (buffers). Survey of LoD approaches, discrete LoD techniques, introduction to dynamic LoD techniques.

Lab #4 (13. - 20. 4. 2017)

Demo: quaternions, animation curves. Shaders in C++.
C++ examples: sample05 (quaternions), sample06 (animation curves, texture combiners), sample09 (GLSL shader, texture), sample10 (Cg shader), sample11 (Gerstner waves in Cg).

Task gpu007: Vinyl surface shader (C++/C#)

Lecture #9 (20. 4. 2017)


Dynamic LoD techniques, sustained frame rate LoD for terrain data.

Lecture #10 (27. 4. 2017)

Advances in OpenGL API

Data: terrain LoD, point sprites, billboards, imposters.
OpenGL 3 & 4 advances: geometric shaders, buffer objects, shader pipelines, VAO buffers,..

Lab #5 (27. 4. - 4. 5. 2017)

LoD examples, GPU-Based Geometry Clipmaps, Video 1, Video 2

Task gpu014: Pool simulation (C#/C++)

Lecture #11 (4. 5. 2017)

Tesselation shaders, GPGPU, CUDA

Advances in OpenGL (finish). Geometry and tesselation shader concepts, tesselation shaders.

Lecture #12 (11. 5. 2017)

Geometry shaders, GPGPU, CUDA

Tesselation shaders (finish), geometry shaders. GPGPU and CUDA basics.

Lecture #13 (18. 5. 2017)

CUDA II, Advanced GPU techniques I

CUDA and OpenCL (finish). Stencil-buffer techniques (mirror, volumetric shadows), multi-pass algorithms, advanced cube-mapping, ..

Lab #6 (18. - 25. 5. 2017)

CUDA and OpenCL examples, particles, school of fish.
OpenCL project example (090opencl in GrCis), CUDA project example (sample14 in ogl).

Task gpu012: Laser show in CUDA (C#/C++)

Lecture #14 (25. 5. 2017)

Advanced GPU techniques II

Parallax mapping, occlusion mapping, Non-Photorealistic Rendering, direct CSG rendering, accessibility, Lafortune's BRDF, ..

Copyright (C) 2005-2017 J.Pelikán, last change: 2017-05-18 02:55:50 +0200 (Thu, 18 May 2017)