Top Banner
Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011
58

Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Dec 21, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Evolution of the Programmable Graphics Pipeline

Patrick CozziUniversity of PennsylvaniaCIS 565 - Spring 2011

Page 2: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Administrivia

Tip: google “cis 565” Slides posted before each class Tentative assignment dates on website 1st assignment handed out today

Write conciselyDue start of class, one week from today

Google group in progress FYI. GDC Early Registration - 01/24

Page 3: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Survey Results

15/23 – graphics experience Most students have usable video cards Lerk – don’t be scared I want to be a Toys R Us kid too

Page 4: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Survey Results

Class interestsPure architectureGame renderingPhysical simulationsAnimationVision algorithms Image/video processing…

Page 5: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Course Roadmap

Graphics Pipeline (GLSL) GPGPU (GLSL)

Briefly GPU Computing (CUDA, OpenCL) Choose your own adventure

Student PresentationFinal Project

Goal: Prepare you for your presentation and project

Page 6: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Agenda

Why program the GPU? Graphics Review Evolution of the Programmable Graphics

PipelineUnderstand the past

Page 7: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Why Program the GPU?

Graph from: http://developer.download.nvidia.com/compute/cuda/3_2_prod/toolkit/docs/CUDA_C_Programming_Guide.pdf

Page 8: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Why Program the GPU?

Graph from: http://developer.download.nvidia.com/compute/cuda/3_2_prod/toolkit/docs/CUDA_C_Programming_Guide.pdf

Page 9: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Why Program the GPU?

Compute Intel Core i7 – 4 cores – 100 GFLOP NVIDIA GTX280 – 240 cores – 1 TFLOP

Memory Bandwidth System Memory – 60 GB/s NVIDIA GT200 – 150 GB/s

Install Base Over 200 million NVIDIA G80s shipped

Numbers from Programming Massively Parallel Processors.

Page 10: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

NVIDIA GPU Evolution

Slide from David Luebke: http://s08.idav.ucdavis.edu/luebke-nvidia-gpu-architecture.pdf

Page 11: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Graphics Review

Modeling Rendering Animation

Page 12: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Graphics Review: Modeling

ModelingPolygons vs Triangles

How do you store a triangle mesh?

Implicit SurfacesHeight maps…

Page 13: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Triangles

Image courtesy of A K Peters, Ltd. www.virtualglobebook.com

Page 14: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Triangles

Image courtesy of A K Peters, Ltd. www.virtualglobebook.com. Imagery from NASA Visible Earth: visibleearth.nasa.gov.

Page 15: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Triangles

Page 16: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Triangles

Page 17: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Implicit Surfaces

Images from GPU Gems 3: http://http.developer.nvidia.com/GPUGems3/gpugems3_ch01.html

Page 18: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Height Maps

Image courtesy of A K Peters, Ltd. www.virtualglobebook.com

Page 19: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Graphics Review: Rendering

RenderingGoal: Assign color to pixels

Two PartsVisible surfaces

What is in front of what for a given viewShading

Simulate the interaction of material and light to produce a pixel color

Page 20: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Rasterization

What about ray tracing?

Page 21: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Visible Surfaces

Image courtesy of A K Peters, Ltd. www.virtualglobebook.com

Page 22: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Visible Surfaces

Z-Buffer / Depth Buffer Fragment vs Pixel

Image courtesy of A K Peters, Ltd. www.virtualglobebook.com

Page 23: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Shading

Images courtesy of A K Peters, Ltd. www.virtualglobebook.com

Page 24: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Shading

Image from GPU Gems 3: http://http.developer.nvidia.com/GPUGems3/gpugems3_ch14.html

Page 25: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Graphics Pipeline

PrimitiveAssembly

PrimitiveAssembly

VertexTransforms

VertexTransforms

Frame Buffer

Frame Buffer

RasterOperations

Rasterizationand

Interpolation

Scissor Test Stencil Test Depth Test Blending

Page 26: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Graphics Pipeline

