Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
BitSquid Tech Benefits of a data-driven renderer <ul><li>Tobias Persson </li></ul><ul><li>GDC 2011 </li></ul>
Agenda <ul><li>An introduction to BitSquid  </li></ul><ul><li>Key design principles of BitSquid Tech </li></ul><ul><li>Ben...
BitSquid <ul><li>Core team consists of me (rendering) and Niklas Frykholm (system) </li></ul><ul><li>Based in Stockholm, S...
Ambitious Goal <ul><li>To develop a new high-end game engine for licensing </li></ul><ul><li>Cross-platform: PS3, X360, PC...
Fatshark collaboration <ul><li>Impossible to build game technology without close collaboration with end-users (i.e. game d...
Products running BSTech <ul><li>Stone Giant  [BitSquid / Fatshark] - DX11/HW-tessellation tech-demo </li></ul><ul><li>Hami...
Stone Giant Demo
Key design principles of BitSquid Tech
Fast Content Iterations <ul><li>Being able to iterate fast over content is key to create great games </li></ul><ul><li>In ...
Multi-core <ul><li>All bulk workload run through our job-system </li></ul><ul><ul><ul><ul><li>Mixture of task & data-paral...
Tools <ul><li>No mega-editor™ </li></ul><ul><li>Instead: multiple tools designed for specific purposes </li></ul><ul><li>M...
 
 
 
 
 
Tools cont. <ul><li>All visualization using “real” engine runtime </li></ul><ul><li>Avoids strong coupling to engine by fo...
Animation State Machine Editor
Particle Editor
Console Focus <ul><li>Hard to get all departments to test their content on console HW </li></ul><ul><ul><ul><ul><li>Two op...
Level Editor mirroring PC PS3 Content from unannounced project Courtesy of Fatshark
Benefits of a data-driven renderer
Definition <ul><li>What is a data-driven renderer? </li></ul><ul><ul><ul><ul><li>When shaders, resource creation/manipulat...
Motivation <ul><li>Multiple projects with different needs </li></ul><ul><ul><ul><ul><li>Projects targeting 60Hz will have ...
Early prototype of a  60Hz rendering pipe  (Running on PS3) Content from ”The Fight: Lights Out” Courtesy of Coldwood Inte...
Motivation cont. <ul><li>Flexibility: Easy debugging and experimentation </li></ul><ul><li>Scalability: Targeting a wide r...
Hamilton Trailer Stone Giant (DX11)
.. is very different from ..
Hamilton’s Great Adventure (PS3) Courtesy of Fatshark
Implementation <ul><li>The  render_config  file: </li></ul><ul><ul><ul><ul><li>JSON* configuration file describing the ent...
Overview of  render_config Resource Generator Global Resource Set Layers Configuration Viewport Local Resource Set
Global Resource Set Resource Generator Global Resource Set Layers Configuration Viewport Local Resource Set
Global Resource Set <ul><li>Specifies GPU resources to be allocated at start-up </li></ul><ul><li>Mainly render targets (a...
Layers Configuration Resource Generators Global Resource Set Layers Configuration Viewport Local Resource Set
Layers Configuration <ul><li>Defines the draw order of the visible batches in a game world </li></ul><ul><li>Layers are pr...
Layer Breakdown <ul><ul><li>Name used for referencing from shader system </li></ul></ul><ul><ul><li>Destination render tar...
Resource Generators Resource Generators Global Resource Set Layers Configuration Viewport Local Resource Set
Resource Generators <ul><li>Minimalistic framework for manipulating GPU resources </li></ul><ul><li>Used for post processi...
A Simple  Modifier : Fullscreen Pass <ul><li>Draws a single triangle covering entire viewport </li></ul><ul><li>Input:  Sh...
Example of a few  Modifiers <ul><li>Branch </li></ul><ul><li>Compute Shader [DX11] </li></ul><ul><li>SPU Job [PS3] </li></...
Viewport Resource Generators Global Resource Set Layers Configuration Viewport Local Resource Set
Viewport <ul><li>Ties everything together </li></ul><ul><li>Specifies which layer configuration to use </li></ul><ul><li>L...
Questions? <ul><li>tobias.persson@bitsquid.se  </li></ul><ul><li>@tobias_persson </li></ul><ul><li>http://www.bitsquid.se ...
Upcoming SlideShare
Loading in …5
×

of

BitSquid Tech: Benefits of a data-driven renderer Slide 1 BitSquid Tech: Benefits of a data-driven renderer Slide 2 BitSquid Tech: Benefits of a data-driven renderer Slide 3 BitSquid Tech: Benefits of a data-driven renderer Slide 4 BitSquid Tech: Benefits of a data-driven renderer Slide 5 BitSquid Tech: Benefits of a data-driven renderer Slide 6 BitSquid Tech: Benefits of a data-driven renderer Slide 7

YouTube videos are no longer supported on SlideShare

View original on YouTube

BitSquid Tech: Benefits of a data-driven renderer Slide 9 BitSquid Tech: Benefits of a data-driven renderer Slide 10 BitSquid Tech: Benefits of a data-driven renderer Slide 11 BitSquid Tech: Benefits of a data-driven renderer Slide 12 BitSquid Tech: Benefits of a data-driven renderer Slide 13 BitSquid Tech: Benefits of a data-driven renderer Slide 14 BitSquid Tech: Benefits of a data-driven renderer Slide 15 BitSquid Tech: Benefits of a data-driven renderer Slide 16 BitSquid Tech: Benefits of a data-driven renderer Slide 17 BitSquid Tech: Benefits of a data-driven renderer Slide 18 BitSquid Tech: Benefits of a data-driven renderer Slide 19 BitSquid Tech: Benefits of a data-driven renderer Slide 20 BitSquid Tech: Benefits of a data-driven renderer Slide 21 BitSquid Tech: Benefits of a data-driven renderer Slide 22 BitSquid Tech: Benefits of a data-driven renderer Slide 23 BitSquid Tech: Benefits of a data-driven renderer Slide 24 BitSquid Tech: Benefits of a data-driven renderer Slide 25 BitSquid Tech: Benefits of a data-driven renderer Slide 26 BitSquid Tech: Benefits of a data-driven renderer Slide 27 BitSquid Tech: Benefits of a data-driven renderer Slide 28 BitSquid Tech: Benefits of a data-driven renderer Slide 29 BitSquid Tech: Benefits of a data-driven renderer Slide 30 BitSquid Tech: Benefits of a data-driven renderer Slide 31 BitSquid Tech: Benefits of a data-driven renderer Slide 32 BitSquid Tech: Benefits of a data-driven renderer Slide 33 BitSquid Tech: Benefits of a data-driven renderer Slide 34 BitSquid Tech: Benefits of a data-driven renderer Slide 35 BitSquid Tech: Benefits of a data-driven renderer Slide 36 BitSquid Tech: Benefits of a data-driven renderer Slide 37 BitSquid Tech: Benefits of a data-driven renderer Slide 38 BitSquid Tech: Benefits of a data-driven renderer Slide 39 BitSquid Tech: Benefits of a data-driven renderer Slide 40 BitSquid Tech: Benefits of a data-driven renderer Slide 41 BitSquid Tech: Benefits of a data-driven renderer Slide 42 BitSquid Tech: Benefits of a data-driven renderer Slide 43 BitSquid Tech: Benefits of a data-driven renderer Slide 44

9

Share

Download to read offline

BitSquid Tech: Benefits of a data-driven renderer

Download to read offline

Related Books

Free with a 30 day trial from Scribd

See all

Related Audiobooks

Free with a 30 day trial from Scribd

See all

BitSquid Tech: Benefits of a data-driven renderer

  1. 1. BitSquid Tech Benefits of a data-driven renderer <ul><li>Tobias Persson </li></ul><ul><li>GDC 2011 </li></ul>
  2. 2. Agenda <ul><li>An introduction to BitSquid </li></ul><ul><li>Key design principles of BitSquid Tech </li></ul><ul><li>Benefits of having a data-driven rendering pipe </li></ul>
  3. 3. BitSquid <ul><li>Core team consists of me (rendering) and Niklas Frykholm (system) </li></ul><ul><li>Based in Stockholm, Sweden </li></ul><ul><li>Founded in September 2009 after GRINs unfortunate bankruptcy </li></ul>
  4. 4. Ambitious Goal <ul><li>To develop a new high-end game engine for licensing </li></ul><ul><li>Cross-platform: PS3, X360, PC/DX11 (+ future “console” HW) </li></ul><ul><li>We call it BitSquid Tech </li></ul>
  5. 5. Fatshark collaboration <ul><li>Impossible to build game technology without close collaboration with end-users (i.e. game developers) </li></ul><ul><li>Fatshark is an independent mid-sized game developer [Lead and Gold, BCR2, Hamilton] </li></ul><ul><li>BitSquid and Fatshark shares office space </li></ul><ul><li>Fatshark are our crash test dummies </li></ul>
  6. 6. Products running BSTech <ul><li>Stone Giant [BitSquid / Fatshark] - DX11/HW-tessellation tech-demo </li></ul><ul><li>Hamilton’s Great Adventure [Fatshark] - 3rd person puzzle game to be released on PSN and Steam </li></ul><ul><li>Two external developers working on unannounced projects </li></ul>
  7. 7. Stone Giant Demo
  8. 8. Key design principles of BitSquid Tech
  9. 9. Fast Content Iterations <ul><li>Being able to iterate fast over content is key to create great games </li></ul><ul><li>In BSTech content is everything from low-level engine configuration files to high-level art assets </li></ul><ul><li>Support hot-reloading of all content </li></ul>
  10. 10. Multi-core <ul><li>All bulk workload run through our job-system </li></ul><ul><ul><ul><ul><li>Mixture of task & data-parallel jobs </li></ul></ul></ul></ul><ul><li>Data oriented design </li></ul><ul><ul><ul><ul><li>Heavy focus on memory-layout of input/output data </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Easy DMA to coprocessors (SPU/GPGPU) </li></ul></ul></ul></ul>
  11. 11. Tools <ul><li>No mega-editor™ </li></ul><ul><li>Instead: multiple tools designed for specific purposes </li></ul><ul><li>Much easier to extend and add new tools </li></ul><ul><li>Gathered in a central launcher called “ tool center” </li></ul>
  12. 17. Tools cont. <ul><li>All visualization using “real” engine runtime </li></ul><ul><li>Avoids strong coupling to engine by forcing all communication over TCP/IP </li></ul><ul><ul><ul><ul><li>Boot engine running tool slave script </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Tool sends windows handle to engine, engine creates child window with swap-chain </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Write tools in the language you prefer </li></ul></ul></ul></ul>
  13. 18. Animation State Machine Editor
  14. 19. Particle Editor
  15. 20. Console Focus <ul><li>Hard to get all departments to test their content on console HW </li></ul><ul><ul><ul><ul><li>Two options: 1. Make PC runtime suck or 2. Make console testing easy </li></ul></ul></ul></ul><ul><li>All tools run on console - very useful, examples: </li></ul><ul><ul><ul><ul><li>Mirroring of level editor </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Simultaneous tweaking of lighting / material properties </li></ul></ul></ul></ul>
  16. 21. Level Editor mirroring PC PS3 Content from unannounced project Courtesy of Fatshark
  17. 22. Benefits of a data-driven renderer
  18. 23. Definition <ul><li>What is a data-driven renderer? </li></ul><ul><ul><ul><ul><li>When shaders, resource creation/manipulation and flow of the rendering pipe is defined entirely in data </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Hot-reloadable - for minimal iteration times </li></ul></ul></ul></ul>
  19. 24. Motivation <ul><li>Multiple projects with different needs </li></ul><ul><ul><ul><ul><li>Projects targeting 60Hz will have a completely different rendering pipe than those targeting 30Hz </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Artistic style: Photorealism vs Toon-shading, Full 3D vs 2.5D, etc. </li></ul></ul></ul></ul>
  20. 25. Early prototype of a 60Hz rendering pipe (Running on PS3) Content from ”The Fight: Lights Out” Courtesy of Coldwood Interactive and SCEE <ul><li>Baked AO </li></ul><ul><li>HDR but no light-adaption </li></ul><ul><li>Simple post processing </li></ul>
  21. 26. Motivation cont. <ul><li>Flexibility: Easy debugging and experimentation </li></ul><ul><li>Scalability: Targeting a wide range of HW requires a rendering pipe that scales </li></ul><ul><li>Game context aware rendering pipe – e.g. stop rendering sun shadows when indoors, simplify rendering in split-screen, etc. </li></ul><ul><li>High-level render pipe code not performance critical </li></ul>
  22. 27. Hamilton Trailer Stone Giant (DX11)
  23. 28. .. is very different from ..
  24. 29. Hamilton’s Great Adventure (PS3) Courtesy of Fatshark
  25. 30. Implementation <ul><li>The render_config file: </li></ul><ul><ul><ul><ul><li>JSON* configuration file describing the entire rendering pipe </li></ul></ul></ul></ul><ul><ul><ul><ul><li>Supports hot-reloading </li></ul></ul></ul></ul>* Well, not really JSON. We call it SJSON: http://bitsquid.blogspot.com/2009/10/simplified-json-notation.html
  26. 31. Overview of render_config Resource Generator Global Resource Set Layers Configuration Viewport Local Resource Set
  27. 32. Global Resource Set Resource Generator Global Resource Set Layers Configuration Viewport Local Resource Set
  28. 33. Global Resource Set <ul><li>Specifies GPU resources to be allocated at start-up </li></ul><ul><li>Mainly render targets (all global RTs except swap-chain) </li></ul><ul><li>Resources identified by name </li></ul>
  29. 34. Layers Configuration Resource Generators Global Resource Set Layers Configuration Viewport Local Resource Set
  30. 35. Layers Configuration <ul><li>Defines the draw order of the visible batches in a game world </li></ul><ul><li>Layers are processed in the order they are declared </li></ul><ul><li>Shader system points out which layer to render in </li></ul>
  31. 36. Layer Breakdown <ul><ul><li>Name used for referencing from shader system </li></ul></ul><ul><ul><li>Destination render targets (& DST) for the layer batches </li></ul></ul><ul><ul><li>Depth sorting: front-to-back / back-to-front </li></ul></ul><ul><ul><li>Optional Resource Generator* to run </li></ul></ul>* More on Resource Generators in the coming slides
  32. 37. Resource Generators Resource Generators Global Resource Set Layers Configuration Viewport Local Resource Set
  33. 38. Resource Generators <ul><li>Minimalistic framework for manipulating GPU resources </li></ul><ul><li>Used for post processing, deferred shading, shadow maps, procedural texture effects, debug rendering, and much more.. </li></ul><ul><li>Simple design - just a queue of Modifiers that knows when in the frame to run </li></ul>
  34. 39. A Simple Modifier : Fullscreen Pass <ul><li>Draws a single triangle covering entire viewport </li></ul><ul><li>Input: Shader and input resources </li></ul><ul><li>Output: Destination render target(s) </li></ul>
  35. 40. Example of a few Modifiers <ul><li>Branch </li></ul><ul><li>Compute Shader [DX11] </li></ul><ul><li>SPU Job [PS3] </li></ul><ul><li>Deferred Shading </li></ul><ul><li>Shadow Mapping </li></ul><ul><li>Mesh Drawer </li></ul>
  36. 41. Viewport Resource Generators Global Resource Set Layers Configuration Viewport Local Resource Set
  37. 42. Viewport <ul><li>Ties everything together </li></ul><ul><li>Specifies which layer configuration to use </li></ul><ul><li>Local resource set - resources unique for each instance of a viewport (useful for stuff like current adapted luminance) </li></ul><ul><li>GP programmer renders a game world by calling </li></ul><ul><ul><ul><ul><li>render_world(world, camera, viewport) </li></ul></ul></ul></ul>
  38. 43. Questions? <ul><li>tobias.persson@bitsquid.se </li></ul><ul><li>@tobias_persson </li></ul><ul><li>http://www.bitsquid.se </li></ul><ul><li>http://bitsquid.blogspot.com </li></ul>
  • afomi

    May. 6, 2017
  • agcreate

    Mar. 1, 2017
  • PhilBrown23

    Aug. 23, 2015
  • piotrekb89

    Jul. 6, 2015
  • ssuser416b39

    Mar. 30, 2015
  • cagetu

    Mar. 30, 2015
  • d3dhaxxor

    Jul. 16, 2013
  • crowdscontrol

    Mar. 8, 2011
  • tuankuranes

    Mar. 8, 2011

Views

Total views

13,763

On Slideshare

0

From embeds

0

Number of embeds

5,652

Actions

Downloads

150

Shares

0

Comments

0

Likes

9

×