Presentation is loading. Please wait.

Presentation is loading. Please wait.

The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007 1 GPGP - Background Lecture Graphics Pipelines, OpenGL, Fragment Programs, First.

Similar presentations


Presentation on theme: "The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007 1 GPGP - Background Lecture Graphics Pipelines, OpenGL, Fragment Programs, First."— Presentation transcript:

1 The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007 1 GPGP - Background Lecture Graphics Pipelines, OpenGL, Fragment Programs, First GPGP Programs

2 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

3 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

4 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!

5 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

6 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

7 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!

8 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**

9 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

10 The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007 10 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! Overview

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

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

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

14 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!

15 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

16 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

17 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.

18 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/cl asses/GPGPLecture http://www.cs.unc.edu/~jwendt/cl asses/GPGPLecture

19 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

20 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!

21 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

22 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

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

24 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

25 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

26 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/developerwww.gpgpu.org/developer Cg Tutorial –Amazon: http://www.amazon.com/Cg- Tutorial-Definitive-Programmable-Real- Time/dp/0321194969http://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=bookshttp://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

27 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!

28 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/cl asses/GPGPLecture http://www.cs.unc.edu/~jwendt/cl asses/GPGPLecture

29 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

30 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

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

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


Download ppt "The University of North Carolina - Chapel Hill COMP 790-058 Spring 2007 1 GPGP - Background Lecture Graphics Pipelines, OpenGL, Fragment Programs, First."

Similar presentations


Ads by Google