How does CD Projekt RED manage to generate a huge open world in The Witcher 3 without crippling our PCs? They explain how the Umbra 3 middleware only ‘loads’ parts of the world we’re actually looking at.
In a GDC presentation, programmer Przemyslaw Czatrowski said they greatly freed up graphics memory by just rendering what we see, as the world is parcelled into ‘tomes’.
These tomes contain all the data necessary to flesh out their particular section of the world but only load into memory when the camera sweeps through.
An asynchronous mechanic is working behind the scenes to load in and out these tomes depending on where the camera is pointing at any given time. This ensures system memory remains free of clutter as otherwise the ambitious open world RPG would eventually buckle under the enormous memory requirements.
The occlusion process in The Witcher 3:
1) The world is split in tiles, and for each tile a “tome” data package is built, including the occlusion data. The engine determines which tomes are needed to be shown depending on the camera position and direction.
2) If the newly determined set of tomes differs from the previous set, an asynchronous compilation process starts, creating a new tome collection, that is sent to the renderer to replace the one previously rendered.
3) Tomes that are not used anymore are removed from the stream to free up memory.
The Witcher 3: Wild Hunt releases on PC, Xbox One and PS4 in early 2015, following a delay to the RPG. Below is a video of Czatrowski’s GDC presentation showing Umbra 3’s inner workings.