220 likes | 756 Views
A Framework for Analyzing Real-Time Advanced Shading Techniques. John C. Hart University of Illinois. Peter K. Doenges Evans & Sutherland. Permuting the Graphics Pipeline. Recent advances in real-time shading order operations differently than the classical graphics pipeline
E N D
A Framework for Analyzing Real-Time Advanced Shading Techniques John C. Hart University of Illinois Peter K. Doenges Evans & Sutherland
Permuting the Graphics Pipeline • Recent advances in real-time shading order operations differently than the classical graphics pipeline Fragment lighting, texture shading, multipass rendering, multitexturing, environment-mapped bump mapping, normal mapping, … • Use a grammar to express, catalog and analyze real-time shadings techniques
Pipeline Grammar • Data types denote formats of data through the graphics pipeline • Operators denote transformations of the data types into other data types • Operator notation: y = F x z = F G y • Permutation: What if z = G F y?
Shader Data Types xVertex in model coordinates (x,y,z) uSurface parameterization (u,v) s Shading params (s,t,r) or (N,V,L,R,H) u xTexcoords stores at vertex x s x Shader params stored at vertex x xs Vertex in viewport coordinates (xs,ys) c Color vector (R,G,B)
Shader Operators y p Model-to-viewport:x xs d Rasterization:xs xs(lerp + sampling) p Shader: s c p ys x z xs d p
Image Operators C Framebuffer: xs c - Look up a previously stored color in the frame buffer T Texture map: u c - Look up a texture map location • Assignment: C(xs,ys) c, T(u,v) c - Stores a color in a lookup table
Gouraud C d p xdpsx Texture map C d p xT dux Standard Pipeline d p C addr pixel x model d p data pixel s T d data addr u • Modulation • C d p x (dpsx) (T dux)
Fragment Lighting • Fragment is a rendered sample (e.g. pixel) • Applies shader to each pixel as it is rasterized • Renderman, hardware Phong, bump mapping • What now happens per-pass in modern graphics cards
Fragment Lighting C dpxpdsx • Commutes Gouraud C d p xdpsx d p C addr pixel x model p d data pixel s
Texture Shading v = N.H u = N.L
Texture Shading Precompute shader, store in texture map Use tex coord to index shader parameters T dupsdu C d p x T du sx d u T addr pixel x model p s d data s u u
Modern GPU Org. Geometry(vertex stream) Vertex Shader Setup Rasterization 1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 Texture Memory Pixel Shader Tex 0 Tex 1 Tex 2 Frame Buffer
Modern GPU Pipeline C dvxf ((dv s x) (T, T’, T’’, …)) v vertex shader - input: x (and assoc. attributes) - output: screen coords vertex color/attrs f fragment shader - inputs: interpolated pixel color/attrs - access to texture data - output: pixel color
Deferred Shading • Rasterize first • Store shading parameters instead of color in each pixel • Second pass shades each pixel • Shading depth complexity equals one • Fat framebuffer
Deferred Shading • Store shading params: Tdp x d s x • Shade pixel: C xs p T xs d p T addr pixel x model d data s C xs screen p T data s xs
Model Space Texture Map Texture Atlas Shading Plot using u,v Fill using s,t,r Replace s,t,r w/proc. RGB Apply texture map
Texture Atlas Shading • Store solid texcoord: T duxds x • Shade solid texcoord: T du p T du • Map onto surface: C d p x T dux d T addr u model d data s d T addr u texture p T d data s data u
Texture Coordinate Shaders • Standard Texturing: Cdpx T dux • Pass Thru: Cdpxdux • Dependent Texture: Cdpx T’ T dux • Environment map: T uxpSs x • Environment Mapped Bump Mapping C dpx T d ((ux) + (T’ du’ x))
Shadow Map • Render from eyepoint shadowed C dpxdpsx • Render from eyepoint illuminated C’ dpxdps’ x • Render from light source (unshaded) Cl dplxdx • Backproject to construct shadow mask a C xs (z C xs) > (z Clplp-1xs) • Use to blend shadowed and lit images C xs (a C xs)*(C xs) + (1 – a C xs)*(C’ xs)
Shadow Volume • Shadow volume: x’, stencil buffer: s C • Render scene C dpxdpsx • Store shadow vol. visibility in stencil sCdpx (sCdpx) OR ((z dp x’) > (z Cdp x’)) • Use stencil to combine shadow image C dpx (s C dpx) ? (dps’ x)
Newer Stuff • Gouraud: C d p xdpsx • Phong/Bump: C d p xpdsx • Subdiv/Displace: C d p xpsdx • QSplat: C p dxpsdx Moral: Push the delta right (!?)
Conclusion • Real-time procedural shading causes us to rethink the graphics pipeline • Grammar provides a concise method to describe and compare new pipelines • Future work: classification, new pipelines, sampling