1 / 36

GPU Tutorial

GPU Tutorial. 이윤진 Computer Game 2007 가을 2007 년 11 월 다섯째 주 , 12 월 첫째 주. Contents. Introduction to GPU High-level shading languages GPU applications. Introduction to GPU. 이윤진 Computer Game 2007 가을 2007 년 11 월 26 일. Slide Credits. Marc Olano (UMBC) SIGGRAPH 2006 Course notes

Download Presentation

GPU Tutorial

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. GPU Tutorial 이윤진 Computer Game 2007 가을 2007년 11월 다섯째 주, 12월 첫째 주

  2. Contents • Introduction to GPU • High-level shading languages • GPU applications

  3. Introduction to GPU 이윤진 Computer Game 2007 가을 2007년 11월 26일

  4. Slide Credits • Marc Olano (UMBC) • SIGGRAPH 2006 Course notes • David Luebke (University of Virginia) • SIGGRAPH 2005, 2007 Course notes • Mark Kilgard (NVIDIA Corporation) • SIGGRAPH 2006 Course notes • Rudolph Balaz and Sam Glassenberg (Microsoft Corporation) • PDC 05 • Randy Fernando and Cyril Zeller (NVIDIA Corporation) • I3D 2005

  5. GPU • GPU: Graphics Processing Unit • Designed for real-time graphics • Present in almost every PC • Increasing realism and complexity Americas Army

  6. Growth of GPU (NVIDIA)

  7. Growth of GPU (NVIDIA) • Performance matrices • since 2000, the amount of horsepower applied to processing 3D vertices and fragments has been growing at a staggering rate

  8. Computational Power • GPUs are fast… • 3.0 GHz Intel Core2 Duo (Woodcrest Xeon 5160): • Computation: 48 GFLOPS peak • Memory bandwidth: 21 GB/s peak • Price: $874 (chip) • NVIDIA GeForce 8800 GTX: • Computation: 330 GFLOPS observed • • Memory bandwidth: 55.2 GB/s observed • • Price: $599 (board) • GPUs are getting faster, faster • CPUs: 1.4× annual growth • GPUs: 1.7×(pixels) to 2.3× (vertices) annual growth

  9. Computational Power

  10. Computational Power • Why are GPUs getting faster so fast? • Arithmetic intensity • the specialized nature of GPUs makes it easier to use additional transistors for computation • Economics • multi-billion dollar video game market is a pressure cooker that drives innovation to exploit this property

  11. Flexible and Precise • Modern GPUs are deeply programmable • Programmable pixel, vertex, and geometry engines • Solid high-level language support • Modern GPUs support “real” precision • 32 bit floating point throughout the pipeline • High enough for many (not all) applications • Vendors committed to double precision soon • DX10-class GPUs add 32-bit integers

  12. GPU Fundamentals: Graphics Pipeline • A simplified graphics pipeline • Note that pipe widths vary • Many caches, FIFOs, and so on not shown CPU GPU Graphics State Xformed, Lit Vertices (2D) Screenspace triangles (2D) Fragments (pre-pixels) Final Pixels (Color, Depth) Application Transform& Light AssemblePrimitives Rasterize Shade Vertices (3D) VideoMemory(Textures) Render-to-texture

  13. GPU Fundamentals: Modern Graphics Pipeline • Programmable pixel processor! • Programmable vertex processor! CPU GPU Graphics State VertexProcessor FragmentProcessor Xformed, Lit Vertices (2D) Screenspace triangles (2D) Fragments (pre-pixels) Final Pixels (Color, Depth) Application Transform& Light AssemblePrimitives Rasterize Shade Vertices (3D) VideoMemory(Textures) Render-to-texture

  14. GPU Fundamentals: Modern Graphics Pipeline CPU GPU Graphics State GeometryProcessor Xformed, Lit Vertices (2D) Screenspace triangles (2D) Fragments (pre-pixels) Final Pixels (Color, Depth) Application VertexProcessor AssemblePrimitives Rasterize FragmentProcessor Vertices (3D) VideoMemory(Textures) Render-to-texture • Programmable primitive assembly! • More flexible memory access!

  15. GPU Pipeline: Transform • Vertex processor (multiple in parallel) • Transform from “world space” to “image space” • Compute per-vertex lighting

  16. GPU Pipeline: Assemble Primitives • Geometry processor • How the vertices connect to form a primitive • Per-Primitive Operations

  17. GPU Pipeline: Rasterize • Rasterizer • Convert geometric rep. (vertex) to image rep. (fragment) • Pixel + associated data: color, depth, stencil, etc. • Interpolate per-vertex quantities across pixels

  18. GPU Pipeline: Shade • Fragment processors (multiple in parallel) • Compute a color for each pixel • Optionally read colors from textures (images)

  19. GPU Parallelism GeForce 7900 GTX

  20. Vertex (stream) Buffer Geometry(stream) Fragment(array) GPU Programming • Simplified computational model • consistent as hardware changes • All stages SIMD • Fixed conversion / remapping between each stage

  21. Vertex (stream) Buffer Geometry(stream) Fragment(array) Example • Vertex shader void main() { gl_FrontColor = gl_Color; gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex; } • Pixel shader void main() { gl_FragColor = gl_Color;}

  22. Vertex Shader • One element in / one out • No communication • Can select fragment address • Input: • Vertex data (position, normal, color, …) • Shader constants, Texture data • Output: • Required: Transformed clip-space position • Optional: Colors, texture coordinates, normals (data you want passed on to the pixel shader) • Restrictions: • Can’t create new vertices

  23. Pixel Shader • Biggest computational resource • One element in / 0 – 1 out • Cannot change destination address • No communication • Input: • Interpolated data from vertex shader • Shader constants, Texture data • Output: • Required: Pixel color (with alpha) • Optional: Can write additional colors to multiple render targets • Restrictions: • Can’t read and write the same texture simultaneously

  24. Example http://www.lighthouse3d.com/opengl/glsl/ • Vertex shader void main() { vec4 v = vec4(gl_Vertex); v.z = 0.0; gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex; } • Pixel shader void main() { gl_FragColor = vec4(0.8,0.4,0.4,1.0); }

  25. Geometry Shader • One element in / 0 to ~100 out • Limited by hardware buffer sizes • Like vertex: • No communication • Can select fragment address • Input: • Entire primitive (point, line, or triangle) • Optional: Adjacency • Output: • Zero or more primitives (a homogenous list of points/lines or triangles) • Restrictions: • Allow parallel processing but preserve serial order

  26. Geometry Shader • Applications • Fur/fins, procedural geometry/detailing, • Data visualization techniques, • Wide lines and strokes, …

  27. Vertex (stream) Buffer Geometry(stream) Fragment(array) Multiple Passes • Communication • None in one pass • Arbitrary read addresses between passes

  28. Example Depth buffer Normal buffer Final result Silhouettes Creases Image Space Silhouette Extraction Using Graphics Hardware [Wang 2005]

  29. GPU Applications • Bump/Displacement mapping Height map Diffuse light without bump Diffuse light with bump

  30. GPU Applications • Volume texture mapping

  31. GPU Applications • Cloth simulation

  32. GPU Applications

  33. GPU Applications • Real-time rendering • Image processing • General purpose GPU (GPGPU) • …

  34. Contents • Introduction to GPU • High level shading languages • GPU applications

  35. GPU Applications • Soft Shadows Percentage-closer soft shadows [Fernando 2005]

More Related