-
Notifications
You must be signed in to change notification settings - Fork 5
Incremental Rendering
Incremental rendering is based on the idea of incremental computation, which means that whenever a piece of data changes, the system attempts to save time by only recomputing those outputs which depend on the changed data.
In Aardvark those outputs are mostly pixels on a screen and data is input devices, geometry, shaders, and all other static or dynamic data entering the system.
In a way, any application is one giant incremental computation for Aardvark. A stream of ever-changing raw input data and user inputs entering the system, which are continuously converted to interactive real-time graphics, using the least amount of computation necessary.
Update performance of incremental systems is basically independent of the total amount of data. It only depends on the rate of change of this data.
What does this mean in practice? Imagine that your game or visualization tool manages an incredibly complex scene consisting of a gazillion different parts, which is implemented using Aardvark's incremental computation primitives. Now imagine further, that the only thing that changes at this very moment is the camera position. What Aardvark will do, is to directly rewrite a 4-by-4 view matrix somewhere in GPU memory, nothing else. No costly traversal of scene graph data structures or similar overhead.
By the way, Aardvark itself is implemented on top of the same incremental computation primitives, from high-level application code down to the depths of lowest-level rendering back-end code. Therefore all projects built on top of the Aardvark platform are incremental by default. This also means, that all parts of the system naturally compose with all other parts - no impedance mismatch a.k.a. glue code. That is unless the developer makes a conscious decision to actively opt out.