from geographic source data
play

from Geographic Source Data Tim Woodard Chief Technology Officer - PowerPoint PPT Presentation

Run-Time Scene-Graph Construction from Geographic Source Data Tim Woodard Chief Technology Officer Diamond Visionics www.dvcsim.com GPU Technology Conference 2016 Three-Headed Monster 2 Evolution of Simulation 3 Source to Scene Pipeline


  1. Run-Time Scene-Graph Construction from Geographic Source Data Tim Woodard Chief Technology Officer Diamond Visionics www.dvcsim.com GPU Technology Conference 2016

  2. Three-Headed Monster 2

  3. Evolution of Simulation 3

  4. Source to Scene Pipeline 4 Pre-computed LODs Scene Graph

  5. Pilot Expectations 5 https://vimeo.com/113736724

  6. Hardware Parallelism 6

  7. Software Serialization 7

  8. Source to Scene Pipeline 8 Pre-computed LODs Scene Graph

  9. Slaying the Beast 9  Defer commitment to as late as possible  Pre-compiling data results in expansion and loss of abstraction  Pre-compiling makes changing data and/or rendering fidelity costly  Pre-compiling does not  Use data structures that are memory-friendly  Not always obvious, can go against academic guidelines  Use parallelism effectively  Minimal locking of shared resources  Eliminate driver overhead

  10. OpenGL Rendering Scene Graph // Display lists glNewList(list_id,GL_COMPILE); // ...Call draw commands glEndList(); // Draw display list with one command glCallList(list_id);

  11. OpenGL Rendering 11

  12. Vulkan FTW! 12 From: www.khronos.org/vulkan

  13. Until Vulkan, Command List CL is OpenGL extension which offers much of what Vulkan provides  Greatly reduces driver overhead  // Example of a state command char tokens[]; // ... Pack state and draw commands into tokens array typedef struct { GLuint header; // Initialize token buffer float scale; glGenBuffers(1, &token_id); float bias; glNamedBufferDataEXT(token_id, sizeof(tokens), tokens, } PolygonOffsetCommandNV; ...); // Example of a draw command // Draw tokens typedef struct { glDrawCommandsNV(GL_TRIANGLES, id, offsets, sizes, GLuint header; num_tokens); GLenum mode; GLuint count; GLuint instanceCount; GLuint first; GLuint baseInstance; } DrawArraysInstancedCommandNV;

  14. Results 14  Going from K6000 to M6000, saw 100% performance improvement  Test scene, 5.66M polygons, full-scene shadows  Became CPU-bound  Modern OpenGL, CPU times dropped from 9.8 to 7.2ms (see GTC 2015 talk)  Better scene graph organization: 7.2 to 4.5ms! GPU times about the same, so GPU-bound.   Able to increase fidelity NOW  Ready for Pascal!

  15. Hardware Consolidation 15

  16. 16 Integration with NVIDIA WaveWorks

  17. NVIDIA WaveWorks Integration 17 Related talks: Tim Woodard • S6138 - GPU-Driven Rendering in Vulkan and OpenGL timw@dvcsim.com • S6817 - High-Performance, Low-Overhead Rendering with OpenGL and Vulkan • S6818 - Vulkan and NVIDIA: The Essentials Thank you! Exhibit hall: PNY and Concurrent Please complete the Presenter Evaluation sent to you by email or through the GTC Mobile App. Your feedback is important!

Recommend


More recommend