Realtime Graphics on GPU - current information (2017/2018)

Lecture: every MONDAY AT 16:00 in S1 room (Malá Strana)

Labs: every other MONDAY AT 12:20 (starting on 26. 2. 2018) in the SW1 lab (Rotunda). Two alternating groups - one Czech, one English.

Lecture plan

Lecture #1 (19. 2. 2018)

Introduction, literature, GPU history & architecture

Course content, additional sources, brief overview of GPU history

Lecture #2 (26. 2. 2018)

GPU architecture II

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

Lab #1 (26. 2. - 5. 3. 2018)

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

Lecture #3 (5. 3. 2018)

Basic GPU techniques

Buffers, double- and triple- buffering, semi-transparency, anti-aliasing, stencil buffer, mirror stencil buffer technique (from Advanced techniques), [GPU FFP lighting].

Lecture #4 (12. 3. 2018)

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 (12. - 19. 3. 2018)

Modes of data transfer CPU->GPU: immediate mode, client-side buffers, index buffers, glVertexPointer(), .., server-side buffers (VBO), GL extensions (glew.h, glew.c).

Lecture #5 (19. 3. 2018)

Shaders II, GLSL

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

Lab #3 (26. 3. 2018)

GLFW window library for OpenGL, time measurements in GLFW/SDL.
Textures: glGenTextures(), glBindTexture(), .., data transfer modes for textures.
Shaders: GLSL shader/program setup (simple VS-FS system - Phong shading with optional texture).
C++ examples: sample15 (GLFW example, shaders, texture, time measurement), sample08 (texture read from bitmap file, buffers, benchmarking in SDL), sample09 (GLSL shader, texture), [sample10 (Cg shader)].

Task gpu015: GPU benchmark (C++)

Lecture #6 (26. 3. 2018)

Advances in OpenGL API, Tesselation shaders

OpenGL 3 & 4 advances: geometric shaders, buffer objects, shader pipelines, VAO buffers,.. Geometry and tesselation shader concepts, tesselation shaders.

Lecture #7 (9. 4. 2018)

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 #4 (9. - 16. 4. 2018)

OpenGL coordinate systems, more shaders in C++/C#.
C# examples: 086shader, 038trackball .
C++ examples: sample09 (GLSL shader, texture), sample10 (Cg shader, EXE only), sample11 (Gerstner waves in Cg, EXE only).

Task gpu003: Procedural texture using noise (C++/C#)

Lecture #7 (16. 4. 2018)

Math for realtime graphics II

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

Lab #5 (30. 4. - 7. 5. 2018)

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

Task gpu006: Crystal ball (C++/C#)

Lecture #8 (30. 4. 2018)

Data & LoD

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.

Lecture #9 (7. 5. 2018)

LoD II

Dynamic LoD techniques, sustained frame rate LoD for terrain data. Data: terrain LoD, point sprites, billboards, imposters.

Lab #6 (14. 5. 2018)

LoD examples, GPU-Based Geometry Clipmaps, Video 1, Video 2, Hugues Hoope's page.

Task gpu005: Terrain with LoD (C#/C++)

Lecture #10 (14. 5. 2018)

GPGPU, CUDA, OpenCL

GPGPU and CUDA basics, architecture, GPGPU programming

Lab #7 (21. 5. 2018)

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

Task gpu016: Hovercraft mini-game (C#/C++)
Task gpu012: Laser show in CUDA (C#/C++)

Lecture #11 (21. 5. 2018)

CUDA II, Advanced GPU techniques I

CUDA and OpenCL, examples. Stencil-buffer techniques (volumetric shadows), multi-pass algorithms, advanced cube-mapping, Parallax mapping, occlusion mapping, Non-Photorealistic Rendering..


Copyright (C) 2005-2018 J.Pelikán, last change: 2018-09-24 11:20:26 +0200 (Mon, 24 Sep 2018)