An incremental rendering VM

We introduce an incremental rendering layer on top of standard graphics APIs such as OpenGL or DirectX in the form a virtual machine (VM), which efficiently maintains an optimized, compiled representation of arbitrary high-level scene representations at all times. This includes incremental processing of structural changes such as additions and removals of scene parts, as well as in-place updates of scene data. Our approach achieves a significant framerate increase for typical workloads and reasonable performance for high-frequency changes. Processing is performed in running time O(Δ), where Δ is proportional to the size of the change and the optimized representation has no runtime overhead with respect to the underlying graphics API. This is achieved by tracking and applying all changes as incremental updates to appropriate data structures and by adaptively synthesizing a program of abstract machine code. In a final step this abstract program is incrementally mapped to executable machine code --- comparable to what just-in-time compilers do. Our main contributions are (i) an abstract interface for rendering and visualization systems enabling incremental evaluation, (ii) adaptively optimized abstract machine code in the context of stateless graphics commands, and (iii) subsequent adaptive compilation to executable machine code including on-the-fly defragmentation.

[1]  Leslie Lamport,et al.  On-the-fly garbage collection: an exercise in cooperation , 1975, CACM.

[2]  John Rohlf,et al.  IRIS performer: a high performance multiprocessing toolkit for real-time 3D graphics , 1994, SIGGRAPH.

[3]  Scott McFarling,et al.  Program optimization for instruction caches , 1989, ASPLOS III.

[4]  Eric Schenk,et al.  Shader-driven compilation of rendering assets , 2002, ACM Trans. Graph..

[5]  Pedro V. Sander,et al.  Triangle order optimization for graphics hardware computation culling , 2006, I3D '06.

[6]  S McKinleyKathryn,et al.  Myths and realities , 2004 .

[7]  Markus Hadwiger,et al.  Saving the z-cull optimization , 2007, SIGGRAPH '07.

[8]  Perry Cheng,et al.  Myths and realities: the performance impact of garbage collection , 2004, SIGMETRICS '04/Performance '04.

[9]  Rich Gossweiler,et al.  Amortizing 3D graphics optimization across multiple frames , 1995, UIST '95.

[10]  Don Burns,et al.  Open Scene Graph A: Introduction, B: Examples and Applications , 2004 .

[11]  Mark Segal,et al.  The OpenGL Graphics System: A Specification , 2004 .

[12]  Robert Grimm,et al.  A catalog of stream processing optimizations , 2014, ACM Comput. Surv..

[13]  James R. Bell,et al.  Threaded code , 1973, CACM.

[14]  Stefan Maierhofer,et al.  Lazy incremental computation for efficient scene graph rendering , 2013, HPG '13.

[15]  Jonathan D. Cohen,et al.  GLOD: a driver-level interface for geometric level of detail , 2003, SIGGRAPH '03.