One of the more important reasons for using Umbra is to save valuable level designer time and not having them do the tedious work of manually annotating the scene with portals or generating occluder meshes. Umbra does this by automatically generating the occluder data from the original world geometry as part of the toolchain workflow. As we did not want to introduce another progress bar for the artists to stare at, we designed Umbra so that the entire process can be done incrementally, continuously in the background and so that the results can be shared between the entire team. We call this feature the Incremental Bake.
For the Incremental Bake, Umbra splits the data generation into a job graph, where each job can be easily cached. Most of the jobs in the graph correspond to a local area in the input data, which means that when a level designer changes something in the scene she is working on, only the jobs that are affected by the change will have to be re-processed. This incremental update typically takes very little time so it can be run as a background process. We wanted to make sure that iterating levels and worlds would be as painless as possible for artists, but still offer them accurate results when it comes visibility.
The fastest way to get started with the Incremental Bake is to use the LocalComputation API and its cache features. However, for more fine-grained control and advanced use cases, we recommend familiarizing yourself with the lower level BuildGraph API, on top of which LocalComputation is implemented. For details, please refer to interface/umbraBuildGraph.hpp.