S4379-opengl-44-scene-rendering-techniques.pdf

(2298 KB) Pobierz
OpenGL 4.4
Scene Rendering Techniques
Christoph Kubisch
Markus Tavenrath
- ckubisch@nvidia.com
- matavenrath@nvidia.com
Scene Rendering
Scene complexity increases
Deep hierarchies, traversal expensive
Large objects split up into a lot of little
pieces, increased draw call count
Unsorted rendering, lot of state changes
CPU becomes bottleneck when
rendering those scenes
Removing SceneGraph traversal:
http://on-demand.gputechconf.com/gtc/2013/presentations/S3032-Advanced-
Scenegraph-Rendering-Pipeline.pdf
models courtesy of PTC
2
Challenge not necessarily obvious
Harder to render „Graphicscard“ efficiently than „Racecar“
CPU
GPU
App/GL
GPU
idle
650 000 Triangles
68 000 Parts
~ 10 Triangles per part
3 700 000 Triangles
98 000 Parts
~ 37 Triangles per part
3
Enabling GPU Scalability
Avoid data redundancy
Data stored once, referenced multiple times
Update only once (less host to gpu transfers)
Increase GPU workload per job (batching)
Further cuts API calls
Less driver CPU work
Minimize CPU/GPU interaction
Allow GPU to update its own data
Low API usage when scene is changed little
E.g. GPU-based culling
4
Rendering Research Framework
Avoids classic
SceneGraph design
Geometry
Vertex & Index-Buffer (VBO & IBO)
Parts (CAD features)
Same geometry
multiple objects
Material
Matrix Hierarchy
Object
References Geometry,
Matrix, Materials
Same geometry
(fan) multiple parts
5
Zgłoś jeśli naruszono regulamin