“Virtual Texturing in Software and Hardware” by Obert, Waveren and Sellers

  • ©Juraj Obert, J.M.P. van Waveren, and Graham Sellers


Entry Number: 11


    Virtual Texturing in Software and Hardware

Course Organizer(s):



    The objective of this course is to introduce Partially Resident Textures (PRTs), a new  GPU feature for virtual texturing, and contrast them with traditional, software-based, methods used for virtual texturing. PRTs are currently available in the Southern Islands (Radeon  HD 7xxx) family of graphics processors.

    Software-based virtual texturing methods have been used in computer games since 2007. The technology was popularized by John Carmack (ID Software) and ID Software’s implementation of virtual texturing is termed Megatexture. The first title featuring virtual  texturing was Enemy Territory: Quake Wars (Splash Damage), followed by other titles such as Brink (Splash Damage) or RAGE (ID Software).

    The basic idea of virtual texturing is simple — instead of maintaining a separate texture for each object rendered on the screen, all textures are stored in a massive ”virtual texture”. The size of the virtual texture is in the order of billions of texels and each object is assigned unique virtual texture coordinates from the virtual texture. When used in a shader, the virtual texture coordinates are translated into physical texture coordinates, which are used to access the physical texture that contains the working set of all required tiles.

    Existing approaches implement the entire virtual texturing algorithm in software. The software is required to update the page table (yet another texture used for translating virtual texture coordinates into physical ones), perform address translation (by dependent texture lookups in a shader) and deal with hardware differences when it comes to supported texture types, formats and filtering modes. The first part of the course will outline this process and discuss difficulties encountered when deploying this technology in RAGE.

    Partially Resident Textures are a new hardware technology that provides direct hardware support for virtual texturing. PRTs eliminate the need for maintaining the page table (the hardware does it) and address translation (the hardware does it) as well as provide support for all texture types/formats and filtering modes (again the hardware does it all). The second part of the course will describe the hardware architecture as it relates to PRTs. 

    The third part of the course will introduce the new AMD sparse texture OpenGL extension that exposes PRTs to software applications. We will present several PRT use cases, a  tech demo and discuss strengths and weaknesses of this technology. The course will conclude with a discussion of the limitations present in today’s PRT hardware and future plans for PRT development.