Welcome to Shaders and GPU Programming

advertisement
[CSCI-4800/5800] - Shaders and GPU
Programming
Professor Min-Hyung Choi
January 20, 2016
Welcome to Shaders and GPU Programming
 Instructor: Dr. Min Choi
‒
‒
‒
‒
Website: cse.ucdenver.edu/~mchoi
Office: Lawernce St. Center LW-812
Office Hours: MW: 2:00[pm] – 3:30[pm]
Graphics Lab: MF: 9:00[am] – 7:00[pm]
 Prerequisites: CSCI-2421 – Data Structures and Program Design
‒ Co-requisites: N/A
‒ Required Knowledge-base: Trigonometry, Linear Algebra, C++, Graphics
 Course Format: Hybrid (Online/Lecture)
‒ HW (Programming Assignments) 60%
‒ Final Project (Project Proposal/Implementation) 40%
 Course Website: graphics.ucdenver.edu/SGPU/
Shader and GPU Programming
 Required Textbook: OpenGL 4 Cookbook
‒
‒
‒
‒
Author: David Wolff
Publisher: Packt Publishing: 2nd Revised Edition
ISBN-10: 1782167021
ISBN-13: 978-1782167020
‒ Recommended Textbooks:
‒ OpenGL SuperBible
 Author: Graham Sellers, et al.
 ISBN-10: 0321902947
‒ Interactive Computer Graphics
‒ Author: Edward Angel and D. Shreiner
 ISBN-10: 0132545233
‒ OpenGL Shading Language
 Author: Randi J. Rost et al.
 ISBN-10: 0321637631
Shader and GPU Programming
 Course Objective: Build experience in shader programming and GPU
programming using existing examples to produce high level, interactive,
graphical applications.
 Use existing examples to build high level interactive applications
 C++/OpenGL Shading (Using newest OpenGL versions)
 Qt-based Interactive GUI Applications
 Final Project: Application in imaging, graphics, simulation, or virtual reality
 Explore the history and development of shader development and the
introduction of General Purpose GPU programming (GPGPU)
 Introduction to shaders with the Graphics Library Shading Language (GLSL)
 Shaders for general purpose parallel computation
 Transition from shaders to GPGPU languages (OpenCL/CUDA)
Shader and GPU Programming
 Course Topics:
‒
‒
‒
‒
‒
‒
‒
Graphics Pipeline and Rendering
Graphics Processing Unit (GPU) Architecture
3D Mathematics and Modeling
Graphics and Special Effect Shaders
Lighting, Illumination, and Shadowing
General Purpose GPU Parallel Programming (GPGPU)
Applications:






Cloth Simulation [1]
Animation: Movies, Game design
Game Design: Graphics, Real-time rendering
Scientific Visualization: Data visualization, model visualization
Physical Simulation: Rigid bodies, deformable objects, fluids, etc.
Virtual Reality: Augmented reality, interactive visualization
GPGPU: Numerical Algorithms, Simulation, etc.
Course Structure
 Programming Assignments (60%)
‒ Programming in C++ with OpenGL (v. > 4.0)
‒ Provided Libraries
 Mathematics (Templated Linear Algebra)
 Graphics Library (Meshes, Texturing, etc.)
Grading Scale:
90.0 80.0 70.0 –
60.0 –
< 60.0
100 % A/A+
89.9 % B/B+
79.9 % C/C+
69.9 % D/D+
% F
‒ Visual Studio 2013
‒ Graphical User Interface (GUI) Programming
 OpenGL/Qt
 Final Project (40%)
‒ Project Proposal
‒ Project Implementation
 Can be based on provided example code/shaders
 Broader Application Domain (Graphics, Simulation, Virtual Reality, etc.)
What is Shading?
Crytek Engine
What is Shading?
Unreal Engine 4 (UT4)
What is Shading?

Game Engines
 Target both visual effects and visual quality for real-time rendering
 Extremely common terminology for describing ‘high-quality’ graphics
 Massive form of parallel computation

Animation





Generate high quality images
Photorealistic environments
Advanced Lighting
Complex Surface Materials
Surface Reflections
UE4 High Fidelity Interior Render
What is Shading?
 What is shading?
 Initially: Perception of 3D objects
‒ Originally based in Lighting Modeling
‒ Rasterization of 3D objects with lighting
‒ Rendering realistic effects
 Currently: Advanced 3D Effects
‒
‒
‒
‒
‒
Motion Blur/Depth of Field etc.
Lighting/Light Rays/Bloom/Emission
Shadowing
Reflection/Refraction
Bump mapping/Displacement Mapping etc.
Simple Lighting-based Shading
(Sketch [vs] Rendered)
 What is a shader?
‒ A shader is a set of techniques and graphics resources that incorporate several graphics
algorithms to be executed on a Graphical Processing Unit (GPU) to efficiently render
environmental materials and complex visual effects in games, animation, virtual reality,
and scientific visualization.
What is Shading?
 Primitive Components of Shading
‒ Vertex Data (Loaded from Model)




Vertex Position – Position of every 3D point that the model is made of
Surface Normals – Defines the orientation of the surface for each face
Texture Coordinates – Defines how a texture is mapped to a surface
Color – Red, Blue, Green (RGB) color of each vertex
‒ Vertex Connectivity (Loaded from Model)
 Triangles
 Quads
 Polygons
‒ Fragment Generation
 Rasterization
 Interpolation
