1 / 109

Advanced Computer Graphics

Advanced Computer Graphics. Bas Zalmstra Marries van de Hoef Tim de Jager. Ask questions. Who the .. are these guys?!. Graphics teaching assistants http://marries.nl http://baszalmstra.com. Who the .. are these guys?!. Marries van de Hoef Experimental Game Developer @ marriesvdh

hadar
Télécharger la présentation

Advanced Computer Graphics

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. Advanced Computer Graphics Bas Zalmstra Marries van de Hoef Tim de Jager

  2. Ask questions

  3. Who the .. are these guys?! • Graphics teaching assistants • http://marries.nl • http://baszalmstra.com

  4. Who the .. are these guys?! • Marries van de Hoef • Experimental Game Developer • @marriesvdh • www.marries.nl

  5. Seven Dimensions PLAY NAO -> www.marries.nl

  6. Who the .. are these guys?! • Bas Zalmstra • Lead Developer @ Abbey Games • @baszalmstra • www.baszalmstra.nl

  7. Who the .. are these guys?! • Tim de Jager • Game Developer @ Abbey Games • @tldejager

  8. Reus www.reusgame.com

  9. What are we talking about? • Deferred shading variants • Culling • Variance Shadow mapping • Subsurface scattering • GPU Particle Physics

  10. Deferred shading variants

  11. Dynamic lighting • Dynamic lighting • Calculating lighting real-time • Moving objects • Moving light sources

  12. A lot of variants Forward Shading Deferred Shading Deferred Lighting Light indexed deferred shading Tile based deferred shading Inferred Lighting Forward+

  13. Forward Shading Deferred Shading Deferred Lighting Light indexed deferred shading Tile based deferred shading Inferred Lighting Forward+ Forward Shading

  14. Forward shading • Multiple light sources • Graphics practical 3 assignment E3 • Additive blending of light sources

  15. Forward shading • Lighting is calculated while rendering geometry • Calculated for the entire surface Two methods: • Add multiple light sources in single shader • Variable number of light sources in a shader • Render the object multiple times (additively) • Unnecessary vertex shader calculations

  16. Forward Shading Deferred Shading Deferred Lighting Light indexed deferred shading Tile based deferred shading Inferred Lighting Forward+ Deferred Shading

  17. Deferred shading • Render lighting per light source • Render the bounding volume

  18. Deferred shading • What do we need for (Lambertian) shading? • Object: • Normals • Position • Surface color (albedo) • Light source: • Position • Lighting color • Object data is not available when rendering light volumes

  19. Deferred shading • Store object properties in buffers (Texture2D’s)! • Everything has to be rendered once • Lighting uses data from buffers • Geometry-Buffer (G-buffer): Normals Depth (Position) Albedo

  20. Deferred shading • For each light source • Use data from the G-buffer • Light source properties as shader parameters Normals Depth (Position) Albedo

  21. Forward Shading DeferredShading Deferred Lighting Light indexed deferred shading Tile based deferred shading Inferred Lighting Forward+ Deferred LIGHTING

  22. Deferred lighting • Deferred shading has limited object variability. • Defined by the properties in the G-Buffer. • What if we want a different shader per object?

  23. Deferred lighting • (Also called Light pre-pass rendering) • Only calculate lighting • Specular lighting, diffuse lighting • DON’T combine with diffuse/specular color yet

  24. Deferred lighting • Render all objects again • For each object • Use lighting buffer as lighting information • We can use a different shader for each object!

  25. Deferred lighting • Recap: • Render each object to G-Buffer: • Use G-Buffer to calculate lighting: • Render each object again: • Use lighting buffer for shading

  26. Deferred lighting • We also want different lighting per object • Still not possible…

  27. Forward Shading DeferredShading Deferred Lighting Light indexed deferred shading Tile based deferred shading Inferred Lighting Forward+ Inferred LIGHTING

  28. Inferred lighting • What about transparency • A buffer can store 1 value per pixel • Use stippling for the lighting • Search for surface when fetching the lighting

  29. Inferred lighting • Lighting does not vary much over a surface • Lighting could be calculated at a lower resolution • Also search for the correct surface when sampling from the lighting buffer

  30. Inferred lighting At lower resolution • Render each object to G-Buffer: • Use G-Buffer to calculate lighting: • Render each object again: • Use lighting buffer for shading

  31. Forward Shading DeferredShading Deferred Lighting Light indexed deferred shading Tile based deferred shading Inferred Lighting Forward+ Tile based deferred shading

  32. Tile based deferred shading • Rendering light volumes is slow • A lot of overdraw • Render lighting per tile • List of active light sources per tile • Frustum culling (on GPU?)

  33. Forward Shading DeferredShading Deferred Lighting Light indexed deferred shading Tile based deferred shading Inferred Lighting Forward+ Forward+

  34. Forward+ • We want different lighting per object • Don’t calculate lighting, but store which light sources are active • Store light indices per tile • Similar to tile based deferred rendering

  35. Forward+ • Light indexed deferred rendering • Store light indices for each pixel in a texture • Limited number of light indices • Forward+ • Published in 2012 • Store light indices in DX11 linked list structure

  36. Usage in games • Forward shading: Half-life 2, Portal, etc. • Deferred shading: Killzone 2, Starcraft 2, etc. • Deferred lighting: Most games • Inferred lighting: Red faction / Saints Row • Tile based def. sh.: Battlefield 3, Uncharted, …? • Forward+ : Dirt Showdown (so far)

  37. Questions?

  38. Culling

  39. What is culling? You No culling

  40. What is culling? You No culling

  41. What is culling? Cannot see that! You Frustum culling

  42. What is culling? Cannot see that! You Frustum + Occlusion culling

  43. Frustum culling Occlusion culling Culling

  44. Frustum culling:Traditional approaches • Culling a few thousand objects is slow • Need optimizations • Create spatial hierarchy • Useful for quickly culling a lot of objects • Bounding Volume Hierarchy (BVH) • Battlefield 1 and 2 use a Bounding Sphere Hierarchy

  45. Bounding Sphere Hierarchy A+B+C B A B+C A B C C

  46. Problems • Hierarchical culling doesn’t scale well • Most computers have 4 or more cores • Hard to handle dynamic objects • Streaming in new parts of a level

  47. Solution • Just do it parallel brute force • Scales over all available cores • No overhead of tree • CPU can do a lot more low level optimizations • Statistics (DICE): • 3 times faster • 1/5 of the original code • Seamlessly handles dynamic objects • Easy to optimize further

  48. Grid

  49. Frustum culling Occlusion culling Culling

  50. Oclusion culling:Traditional approaches • Generate a static occlusion culling data structure • Used in Quake1-3 • Also used in newer engines like Unity3 • Umbra (used in Unreal Engine 3)

More Related