Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is...
Transcript of Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is...
![Page 1: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/1.jpg)
Graphics Hardware
COMP575 10/19/2011
![Page 2: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/2.jpg)
Overview
Graphics Hardware
} What is a GPU } Evolution of GPU } GPU Design } Modern Features
} Programmability!
![Page 3: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/3.jpg)
Overview
Graphics Hardware
} What is a GPU } Evolution of GPU } GPU Design } Modern Features
} Programmability!
![Page 4: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/4.jpg)
Graphics Processing Unit } What’s a GPU?
} GPU : dedicated graphics rendering device } A GPU implements a number of graphics primitive
operations in a way that makes running them much faster than drawing directly to the screen with the host CPU.
Graphics Hardware
GPU = Graphics Processing Unit
CPU = Central Processing Unit
≠
![Page 5: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/5.jpg)
} Frame buffer can be part of the main memory
A simple graphics system
System bus
CPU Main Memory Frame buffer
Scan Controller
Similar layout to one in rasterization assignment
Problem?
Graphics Hardware
![Page 6: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/6.jpg)
Dedicated memory
System bus
CPU Main Memory
Frame buffer
Scan Controller
} Video memory } On-board frame buffer } Much faster access
Can this be improved still?
Graphics Hardware
![Page 7: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/7.jpg)
Graphics Accelerator
System bus
CPU Main Memory
Graphics Memory/ Frame buffer
Scan Controller
Graphics Processor
} A dedicated processor for graphics processing
Graphics Hardware
![Page 8: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/8.jpg)
Big Name GPU
Graphics Hardware
![Page 9: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/9.jpg)
Less Know, Equally Important
11/22/2010 Graphics Hardware
![Page 10: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/10.jpg)
The GPU
Graphics Hardware
} Traditional Requirements (until early 90s) } Drive display } Simple video decoding
} New developments } Feature sizes and pipeline } 3D Graphics Computations
} Transformation and lighting } Per-pixel effects
} High-definition TV
![Page 11: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/11.jpg)
3D Graphics Card: ATI Radeon
![Page 12: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/12.jpg)
3D Graphics Card: PowerVR SGX5
11/22/2010 Graphics Hardware
![Page 13: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/13.jpg)
The GPU
Graphics Hardware
} What does the GPU do?
![Page 14: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/14.jpg)
Graphics Accelerator
System bus
CPU Main Memory
Graphics Memory/ Frame buffer
Scan Controller
Graphics Processor
} A dedicated processor for graphics processing
Where’s the bottleneck?
Graphics Hardware
![Page 15: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/15.jpg)
Graphics Bus Interface
CPU Main Memory
Graphics Memory/ Frame buffer
Scan Controller
Graphics Processor
PCI Bus – 132 MB/s
System Bus – 800MB/s
Other Peripherals
} PCI based technology
Graphics Hardware
![Page 16: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/16.jpg)
Graphics Bus Interface
} PCI Bus becomes the bottleneck! } Many devices are using it } There is a lot of stuff needs to be transmitted from main
memory to graphics memory (geometry, textures, etc) } Example: 2M triangle, 90 Bytes each – 180MB > 132 MB
(PCI bandwidth)
Graphics Hardware
![Page 17: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/17.jpg)
Accelerated Graphics Port (AGP)
CPU Main Memory
Graphics Memory/ Frame buffer
Scan Controller
Graphics Processor
PCI Bus – 132 MB/s
Other Peripherals
AGP 1x: 518 MB/s Fast!!!
} A dedicated bus that allows direct access of main memory
Graphics Hardware
![Page 18: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/18.jpg)
AGP
} AGP 1x is four times as fast compared to PCI! } Peaked at APG 8x
} No more local bus congestion! } More geometry can be processed! } Direct execution of many graphics operations from main
memory
Graphics Hardware
![Page 19: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/19.jpg)
PCI Express
} Provide very high bandwidth to CPU } Standard bus for GPUs as of 2009 } Throughput varies with PCIe version
11/22/2010 Graphics Hardware
![Page 20: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/20.jpg)
Evolution
Graphics Hardware
![Page 21: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/21.jpg)
Overview
Graphics Hardware
} What is a GPU } Evolution of GPU } GPU Design } Modern Features
} Programmability!
![Page 22: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/22.jpg)
Classic Graphics Pipeline
} Transform in 3D word coordinate system
Modeling Transformation
Lighting
Viewing Transformation
Projection Transformation
Clipping
Scan Conversion
3D Geometric Primitives
Image
} Illuminate according to lighting and reflectance
} Transform into 3D camera coordinate system
} Transform into 2D screen coordinate system
} Clip primitives outside camera’s view
} Draw Pixels (also texturing, hidden surface, …)
22
![Page 23: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/23.jpg)
GPU pipeline Program/
API
GPU Front End
Vertex Processing
Primitive Assembly
Rasterization & Interpolation
Fragment Processing
Raster Operations
Framebuffer
Driver CPU
GPU Bus
[example from Mark Colbert]
Geometry Processing
![Page 24: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/24.jpg)
GPU pipeline } Program
} Your Program
} API } Either OpenGL or DirectX Interface
---------
Program/ API
Driver } Driver
} Black-box } Implementations are Company Secrets
} Largest Bottleneck in many GPU programs
![Page 25: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/25.jpg)
GPU pipeline } GPU Front End
} Receives commands & data from driver } PCI Express helps at this stage
GPU Front End
Vertex Processing
} Vertex Processing } Normally performs 3Dà2D transformations } Programmable
Geometry Processing
} Geometry Processing } Not in classic pipeline (optional in modern) } Creates new primitives } Programmable
![Page 26: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/26.jpg)
GPU pipeline
} Primitive Assembly } Compiles Vertices into Points, Lines and/or Polygons } Link elements and set rasterizer
Primitive Assembly
Fragment Processing
Rasterization & Interpolation
} Rasterization } Computes fragments (pixels)
} Barycentric Coordinates } Depth, etc…
} Interpolation (texture coordinates and colors)
} Fragment Processing } Per-pixel computations (e.g. lighting) } Programmable
![Page 27: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/27.jpg)
GPU pipeline } Depth Checking
} Check framebuffer to see if lesser depth already exists (Z-Buffer)
} Limited Programmability
} Blending } Use alpha channel to combine colors already in the
framebuffer } Limited Programmability
Raster Operations
![Page 28: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/28.jpg)
GPU pipeline Program/
API
GPU Front End
Vertex Processing
Primitive Assembly
Rasterization & Interpolation
Fragment Processing
Raster Operations
Framebuffer
Driver CPU
GPU Bus
[example from Mark Colbert]
Geometry Processing
![Page 29: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/29.jpg)
example Program/
API
GPU Front End
Vertex Processing
Primitive Assembly
Rasterization & Interpolation
Fragment Processing
Raster Operations Framebuffer(s)
Driver
Bus
Code Snippet …. glBegin(GL_TRIANGLES); glTexCoord2f(1,0); glVertex3f(0,1,0); glTexCoord2f(0,1); glVertex3f(-1,-1,0); glTexCoord2f(0,0); glVertex3f(1,-1,0); glEnd();
…
[example from Mark Colbert]
![Page 30: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/30.jpg)
example Program/
API
GPU Front End
Vertex Processing
Primitive Assembly
Rasterization & Interpolation
Fragment Processing
Raster Operations Framebuffer(s)
Driver
Bus
01001001100….
GPU
[example from Mark Colbert]
![Page 31: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/31.jpg)
example Program/
API
GPU Front End
Vertex Processing
Primitive Assembly
Rasterization & Interpolation
Fragment Processing
Raster Operations Framebuffer(s)
Driver
Bus
viewing frustum
[example from Mark Colbert]
![Page 32: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/32.jpg)
example Program/
API
GPU Front End
Vertex Processing
Primitive Assembly
Rasterization & Interpolation
Fragment Processing
Raster Operations Framebuffer(s)
Driver
Bus
screen space
[example from Mark Colbert]
![Page 33: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/33.jpg)
example Program/
API
GPU Front End
Vertex Processing
Primitive Assembly
Rasterization & Interpolation
Fragment Processing
Raster Operations Framebuffer(s)
Driver
Bus
framebuffer
[example from Mark Colbert]
![Page 34: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/34.jpg)
example Program/
API
GPU Front End
Vertex Processing
Primitive Assembly
Rasterization & Interpolation
Fragment Processing
Raster Operations Framebuffer(s)
Driver
Bus
framebuffer
[example from Mark Colbert]
![Page 35: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/35.jpg)
Overview
Graphics Hardware
} What is a GPU } Evolution of GPU } GPU Design } Modern Features
} Programmability!
![Page 36: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/36.jpg)
Programmable GPU
Graphics Hardware
} Why do we want programmability?
![Page 37: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/37.jpg)
Shaders
Graphics Hardware
} Simple programs that run on GPU } Definition of “simple” evolves quickly
} Three main types: } Vertex Shaders
} Input: Vertex Data } Output: New Vertex Data
} Pixel /Fragment Shaders } Input: Vertex Colors, Normals, etc } Output: Fragment Color
} Geometry Shaders } Input: Mesh/Vertex Data } Output: New Mesh/Vertex Positions
![Page 38: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/38.jpg)
GPU pipeline Program/
API
GPU Front End
Vertex Processing
Primitive Assembly
Rasterization & Interpolation
Fragment Processing
Raster Operations
Framebuffer
Driver CPU
GPU Bus
[example from Mark Colbert]
Geometry Processing
![Page 39: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/39.jpg)
GPU pipeline
} Vertex Processing } Normally performs transformations } Programmable
Vertex Processing
Vertex Processor
vertex
data for interpolation
data for rasterization
POSITION
PSIZE
FOG
TEXCOORD[0-7] COLOR[0-1]
shader
POSITION, NORMAL, BINORMAL*, TANGENT*, TEXCOORD[0-7], COLOR[0-1], PSIZE
textures
![Page 40: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/40.jpg)
GPU pipeline
} Geometry Processing } Optional, can create new geometry } Programmable
Vertex Processing
Geometry Processor
geometry
shader
POINTS LINES TRIANGLES
textures
geometry
POINTS LINES TRIANGLES
![Page 41: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/41.jpg)
GPU pipeline
} Fragment Processing } Programmable
Fragment Processing
Fragment Processor
shader
textures
interpolated data
TEXCOORD[0-7] COLOR[0-1]
rasterized data
DEPTH COLOR[0-3]
DEPTH
data for raster ops
![Page 42: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/42.jpg)
Programming Shaders
Graphics Hardware
} Can be written in assembly language for specific GPU } High level languages exist
} Better portability } Slightly slower } Much easier to code
} Most are small variants on C } Cg – C for Graphics (DirectX and OpenGL, NVIDIA only) } HLSL – High Level Shader Language (DirectX) } GLSL – OpenGL Shader Language (OpenGL)
![Page 43: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/43.jpg)
GLSL
Graphics Hardware
} Language targeted specifically at graphics programming } Vectors built in:
} i.e. vec2, vec3, vec4 } vec4 v = vec4(a,b,c,d); } v.xyzw, v.x, v.y, v.z } v.rgba, ….
![Page 44: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/44.jpg)
GLSL cont.
Graphics Hardware
} Matrix built in… } e.g. float4x4 } mat2, mat3, mat4
} Linear algebra built in… } dot product, matrix-vector multiplication
} Geometric processing… } distance, length, normal
} Most of math.h } Optimized version (2nd order talyer approximation)
![Page 45: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/45.jpg)
Vertex Shaders
Graphics Hardware
} Commonly used for } Environmental effects } Complex character animation } Procedural deformation } Motion blur } Custom Lighting
![Page 46: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/46.jpg)
Geometry Shaders
11/22/2010 Graphics Hardware
} Tessellation (LOD) } Particle effects } Advanced clipping } Multiple renders
![Page 47: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/47.jpg)
Geometry Shaders
11/22/2010 Graphics Hardware
![Page 48: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/48.jpg)
Geometry Shaders
11/22/2010 Graphics Hardware
![Page 49: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/49.jpg)
Pixel Shaders
Graphics Hardware
} Bump Mapping } Per-pixel lighting } Cartoon rendering } Isotropic BRDF(Bi-Directional Reflective Distribution
Function) Based Lighting } GPU ray-tracing
![Page 50: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/50.jpg)
More Shaders : Render Textures
Graphics Hardware
} Parametrically specify complex textures
Stages of a Procedural Brick Shader
![Page 51: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/51.jpg)
Complex Examples
Graphics Hardware
} Reflective bump-mapping
![Page 52: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/52.jpg)
Far-cry Screen Shot
Graphics Hardware
![Page 53: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/53.jpg)
ATI Research Groups NPR
Graphics Hardware
![Page 54: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/54.jpg)
GPGPU
Graphics Hardware
} How does GPU growth compare to GPU?
![Page 55: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/55.jpg)
Why are GPUs so fast!?
Graphics Hardware
} Hardware is designed to exploit parallelism! } Same exact shader running over millions of vertices or
pixels } Known as SIMD (Single Instruction Multiple Data)
} Or SIMT (Single Instruction Multiple Threads)
} If-statements diminish effectiveness
} Best performing Shaders are aware of this.
![Page 56: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/56.jpg)
Early Programmable Graphics Hardware
} Parallelism + pipelining: ATI Radeon 9700
4 vertex pipelines 8 pixel pipelines
![Page 57: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/57.jpg)
Modern Programmable Hardware
11/22/2010 Graphics Hardware
} Unified Shaders (vertex, geometry, fragment)
![Page 58: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/58.jpg)
GPGPU – General Purpose GPU
Graphics Hardware
} Program graphics card for non-graphics } GPGPU programs must be aware of SIMD } nVidia has popular language specifically for this
} CUDA nvidia.com/cuda for more details } OpenCL – CPU and GPU support
![Page 59: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/59.jpg)
GPGPU – Not for Everything
11/22/2010 Graphics Hardware
} GPU threads are restrictive } Local memory is limited } Main memory access is expensive } Branching is expensive } Thread units must process same code path
} Unpredictable, varying code is not for GPUs } Huffman encoding/decoding
![Page 60: Graphics Hardware - GAMMAgamma.cs.unc.edu/graphicscourse/11_GPU.pdf · Graphics Hardware ! What is a GPU ! Evolution of GPU ! GPU Design ! Modern Features ! ... than drawing directly](https://reader034.fdocuments.net/reader034/viewer/2022052518/5f0adbdb7e708231d42db054/html5/thumbnails/60.jpg)
More GPGPU Links
Graphics Hardware
} nVidia } http://developer.nvidia.com/
} ATI } http://www.ati.com/developer/
} General Purpose GPU Programming } http://www.gpgpu.org
} OpenCL } http://www.khronos.org/opencl/