esi rendering innovations with nvidia designworks
play

ESI RENDERING INNOVATIONS WITH NVIDIA DESIGNWORKS Andreas Mank - PowerPoint PPT Presentation

April 4-7, 2016 | Silicon Valley ESI RENDERING INNOVATIONS WITH NVIDIA DESIGNWORKS Andreas Mank (Andreas.Mank@esi-group.com) Team Leader Visualization, ESI Group Markus Tavenrath (mtavenrath@nvidia.com) Senior Developer Technology Engineer,


  1. April 4-7, 2016 | Silicon Valley ESI RENDERING INNOVATIONS WITH NVIDIA DESIGNWORKS ™ Andreas Mank (Andreas.Mank@esi-group.com) Team Leader Visualization, ESI Group Markus Tavenrath (mtavenrath@nvidia.com) Senior Developer Technology Engineer, NVIDIA 04/04/2016 www.esi-group.com

  2. “ a pioneer and world-leading provider in Virtual Prototyping ” — www.esi-group.com/ 2

  3. Everytime and everywhere Reliable behavior Distributed hardware High quality On demand Virtual Engineering Dynamic scenes Intuitive interaction Immersion 3

  4. Remote Rendering Interactive Ray Tracing Abstract Material Definition Physically-Based Rendering HELIOS BY Hybrid Rendering High Performance Rendering 4

  5. “ Tools and technologies for professional graphics and advanced rendering applications. ” https://developer.nvidia.com/designworks 5

  6. DESIGNWORKS ™ Tools and Technologies in Virtual Engineering MDL SDK / VMATERIALS 6

  7. RASTERIZER RAY TRACER DEMO: MATERIAL CONSISTENCY WITH MDL 7

  8. DESIGNWORKS ™ Tools and Technologies in Virtual Engineering MDL SDK / VMATERIALS OPTIX 8

  9. GLOBAL ILLUMINATION WITH OPTIX 9

  10. DEMO: INTERACTIVE GI WITH VCAS 10

  11. DESIGNWORKS ™ Tools and Technologies in Virtual Engineering MDL SDK / VMATERIALS OPTIX GRID SDK 11

  12. PLATFORM AS A SERVICE WITH GRID 12

  13. DESIGNWORKS ™ Tools and Technologies in Virtual Engineering MDL SDK / VMATERIALS OPTIX GRID SDK NVPRO-PIPELINE 13

  14. NVPRO-PIPELINE Benefits in Virtual Engineering Modern OpenGL features Modern shader features with GLSL Not CPU-bound with shaders Not CPU-bound with complex scene graphs Efficient updates for dynamic geometries 14

  15. SceniX RiX 2 FPS 20 FPS DEMO: DYNAMIC MESH ANIMATIONS WITH RIX 15

  16. PERFORMANCE x 6 Chart Title 350 360 300 250 200 SceniX x 1.1 150 RiX Frames per second x 3 100 120 x 10 50 60 20 0 Dynamic Nodes Materials Fixed 16

  17. DESIGNWORKS NV PRO Pipeline CPU load Framerate Framerate Quadro GPU load Quadro Low- Mid- High- Low- Mid- High- end range end end range end 4/4/2016 17

  18. A LOOK INTO THE PAST SceniX 7 RENDERER DESIGN SceniX 7 used a dirty bit/renderlist cache scheme for rendering G0 material layer M0 M1 T0 T1 -> full rebuild transform layer T0 T2 T3 S0 G1 geometry layer S0 S1 S2 T2 T3 We had a few cases where rebuilt could be avoided Incremental updates were still not fast enough S1 S2 4/4/2016 18

  19. A LOOK INTO THE PAST Renderer bottlenecks Profiling revealed multiple bottlenecks in renderer for (material : materials) // HashMap -> pointer chasing if (cam->isVisible(material)) // virtual function call -> pointer chasing process material(); // virtual function call for (transform : material.transforms) // HashMap if (cam->isVisible(transform)) // virtual function call process Transform(); // virtual function call for (shape : transform.shapes) // HashMap if (cam->isVisible(shape) // virtual function fall (20% time) process(shape) // switch(OC) -> branch misprediction 4/4/2016 19

  20. NV PRO PIPELINE SceniX 6 -> SceniX 7 got up to 6x faster each interation if drawcall limited Still so many bottlenecks in our SceneGraph rendering Our partners like ESI needed just a fast renderer, not a SceneGraph SceneGraph->SceneGraph->Rendering worked mostly out Took a lot of resources and wasted CPU time due to the additional layer Research platform was required how to resolve all those bottlenecks NV PRO Pipeline was born Focus on CPU efficient rendering without any compatibility restriction 4/4/2016 20

  21. NV PRO PIPELINE RiX::GL Developers who want to write an OpenGL renderer face one problem: OpenGL has a million ways to do the same thing, what‘s the best way? Parameters Uniforms, UBOs, SSBOs Bindless Combinatorial explosion Geometry immediate mode, display list, vbo/ibo, vao, vab Bindless 4/4/2016 21

  22. NV PRO PIPELINE RiX::GL How to abstract all the differences in an efficient way? S2 S2 Monitor T3 M1 T3 M1 render(group of objects) S0 S2 M0 T0 S1 render(group of objects, order) S1 S1 T2‘ M1 RiX API to abstract rendering of groups of objects S0 S2 S1 T2 M1 4/4/2016 22

  23. NV PRO PIPELINE SceneGraph RiX SceneGraph [dp::rix] [dp::sg] How to get from SceneGraph to group with incremental updates? G0 S2 T3 M1 T0 T1 S0 M0 T0 S0 G1 Referenced twice S1 T2 T3 T2‘ M1 S2 S1 S2 S1 T3 M1 T2 M1 4/4/2016 23

  24. PIPELINE SceneGraph SceneGraph SceneTree Renderer RiX::GL [dp::sg] [dp::sg::xbar] [dp::sg::rdr::rix::gl] [dp::rix::gl] Events Events Translate S0 S1 S2 S0 S1 S2 G0 G0 T0 T2 T3 T0 T2 T3 S1‘ S1‘ S2‘ S2‘ T0 T1 T0 T1 T1‘ T2‘ T1‘ T2‘ S0 G1 S0 G1 G1‘ Events are fully incremental T2 T3 T2 T3 T2‘ T3‘ S1 S2 S1 S2 S1‘ S2‘ Needs to be done by your application if not using reference SceneGraph 4/4/2016 24

  25. NV PRO PIPELINE Material System Basic pipeline ready SceneGraph -> group of objects -> RiX Next step: Support for GLSL Problem: uniforms, ubos, ssbos, different GLSL versions all required a different shader header We needed a material system, independent from SceneGraph 4/4/2016 25

  26. NV PRO PIPELINE Material System Material system [dp::fx] was born Interface allows enumeration of Materials (shader pipelines) and corresponding set of parameter groups Allows multiple backends in parallel XML (public), MDL (on request) Material system can generate shaders for all parameter techniques Uniforms, UBOs, SSBOs, -> write shader only once 4/4/2016 26

  27. NV PRO PIPELINE Results SceneTree RiX::GL SceneGraph Renderer [dp::sg] [dp::sg::xbar] [dp::sg::rdr::rix::gl] [dp::rix::gl] Efficient pipeline with another ~6x speedup over SceniX 7 for draw-call limited scenes Achieves 6-7mio drawcalls/s on 2.4Ghz system when using bindless Started with new features Frustum culling TransformTree extraction from SceneTree 4/4/2016 27

  28. NV PRO PIPELINE Frustum Culling Frustum culling is important to reduce #draw calls per frame Don‘t render hidden objects NV PRO Pipeline has efficient frustum culling system (10k objects get culled in ~100us) works on groups and returns delta since last call -> don‘t process unchanged data [dp::culling] is the module 4/4/2016 28

  29. NV PRO PIPELINE Transform Tree TransformTree is responsible to compute work transform for each object Currently tighly bound to xbar which translates from SceneGraph to Renderer Working on TransformTree as indepdenent module Currently ~15M transforms/s on CPU and up to 300M transforms/s on GPU For more information visit my Talk: S6131 - Nvpro-Pipeline: Handling Massive Transform Updates in a SceneGraph Tuesday, 14:30 – 14:55 4/4/2016 29

  30. NV PRO PIPELINE Results NV PRO PIPELINE is our open source research rendering pipeline, it‘s not a product Demonstrates techniques to reduce CPU cost of rendering Shows that big speedups are possible when leaving traditional SceneGraph traversal ESI proof that the concepts do work in real world applications Working on modularization so that even more modules can be used in other projects Interested? Grab your copy here: https://developer.nvidia.com/nvidia-pro-pipeline 4/4/2016 30

  31. April 4-7, 2016 | Silicon Valley THANK YOU https://developer.nvidia.com/nvidia-pro-pipeline www.esi-group.com

  32. HELIOS - CURRENTLY Back-Ends RiX::GL ICIDO RASTERIZER Culling HELIOS Transform Multi-Cast Viewer OptiX RAY TRACER VCA 04.04.2016 4/4/2016 32

  33. HELIOS - WHAT’S NEXT? OPENGL dp::fx ICIDO HELIOS OPTIX MDL SDK COMPOSITER VRify VULKAN GRID SDK 04.04.2016 4/4/2016 33

Recommend


More recommend