Real-Time Rendering CS 446 David Luebke David Luebke 1 7/27/2016 Demo Time ● We will have a 5 minute “demo time” to open each class ■ Students pick something (e.g., a game) to demo ○ Focus: real-time graphics, not game play, MPEG’d cut scenes, etc. ■ Students responsible for bringing platform to classroom ○ I can provide PC (GFX, ATI), PS2, Xbox from lab ■ Students rotate duty each class or each week ○ Send around a sign-up sheet David Luebke 2 7/27/2016 Introduction ● The changing face of real-time rendering ■ In 2002 when I taught this class I said: ○ The good old days: SGI was king A slew of PC vendors ○ Today: SGI is selling real estate NVIDIA, ATI rule the world ■ Now: ○ SGI is irrelevant ○ Programmable GPUs are the big news David Luebke 3 7/27/2016 Comparison: SGI InfiniteReality (1998) vs. NVIDIA GeForce4 (2002) Metric SGI IR Triangles/demosec Pixels/demosec Texture memory Bump mapping Programmable vertex engine? Programmable pixel engine? Form factor Cost 13 million NVIDIA GF4 64 MB Nope 136 million 4.8 billion 128 MB No sweat You kidding? Oh, yeah Get real Mini-fridge $100,000 Yeah baby videocassette $300 The real news!!! David Luebke 4 7/27/2016 Rate of Change a.k.a “Stop the technology, I want to get on” ● SGI: new product every 3 years ● NVIDIA: new product every 6/18 months ● Current commodity cards double in performance every 10 months or so ■ Far outstripping Moore’s Law… ● Exciting new features have been appearing at a breathtaking rate: ■ Programmable pipelines, floating-point support, hardware occlusion support David Luebke 5 7/27/2016 Summary ● These are interesting times for real-time rendering: ■ Commodity graphics cards are fantastically capable ■ The rate of ongoing improvement is dizzying ■ New algorithms, long-offline algorithms becoming possible ■ Hard to keep up, even for “experts” ● What’s pushing the technology curve? David Luebke 6 7/27/2016 Video Games ● Undoubtedly the driving force behind this revolution ■ In 2002 the video game industry surpassed the film industry (wave hands) ■ Commodity parts: Pentium 4 vs GFX David Luebke 7 7/27/2016 The Course: General Topics ● This class will study real-time rendering, with a particular focus on the hardware and algorithms underlying 3D game engines ■ Generally PC hardware rather than consoles ■ Bit more emphasis on NVIDIA hardware ■ Generally OpenGL (DX more apropos, but…) ● We won’t study: ■ Gameplay, storylines, AI, game art, production process, artist tools, network layers, OO game design, audio, (much) physics, (much) animation David Luebke 8 7/27/2016 The Course: Workload ● This is a project course, all grades from programming assignments: ■ A couple of completely individual assignments ○ Hardware performance, “Building blocks” of a game engine ■ Big team project: a 3D video game ■ Individual assignments in context of team project ○ Add features to your team’s game engine ● Think graduate-level course ■ A game engine is a big program ■ Will likely be more work (but also more rewarding) than any course you’ve ever had David Luebke 9 7/27/2016 The Course: Syllabus ● The web page is the syllabus… David Luebke 10 7/27/2016 Review: The Graphics Pipeline ● The next lecture will go over the traditional graphics pipeline ● The big picture: Application David Luebke Geometry 11 Rasterizer 7/27/2016 Programmable Pipelines ● Recent hardware offers the option of replacing portions of the pipeline with user-programmed stages ■ Vertex shader: replaces fixed-function transform and lighting ■ Pixel shader: replaces texturing stages David Luebke 12 7/27/2016 To think about: ● What are some possible bottlenecks in system performance of a graphics/game engine? ● Does it make any difference to sort your geometry front-to- back or back-to-front when using a depth-buffer? ● Will your textured polygons render faster if MIP-mapping is enabled or disabled? ● Does the order that you traverse polygons (i.e., issue vertices using glVertex()) make a difference in performance? David Luebke 13 7/27/2016 Programmable Pipelines ● The amount of programmability is increasing by leaps and bounds ■ Vertex shaders: more instructions, variable looping, branching, subroutines ■ Pixel shaders: still SIMD, but with more instructions, unlimited texture accesses, pixel kill ● The data formats are also improving ■ IEEE floating point throughout the pixel pipeline! ■ Various versions David Luebke 14 7/27/2016