1 / 32

GPGP - Background Lecture

GPGP - Background Lecture. Graphics Pipelines, OpenGL, Fragment Programs, First GPGP Programs. Purpose. Give sufficient background to non-graphics students to program a simple GPGP program Attempted to minimize any assumptions prior knowledge of Graphics. My Background in GPGP.

yardan
Download Presentation

GPGP - Background Lecture

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. GPGP - Background Lecture Graphics Pipelines, OpenGL, Fragment Programs, First GPGP Programs The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  2. Purpose • Give sufficient background to non-graphics students to program a simple GPGP program • Attempted to minimize any assumptions prior knowledge of Graphics The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  3. My Background in GPGP • 06/2003 - Worked with Bill Baxter on paint work using GPU to transform volume representation of paint to RGB • 01/2004 - Worked with Brandon Lloyd on shadow work • Didn’t touch GPU work, but understood what it did • 09/2005 - Taught COMP136 and we talked about GPU • 10/2006 - Wrote a simple program to remove radial distortion from images in real time • 01/2007 - Prepared for this lecture The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  4. Overview • Raster Graphics • Where did this start? • Graphics Pipeline • What’s the hardware like? • OpenGL • How to talk to the hardware? • GPU Programming • How to make it do something non-standard? • A First GPGP Program • Hello World! The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  5. Raster Graphics --“Utah” Rendering • 1960s-1970s The University of Utah led raster graphics research • Ivan Sutherland • How do we convert mathematical representations of objects into images on the screen? • Conversion of continuous to discrete • Solution of light-surface-eye interactions The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  6. Object Representations • MANY continuous representations exist for objects • Planar polygons, quadrics, splines, M-Reps, general equations … • Discrete representations are sparser • Generally some interpretation of an array of numbers The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  7. The Winner! • In modern raster graphics, the triangle is king • It is the simplest continuous representation that can approximate all other surface-types • All other continuous representations must be triangulated before being rasterized • Unless GPGP is used! The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  8. Rasterization Terms • Tessellate - convert some other continuous representation to planar polygons • Triangulate - converting some other continuous representation to triangles • Vertex - a point in some nD space • Rasterize - convert a triangle* to fragments • Fragment - a potential pixel** The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  9. “Utah” Graphics Pipeline • Obtain triangulation of model • Affine Transforms • Projective Transforms • Clip to viewable region • Rasterize The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  10. Overview • Raster Graphics • Where did this start? • Graphics Pipeline • What’s the hardware like? • OpenGL • How to talk to the hardware? • GPU Programming • How to make it do something non-standard? • A First GPGP Program • Hello World! The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  11. Why Specialty Hardware? • CPU can do all Turing complete operations The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  12. Earliest Commodity Hardware Vertex Transformation • State of pipeline initialized • Vertices come down the pipe • Framebuffer and depth buffer set by the end Clipping Rasterization Fragment Operations Visibility The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  13. Cutting-edge Commodity Hardware Vertex Transformation • Okay, not much changed • Orange denotes programmability • Power of standard set of settings increased • Output can go to any/many buffers Clipping Rasterization Fragment Operations Visibility The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  14. Overview • Raster Graphics • Where did this start? • Graphics Pipeline • What’s the hardware like? • OpenGL • How to talk to the hardware? • GPU Programming • How to make it do something non-standard? • A First GPGP Program • Hello World! The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  15. Talking to the GPU • Two parts: • STATE: The majority of OpenGL calls modify the state machine • INPUT: Vertices • Three vertices make a triangle • Once a triangle is complete, the GPU runs with it The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  16. OpenGL Overview • Most of the features in OpenGL will probably never be used in this class • For the majority of GPGP work, you render a quad (two triangles) that fills the screen on a one-input-texture-to-one-output-pixel basis The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  17. Note on OpenGL • Although OpenGL calls are supported by nVIDIA or ATi drivers, some windowing system must be used • Native to OS - a pain • GLUT - quick, easy, small, has some issues with the “nicities of coding” • Almost all windowing toolkits support OpenGL • FLTK, Qt, WxWindows, etc. The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  18. Let’s go to the code • All code is available at http://www.cs.unc.edu/~jwendt/classes/GPGPLecture The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  19. OpenGL Gnitty-Gritties • Three more important OpenGL features • Multi-pass rendering • Read-backs • Extensions The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  20. Overview • Raster Graphics • Where did this start? • Graphics Pipeline • What’s the hardware like? • OpenGL • How to talk to the hardware? • GPU Programming • How to make it do something non-standard? • A First GPGP Program • Hello World! The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  21. History of Commodity GPU Programming • Pre-1999 - Basic rasterizers • Some texture combination ability • Vertex transformation occurs on CPU • 1999-2000 - Slightly configurable • Cube maps, signed math ops • Vertex transforms added to GPU • 2001 - Vertex programmability • 2002-present - Vertex/fragment programmability The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  22. History of GPU non-Commodity Programmability • mid-1990’s - UNC PixelFlow • later-1990’s - Stanford RTSL The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  23. GPU Programming Languages • Assembly language • Cg and HLSL • GLSL The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  24. Types of GPU Programs • Vertex Programs • Required Outputs: Vertex position and Vertex color • Optional Outputs: Hardware/language dependant maximum number of output values • Fragment Programs • Required Outputs: RGBA color • Optional Outputs: Writing to multiple sources The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  25. Communicating with GPU Programs • There are two ways of sending information to GPU Programs: • Explicitly setting parameters using specified function calls • Sending down standard values by setting OpenGL state The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  26. For More Info • Tutorials, sample code, etc. • Go to www.gpgpu.org/developer • Cg Tutorial • Amazon: http://www.amazon.com/Cg-Tutorial-Definitive-Programmable-Real-Time/dp/0321194969 • GLSL (Orange Book) • Amazon: http://www.amazon.com/OpenGL-Shading-Language-2nd/dp/0321334892/sr=1-1/qid=1169220867/ref=pd_bbs_1/102-4102099-2237769?ie=UTF8&s=books The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  27. Overview • Raster Graphics • Where did this start? • Graphics Pipeline • What’s the hardware like? • OpenGL • How to talk to the hardware? • GPU Programming • How to make it do something non-standard? • A First GPGP Program • Hello World! The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  28. Let’s go to the code • Borrowed heavily from gpgpu.org/developer • All code is available at http://www.cs.unc.edu/~jwendt/classes/GPGPLecture The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  29. Notes • No Vertex program! … no use for one. • The framebuffer-to-texture transfers we were doing are slow • Use the framebuffer object class available from GPGPU.org/developer • GLEW is downloadable from glew.sourceforge.net/ • We only passed one parameter down in this example The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  30. Reading the Data Back to the CPU • See function SnapShot at the bottom of the last file The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  31. Debugging • IMDebug by Bill Baxter: • http://www.billbaxter.com/projects/imdebug/index.html The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

  32. Questions? The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007

More Related