(Fixed) Graphics Pipeline Overview
Detailed Graphics Pipeline: From 3D model to 2D Screen display
(Fixed) Graphics Pipeline Overview
CPUs and GPUs share resources but have very different execution models. Shaders
provide a means of implementing massively parallel programs on a GPU.
Graphics Pipeline Overview
What is Shading: Basic Shader Pipeline
Process of rasterizing a shaded triangle and quad based on a set of vertex colors.
All shaders have been derived from this simple principle.
(Programmable) Graphics Pipeline Overview
The modifiable components within the graphics pipeline are the Vertex shader and
the Fragment shader. These are the programmable sections of the graphics pipeline.
Programmable Graphics Shaders
 Graphics Shaders
‒
‒
‒
‒
Heavily rely on mathematical derivations of physical phenomenon
Introduce textures and techniques for producing advanced effects
Massively parallel computation for real-time applications
Extensive amount of research for over 20 years
‒ Creativity + Math = Shader Design
Normal Mapping
1.) Design low-poly mesh
2.) Improve detail with high resolution
3.) Bake high resolution to normal texture
4.) Normal texture defines surface detail
5.) Fast high-quality models
Modeling Applications:
3ds Max 2016
Z Brush 4
Parallax Mapping
Parallax mapping provides the illusion of large surface offsets using a displacement texture. This
technique has been used extensively in real-time applications and game design.
Displacement Mapping
Displacement mapping illustrates the potential of real-time tessellation: the low poly mesh is
subdivided during runtime to reproduce the visual quality of the high poly model.
Displacement Mapping
Displacement mapping illustrates the potential of real-time tessellation: the low poly mesh is
subdivided during runtime to reproduce the visual quality of the high poly model.
Advanced Lighting: Water Shaders
Even 3D scenes composed of simplistic geometry and low resolution
textures can be drastically improved using shaders (Minecraft)
Advanced Lighting: Water Shaders
A primary research direction in shader programming has focused on the
accurate rendering of water and fluids within physical simulations
Shader Library
 Objective: Provide an implementation of all the basic graphics components
required to load and view OpenGL shaders (Graphics + Mathematics).
‒ Provides high level abstractions to accelerate shader implementations
 Shifts the focus from loading resources to writing GLSL code
 Simplifies the process of writing high-level applications
‒ Shaders rely on complex data structures and initial calculations of various
geometric properties
 Surface Normals, Tangents, etc.
‒ Shaders require an extensive set of resources including models and textures
 Model loading
 Texture loading
 Source code provided on course website
Graphics Library
 Shader Library: A graphics library that facilitates the basic operations
required for any interactive graphics application. This library includes the
following components:
‒ 3D Camera: Provides the ability to change the view of the loaded 3D model.
This is critically important for inspecting and viewing complex shader effects.
‒ Mesh Loading: Countless model file formats provide textual representations
of 3D models. The provided implementation
‒ Shader Loading: The process of loading, compiling, and linking shaders can
be simplified to build higher-level applications
‒ Texture Loading: All higher level shaders require textures of some kind. From
lighting to normal mapping, to displacement mapping, parallax mapping and
others
Mathematics Library
 Templated Linear Algebra Library: A mathematics library that can be
used by only copying and pasting it into a working project. The templated
implementation allows for vectors and matrices of type float and double
This library includes the following primary components:
‒ Vectors: Mathematical representations for points, displacements, surface
normals, and directions.
‒ Matrices: Used to store rotations and transformations of 3D objects
‒ Quaternions: Used to represent rotations in 3D space as rotations in the
complex plane. Used within most game engines and animation packages.
‒ Transformations: Provides an easy to use interface for moving, scaling, and
rotating objects in 3D space
Programmable Shader Example (OpenGL 4.X)
Programmable Shading: Standard Light Model Shader (Metal Teapot)
 Example: Phong Lighting Model + Texture + Specular Map + Normal Map
 Methodology used in many games, modeling, and animation software
 Example: How to model, light, and texture a shaded 3D object
 Implemented using the C++ source code for this course
 Uses GLSL and the programmable graphics pipeline
1.
2.
3.
4.
5.
Loaded Model Geometry (Teapot.obj)
No lighting
Diffuse Lighting (Single light source)
Specular Mapping (Surface highlights)
Normal + Specular Mapping (Surface roughness, Surface highlights)
Graphical Shader Overview
Standard Light Model Shader (Teapot Geometry – No lighting)
Graphical Shader Overview
Standard Light Model Shader (Textured)
Graphical Shader Overview
Standard Light Model Shader (Diffuse Lighting)
Graphical Shader Overview
Standard Light Model Shader (Specular Mapping)
Graphical Shader Overview
Standard Light Model Shader (Bump Mapping + Specular Mapping)
Graphical Shader Overview
Standard Light Model Shader Result (Bump Mapping + Specular Mapping)
Extending Shading to other Applications
 Shading Not Limited to Graphics
‒
‒
‒
‒
‒
Lighting and Modeling in Simulation
Procedural Textures
Graphical Effects
Scientific Visualization
Augmented Reality
References
[1] Duksu Kim et al. Hybrid Parallel Continuous Collision Detection using CPUs and GPUs, Computer
Graphics Forum, 2009.
[2] Unreal Engine 4, Free Materials Mini Pack, https://forums.unrealengine.com/showthread.php?6980-Freematerials-mini-PACK, 2014.
Download