Images courtesy of A K Peters, Ltd. http://www.realtimerendering.com/

Page 27: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Graphics Pipeline

Images courtesy of A K Peters, Ltd. http://www.realtimerendering.com/

Page 28: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Graphics Pipeline

Images courtesy of A K Peters, Ltd. http://www.realtimerendering.com/

Page 29: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Graphics Pipeline

Images courtesy of A K Peters, Ltd. http://www.realtimerendering.com/

Page 30: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Graphics Review: Animation

Move the camera and/or agents, and re-render the scene In less than 16.6 ms (60 fps)

Page 31: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Evolution of the Programmable Graphics Pipeline Pre GPU Fixed function GPU Programmable GPU Unified Shader Processors

Page 32: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Early 90s – Pre GPU

Slide from Mike Houston: http://s09.idav.ucdavis.edu/talks/01-BPS-SIGGRAPH09-mhouston.pdf

Page 33: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Why GPUs?

Exploit ParallelismPipeline parallelData-parallelCPU and GPU executing in parallel

Hardware: texture filtering, MAD, etc.

Page 34: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Generation I: 3dfx Voodoo (1996)

Image from “7 years of Graphics”

• Did not do vertex transformations: these were done in the CPU

• Did do texture mapping, z-buffering.

PrimitiveAssembly

PrimitiveAssembly

VertexTransforms

VertexTransforms

Frame Buffer

Frame Buffer

RasterOperations

Rasterizationand

Interpolation

CPU GPUPCI

Slide adapted from Suresh Venkatasubramanian and Joe Kider

Page 35: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Aside: Mario Kart 64

Image from: http://www.gamespot.com/users/my_shoe/

High fragment load / low vertex load

Page 36: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Aside: Mario Kart Wii High fragment load / low vertex load?

Image from: http://wii.ign.com/dor/objects/949580/mario-kart-wii/images/

Page 37: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Generation II: GeForce/Radeon 7500 (1998)

Slide from Suresh Venkatasubramanian and Joe Kider

VertexTransforms

VertexTransforms

• Main innovation: shifting the transformation and lighting calculations to the GPU

• Allowed multi-texturing: giving bump maps, light maps, and others..

• Faster AGP bus instead of PCI

PrimitiveAssembly

PrimitiveAssembly

Frame Buffer

Frame Buffer

RasterOperations

Rasterizationand

Interpolation

GPUAGP

Image from “7 years of Graphics”

Page 38: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Generation III: GeForce3/Radeon 8500(2001)

Slide from Suresh Venkatasubramanian and Joe Kider

VertexTransforms

VertexTransforms

• For the first time, allowed limited amount of programmability in the vertex pipeline

• Also allowed volume texturing and multi-sampling (for antialiasing)

PrimitiveAssembly

PrimitiveAssembly

Frame Buffer

Frame Buffer

RasterOperations

Rasterizationand

Interpolation

GPUAGP

Small vertexshaders

Small vertexshaders

Image from “7 years of Graphics”

Page 39: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Generation IV: Radeon 9700/GeForce FX (2002)

VertexTransforms

VertexTransforms

• This generation is the first generation of fully-programmable graphics cards

• Different versions have different resource limits on fragment/vertex programs

PrimitiveAssembly

PrimitiveAssembly

RasterOperations

Rasterizationand

Interpolation

AGPProgrammableVertex shader

ProgrammableVertex shader

ProgrammableFragmentProcessor

ProgrammableFragmentProcessor

Texture Memory

Slide from Suresh Venkatasubramanian and Joe Kider

Image from “7 years of Graphics”

Page 40: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Generation IV.V: GeForce6/X800 (2004)

Slide adapted from Suresh Venkatasubramanian and Joe Kider

Simultaneous rendering to multiple buffers True conditionals and loops PCIe bus Vertex texture fetch

VertexTransforms

VertexTransforms

PrimitiveAssembly

PrimitiveAssembly

Frame Buffer

Frame Buffer

RasterOperations

