1 / 22

A Framework for Analyzing Real-Time Advanced Shading Techniques

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

Audrey
Télécharger la présentation

A Framework for Analyzing Real-Time Advanced Shading Techniques

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. A Framework for Analyzing Real-Time Advanced Shading Techniques John C. Hart University of Illinois Peter K. Doenges Evans & Sutherland

  2. 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

  3. 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?

  4. 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)

  5. 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

  6. 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

  7. Gouraud C d p xdpsx Texture map C d p xT 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)

  8. 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

  9. Fragment Lighting C dpxpdsx • Commutes Gouraud C d p xdpsx d p C addr pixel x model p d data pixel s

  10. Texture Shading v = N.H u = N.L

  11. Texture Shading Precompute shader, store in texture map Use tex coord to index shader parameters T dupsdu C d p x T du sx d u T addr pixel x model p s d data s u u

  12. 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

  13. Modern GPU Pipeline C dvxf ((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

  14. 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

  15. 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

  16. 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

  17. Texture Atlas Shading • Store solid texcoord: T duxds 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

  18. Texture Coordinate Shaders • Standard Texturing: Cdpx T dux • Pass Thru: Cdpxdux • Dependent Texture: Cdpx T’ T dux • Environment map: T uxpSs x • Environment Mapped Bump Mapping C dpx T d ((ux) + (T’ du’ x))

  19. Shadow Map • Render from eyepoint shadowed C dpxdpsx • Render from eyepoint illuminated C’ dpxdps’ x • Render from light source (unshaded) Cl dplxdx • 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)

  20. Shadow Volume • Shadow volume: x’, stencil buffer: s C • Render scene C dpxdpsx • 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)

  21. Newer Stuff • Gouraud: C d p xdpsx • Phong/Bump: C d p xpdsx • Subdiv/Displace: C d p xpsdx • QSplat: C p dxpsdx Moral: Push the delta right (!?)

  22. 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

More Related