2. NVIDIA Graphics, Cg, and Transparency Mark Kilgard Graphics Software Engineer NVIDIA Corporation GPU Shading and Rendering Course 3 July 30, 2006
3.
4. Seven Years of GeForce DX9c 2.0 Transparency antialiasing, quad-GPU GeForce 7800 GTX 2005 DX9c 2.0 Vertex textures, structured fragment branching, non-power-of-two textures, generalized floating-point textures, floating-point texture filtering and blending, dual-GPU GeForce 6800 Ultra 2004 DX9c 2.1 Single-board dual-GPU, process efficiency GeForce 7900 GTX 2006 DX9 1.5 Vertex program branching, floating-point fragment programs, 16 texture units, limited floating-point textures, color & depth compression GeForce FX 2003 DX8.1 1.4 Early Z culling, dual-monitor GeForce4 Ti 4600 2002 DX8 1.4 Programmable vertex transformation, 4 texture units, dependent textures, 3D textures, shadow maps, multisampling, occlusion queries GeForce3 2001 DX7 1.3 Hardware transform & lighting, configurable fixed-point shading, cube maps, texture compression, anisotropic texture filtering GeForce 256 2000 Direct3D Version OpenGL Version New Features Product
5.
6.
7. 2006: GeForce 7950 GX2, SLI-on-a-card DVI x 2 sVideo TV Out 16x PCI-Express Sandwich of two printed circuit boards Two GeForce 7 Series GPUs 500 Mhz core 1 GB video memory 512 MB per GPU 1,200 Mhz effective Effective 512-bit memory interface!
8. GeForce Peak Vertex Processing Trends Millions of vertices per second Vertex units 1 1 2 3 6 8 8 2 ×8 rate for trivial 4x4 vertex transform exceeds peak setup rates—allows excess vertex processing Assumes Alternate Frame Rendering (AFR) SLI Mode
9. GeForce Peak Triangle Setup Trends Millions of triangles per second assumes 50% face culling Assumes Alternate Frame Rendering (AFR) SLI Mode
10. GeForce Peak Memory Bandwidth Trends Gigabytes per second Two physical 256-bit memory interfaces 128-bit interface 256-bit interface
13. GeForce Peak Texture Fetch Trends Millions of texture fetches per second Texture units 2 ×4 2×4 2×4 2×4 16 24 24 2 ×24 assuming no texture cache misses
14. GeForce Peak Depth/Stencil-only Fill assuming no read-modify-write Millions of depth/stencil pixel updates per second double speed depth-stencil only
15. GeForce Transistor Count and Semiconductor Process Millions of transistors Process ( nm ) 180 180 150 130 130 110 90 90 More performance with fewer transistors: Architectural & process efficiency!
32. Evolution of Cg C (AT&T, 1970’s) C++ (AT&T, 1983) Java (Sun, 1994) RenderMan (Pixar, 1988) PixelFlow Shading Language (UNC, 1998) Real-Time Shading Language (Stanford, 2001) Cg / HLSL (NVIDIA/Microsoft, 2002) IRIS GL (SGI, 1982) OpenGL (ARB, 1992) Direct3D (Microsoft, 1995) Reality Lab (RenderMorphics, 1994) General-purpose languages Graphics Application Program Interfaces Shading Languages
33.
34.
35.
36.
37.
38. Logical Programmable Graphics Pipeline 3D Application or Game 3D API: OpenGL or Direct3D Driver Programmable Vertex Processor Primitive Assembly Rasterization & Interpolation 3D API Commands Transformed Vertices Assembled Polygons, Lines, and Points GPU Command & Data Stream Programmable Fragment Processor Rasterized Pre-transformed Fragments Transformed Fragments Raster Operations Framebuffer Pixel Updates GPU Front End Pre-transformed Vertices Vertex Index Stream Pixel Location Stream CPU – GPU Boundary Program vertex and fragment domains
39. Future Logical Programmable Graphics Pipeline 3D Application or Game 3D API: OpenGL or Direct3D Driver Programmable Vertex Processor Primitive Assembly Rasterization & Interpolation 3D API Commands Transformed Vertices Output assembled Polygons, Lines, and Points GPU Command & Data Stream Programmable Fragment Processor Rasterized Pre-transformed Fragments Transformed Fragments Raster Operations Framebuffer Pixel Updates GPU Front End Pre-transformed Vertices Vertex Index Stream Pixel Location Stream CPU – GPU Boundary Programmable Primitive Processor Input assembled Polygons, Lines, and Points New per-primitive “geometry” programmable domain