Rasterizationand

Interpolation

PCIeProgrammableVertex shader

ProgrammableVertex shader

ProgrammableFragmentProcessor

ProgrammableFragmentProcessor

Texture Memory Texture Memory

Page 41: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

NVIDIA NV40 Architecture

Image from GPU Gems 2: http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter30.html

6 vertexshader units

16 fragmentshader units

Vertex TextureFetch

Page 42: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Generation V: GeForce8800/HD2900 (2006)

Slide adapted from Suresh Venkatasubramanian and Joe Kider

Ground-up GPU redesign Support for Direct3D 10 / OpenGL 3 Geometry Shaders Stream out / transform-feedback Unified shader processors Support for General GPU programming

Input Assembler

Input Assembler

ProgrammablePixel (Fragment)

Shader

ProgrammablePixel (Fragment)

Shader

RasterOperations

ProgrammableGeometry

Shader

PCIe

ProgrammableVertex shader

ProgrammableVertex shader

OutputMerger

Page 43: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

D3D 10 Pipeline

Image from David Blythe : http://download.microsoft.com/download/f/2/d/f2d5ee2c-b7ba-4cd0-9686-b6508b5479a1/direct3d10_web.pdf

Page 44: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Geometry Shaders: Point Sprites

Page 45: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Geometry Shaders: Point Sprites

Page 46: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Geometry Shaders

Image from David Blythe : http://download.microsoft.com/download/f/2/d/f2d5ee2c-b7ba-4cd0-9686-b6508b5479a1/direct3d10_web.pdf

Page 47: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

NVIDIA G80 Architecture

Slide from David Luebke: http://s08.idav.ucdavis.edu/luebke-nvidia-gpu-architecture.pdf

Page 48: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

NVIDIA G80 Architecture

Slide from David Luebke: http://s08.idav.ucdavis.edu/luebke-nvidia-gpu-architecture.pdf

Page 49: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Why Unify Shader Processors?

Slide from David Luebke: http://s08.idav.ucdavis.edu/luebke-nvidia-gpu-architecture.pdf

Page 50: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Why Unify Shader Processors?

Slide from David Luebke: http://s08.idav.ucdavis.edu/luebke-nvidia-gpu-architecture.pdf

Page 51: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Unified Shader Processors

Slide from David Luebke: http://s08.idav.ucdavis.edu/luebke-nvidia-gpu-architecture.pdf

Page 52: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Terminology

Shader Model

Direct3D OpenGL Video card

Example

2 9 2.x NVIDIA GeForce 6800

ATI Radeon X800

3 10.x 3.x NVIDIA GeForce 8800

ATI Radeon HD 2900

4 11.x 4.x NVIDIA GeForce GTX 480

ATI Radeon HD 5870

Page 53: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Shader Capabilities

Table courtesy of A K Peters, Ltd. http://www.realtimerendering.com/

Page 54: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Shader Capabilities

Table courtesy of A K Peters, Ltd. http://www.realtimerendering.com/

Page 55: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Evolution of the Programmable Graphics Pipeline

Slide from Mike Houston: http://s09.idav.ucdavis.edu/talks/01-BPS-SIGGRAPH09-mhouston.pdf

Page 56: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Evolution of the Programmable Graphics Pipeline

Slide from Mike Houston: http://s09.idav.ucdavis.edu/talks/01-BPS-SIGGRAPH09-mhouston.pdf

Page 57: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

Not covered today:SM 5 / D3D 11 / GL 4Tessellation shaders

*cough* student presentation *cough*

Later this semester: NVIDIA Fermi Dual warp scheduler Configurable L1 / shared memory Double precision …

Evolution of the Programmable Graphics Pipeline

Page 58: Evolution of the Programmable Graphics Pipeline Patrick Cozzi University of Pennsylvania CIS 565 - Spring 2011.

New Tool: AMD System Monitor

Released 01/04/2011

http://support.amd.com/us/kbarticles/Pages/AMDSystemMonitor.aspx