1 / 36

A Crash Course on Programmable Graphics Hardware

A Crash Course on Programmable Graphics Hardware. Li-Yi Wei 2005 at Tsinghua University, Beijing. Why do we need graphics hardware?. The evolution of graphics hardware. SGI Origin 3400. NVIDIA Geforce 7800. 7 years of graphics accelenation.com/?doc=123&page=1. General & flexible

bao
Download Presentation

A Crash Course on Programmable Graphics Hardware

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. A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

  2. Why do we need graphics hardware?

  3. The evolution of graphics hardware SGI Origin 3400 NVIDIA Geforce 7800

  4. 7 years of graphics • accelenation.com/?doc=123&page=1

  5. General & flexible Intuitive Global illumination Hard to accelerate Ray tracing

  6. Local computation Easy to accelerate Not general Unintuitive Polygonal graphics pipeline

  7. Layered approach Like network layers Encapsulation Easy programming Driver optimization Driver workaround Driver simulation Protection Hardware error check Graphics hierarchy

  8. Overview • Graphics pipeline • Only high level overview (so you can program), not necessarily real hardware • GPU programming

  9. Graphics pipeline

  10. Mostly on CPU High level work User interface Control Simulation Physics Artificial intelligence Application

  11. Gatekeeper of GPU Command processing Error checking State management Context switch Host

  12. Vertex processor Primitive assembly Clip & cull Viewport transform Geometry

  13. Vertex Processor • Process one vertex at one time • No information on other vertices • Programmable • Transformation • Lighting

  14. Transformation • Global to eye coordinate system

  15. Lighting • Diffuse • Specular

  16. Transform & Light on Vertex Processor • A sequence of assembly instructions • (more on this later)

  17. Primitive Assembly • Assemble individual vertices into triangle (or line or point) • Performance implication • A triangle is ready only when all 3 vertices are • Vertex coherence & caching

  18. Clipping & Culling • Backface culling • Remove triangles facing away from view • Eliminate ½ of the triangles in theory • Clipping against view frustum • Triangles may become quadrilaterals

  19. Viewport transform • From floating point range [-1, 1] x [-1, 1] to integer range [0, height-1] x [0, width-1]

  20. Convert primitives (triangles, lines) into pixels Barycentric coordinate Attribute interpolation Rasterization

  21. Triangles into pixels

  22. Attribute interpolation • Interpolation • Barycentric

  23. Perspective correct interpolation correct incorrect

  24. Fragment: corresponds to a single pixel and includes color, depth, and sometimes texture-coordinate values. Compute color and depth for each pixel Most interesting part of GPU Fragment processor

  25. Optional (though hard to avoid) Cache data Hide latency from FB Sampling/filtering I told you this last time Texture

  26. Write to framebuffer Comparison Z, stencil, alpha, window ROP (Raster Operation)

  27. Storing buffers and textures Connect to display Characteristics Size Bandwidth Latency Framebuffer

  28. Inputs (read-only) Attributes Constants Textures Registers (read-write) Used by shader Outputs (write-only) Attributes Conceptual programming model

  29. Simple example • HPOS: position • COL0: diffuse color • MOV o[HPOS], v[HPOS]; • MOV o[COL0], v[COL0];

  30. More complex example • o[COL0] = v[COL0] + constant*v[HPOS]; • MOV o[HPOS], v[HPOS]; • MOV R0, v[COL0]; • MAD R0, v[HPOS], c[0], R0; • MOV o[COL0], R0;

  31. Sample instruction set

  32. A real example

  33. High-level shading language • Writing assembly is • Painful • Not portable • Not optimize-able • High level shading language solves these • Cg, HLSL

  34. Cg example

  35. Applications • Too many of them for me to describe here • The only way to learn is try to program • Useless for you even if I try to describe • Look at developer website • NVIDIA, ATI, GPGPU

  36. Homework • Try to program GPU! • Even without NVIDIA GPU, you can download the emulator • Stanford course on graphics hardware • http://www.graphics.stanford.edu/courses/cs448a-01-fall/ • History of graphics hardware • 7 years of graphics • accelenation.com/?doc=123&page=1

More Related