How virtual textures work
3 months ago
- #game-development
- #performance-optimization
- #virtual-texturing
- Crash Bandicoot used a virtual memory system to render richer environments on the PlayStation by decomposing levels into fixed-size pages and streaming only visible sections.
- Traditional PlayStation games loaded entire levels into memory at once, wasting resources on non-visible data.
- Virtual texturing applies the concept of virtual memory to GPU textures, allowing large textures to be partially resident in memory based on what's visible.
- The system involves a virtual texture space, a page table for translation, and a physical texture atlas for resident pages.
- A feedback pass determines which texture pages are needed for the current view, enabling efficient streaming.
- Modern GPUs support sparse textures for virtual addressing, but engines often implement their own virtual texturing systems for better control.
- Virtual texturing is most effective in scenarios where texture size vastly exceeds GPU memory, such as open-world games or scientific visualization.
- The technique shifts performance bottlenecks from GPU memory to CPU and I/O latency, requiring careful management to avoid visible pop-in.
- Virtual texturing is part of a broader pattern of exposing large virtual spaces while maintaining small working sets for efficiency.