Tech News
← Back to articles

How virtual textures work

read original related products more articles

In an interview discussing the development of Crash Bandicoot on the original PlayStation, Andy Gavin describes how the team rendered richer environments, higher-resolution textures, and smoother animation than any other game on the platform at the time.

Most PlayStation games followed a predictable path. Before each level the game loaded all the assets from the CD into memory. The budget was tiny: 2 MB of system RAM and 1 MB of VRAM. Once the level started the CD was mostly used for music.

This approach left performance on the table. During gameplay only a small portion of a level is ever visible. Large amounts of data were loaded despite never contributing to the final image.

Crash Bandicoot broke from this model by decomposing levels into fixed-size pages and treating them as virtual memory. A precomputed visibility layout determined which pages were required for each region of the level. As long as the working set of pages fit in memory, streaming remained continuous and transparent to the player.

In practice, the system was no longer constrained by total RAM capacity but by the amount of data that could be packed into a single page. The effective size of a level became the space allocated to it on disk rather than the size of main memory.

The same constraint still governs modern rendering engines. Hardware capabilities have evolved but GPUs remain bounded by how much data they can access efficiently at any given moment.

Both scenes run on the original PlayStation. Crash streams level data aggressively, enabling denser textures and more visual variety. Tomb Raider relies on traditional loading.

The same constraint appears in scientific visualization. At Biohub, some of our work involves building interactive systems for visualizing large, multi-dimensional bioimaging datasets that exceed GPU memory by orders of magnitude.

Virtual texturing is a natural fit for this problem. However, existing explanations gloss over details, particularly around residency and feedback. Implementing a complete prototype exposed gaps in how the system is commonly described.

This article examines the problem virtual texturing solves, the tradeoffs it introduces, and how the system operates in practice.

... continue reading