Concurrent Binary Trees for Large-Scale Game Components

We introduce a large-scale component implementation powerful enough to handle extremely large scales, such as planetary scales.

Authors

author-image

By

Video games constantly aim for bigger and better worlds for their players to explore. One of the big challenges imposed by such worlds is their requirement for huge amounts of geometry, which are typically handled by a dedicated system called a large-scale component. While many implementations of such large-scale components are available, none is really powerful enough to handle extremely large scales such as planetary scales.

In this work, we introduce a large-scale component implementation suitable for such planetary scales. The key benefit of our implementation is that it uses a single representation. This contrasts with previous methods that usually rely on hybrid representations, which make them harder to use because they require careful tweaking to switch between representations depending on the viewing scale. This allows us to process large sceneries at very high speeds while making the system easier to use for developers and artists.

Our implementation relies on a recent data structure called a concurrent binary tree (CBT). We use this CBT as a GPU memory pool manager, from which we allocate and release triangles without interrupting a running program. This memory manager helps us control the number of triangles in front of the player's field of view and, ultimately, makes our method fast.

""