a crash course on programmable graphics hardware li-yi wei 2005 at tsinghua university, beijing

36
A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Post on 23-Jan-2016

213 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

A Crash Course on Programmable Graphics Hardware

Li-Yi Wei

2005

at Tsinghua University, Beijing

Page 2: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Why do we need graphics hardware?

Page 3: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

The evolution of graphics hardware

SGI Origin 3400 NVIDIA Geforce 7800

Page 4: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

7 years of graphics

accelenation.com/?doc=123&page=1

Page 5: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Ray tracing

General & flexible

Intuitive

Global illumination

Hard to accelerate

Page 6: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Polygonal graphics pipeline

Local computation

Easy to accelerate

Not general

Unintuitive

Page 7: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Graphics hierarchy

Layered approachLike network layers

EncapsulationEasy programming

Driver optimization

Driver workaround

Driver simulation

ProtectionHardware error check

Page 8: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Overview

Graphics pipelineOnly high level overview (so you can program),

not necessarily real hardware

GPU programming

Page 9: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Graphics pipeline

Page 10: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Application

Mostly on CPU

High level workUser interface

Control

Simulation

Physics

Artificial intelligence

Page 11: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Host

Gatekeeper of GPU

Command processing

Error checking

State managementContext switch

Page 12: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Geometry

Vertex processor

Primitive assembly

Clip & cull

Viewport transform

Page 13: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Vertex Processor

Process one vertex at one timeNo information on other vertices

Programmable

Transformation

Lighting

Page 14: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Transformation

Global to eye coordinate system

Page 15: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Lighting

Diffuse

Specular

Page 16: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Transform & Light on Vertex Processor

A sequence of assembly instructions

(more on this later)

Page 17: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Primitive Assembly

Assemble individual vertices into triangle (or line or point)

Performance implicationA triangle is ready only when all 3 vertices are

Vertex coherence & caching

Page 18: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Clipping & Culling

Backface cullingRemove triangles facing away from view

Eliminate ½ of the triangles in theory

Clipping against view frustumTriangles may become quadrilaterals

Page 19: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Viewport transform

From floating point range [-1, 1] x [-1, 1] to integer range [0, height-1] x [0, width-1]

Page 20: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Rasterization

Convert primitives (triangles, lines) into pixels

Barycentric coordinate

Attribute interpolation

Page 21: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Triangles into pixels

Page 22: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Attribute interpolation

Interpolation

Barycentric

Page 23: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Perspective correct interpolation

incorrect correct

Page 24: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Fragment processor

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

Page 25: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Texture

Optional (though hard to avoid)

Cache dataHide latency from FB

Sampling/filteringI told you this last time

Page 26: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

ROP (Raster Operation)

Write to framebuffer

ComparisonZ, stencil, alpha, window

Page 27: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Framebuffer

Storing buffers and textures

Connect to display

CharacteristicsSize

Bandwidth

Latency

Page 28: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Conceptual programming model

Inputs (read-only)Attributes

Constants

Textures

Registers (read-write)Used by shader

Outputs (write-only)Attributes

Page 29: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Simple example

HPOS: position

COL0: diffuse color

MOV o[HPOS], v[HPOS];

MOV o[COL0], v[COL0];

Page 30: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

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;

Page 31: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Sample instruction set

Page 32: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

A real example

Page 33: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

High-level shading language

Writing assembly is Painful

Not portable

Not optimize-able

High level shading language solves theseCg, HLSL

Page 34: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Cg example

Page 35: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Applications

Too many of them for me to describe here

The only way to learn is try to programUseless for you even if I try to describe

Look at developer websiteNVIDIA, ATI, GPGPU

Page 36: A Crash Course on Programmable Graphics Hardware Li-Yi Wei 2005 at Tsinghua University, Beijing

Homework

Try to program GPU!Even without NVIDIA GPU, you can download

the emulator

Stanford course on graphics hardwarehttp://www.graphics.stanford.edu/courses/

cs448a-01-fall/

History of graphics hardware7 years of graphicsaccelenation.com/?doc=123&page=1