Speaker: Michael Wörister

 Scene graphs are a common way of representing 3-dimensional scenes for graphical applications. A scene is represented as a hierarchical structure of nodes which represent 3D geometry, spatial transformations, surface properties, and other possibly application specific aspects. Scene graph systems can be designed to be very generic and flexible, e.g. by allowing users to implement custom node types and traversals or by providing facilities to dynamically create subgraphs during a traversal. This flexibility comes at the cost of increased time spent in pure traversal logic. Especially for CPU-bound applications this causes a performance drop. This thesis proposes a scene graph caching system that automatically creates an alternative representation of selected subgraphs. This alternative representation poses a render cache in the form of a so-called instruction stream which allows to render the cached subgraph at lower CPU cost and thus more quickly than with a regular render traversal. Additionally, a number of optimizations for render caches were implemented to further increase the performance gain with respect to uncached rendering.

In order to be able to update render caches incrementally in reaction to certain scene graph changes, a dependency system was developed. This system provides a model for describing and tracking changes in the scene graph and enable the scene graph caching system to update only those parts of the render cache that needs to be updated without necessitating a full rebuild of the cache.

The actual performance characteristics of the scene graph caching system were investigated using a number of synthetic test scenes in different configurations. These tests showed that the caching system is most useful in scenes with a high structural complexity (high geometry count and/or deep scene graph hierarchies) and moderate primitive count per geometry. In this kind of scene the scene graph caching system, with all optimizations enabled, reduced average frame times by a factor of 5 to 8 with all objects in the scene changing their transformation each frame. This performance gain could be achieved at the cost of startup times increased by 3 to 4 seconds for scenes with 3000 to 8000 geometry nodes. The additional main memory consumption was measured at 4 MiB for the scene with 3000 geometries and a flat transformation hierarchy and 20 MiB for the scene with 8000 geometries and a deep transformation hierarchy.  

Details

Category

Duration

10+10
Supervisor: WP