Virtual Texture是一种允许实时大体量渲染纹理数据而通过虚拟映射将整体纹理数据放入显存连续采样的纹理技术方案,本技术基本上是现代图形引擎用于实时纹理渲染的核心技术(RVT)。
先来看一下本技术的主要优点:
- 预混合纹理,大幅减少纹理带宽开销,尤其是地形
- 有利于合批,尤其是要实现GPU-driven和光追时
- 实现近处丰富的材质细节
- 降低内存(显存)开销
接下来,我们大概来说一下本技术的原理:它主要是通过仅将当前视图所需的纹理的单个图块加载到内存中并将其余图块保留在设备硬盘上来实现的。一般 Virtual 指的是在操作系统的内存管理系统中使用的虚拟内存技术,其实虚拟纹理采用的也是类似的思路。
大体流程见下图:
上图也许太抽象了点,可以通过下图来了解其最基本的原理:
至于整体实现逻辑可见如下:
具体的实现的应用过程可见如下:
然后基于Virtual Texture的思路,衍生出了各种拓展算法,比如:Procedural Virtual Texture,Adaptive Procedural Virtual Texture,Hardware Virtual Texture等解决方案。
至于具体原理可以参照以下大佬们的资料,就不再详细归档了。
Adaptive Virtual Texture Rendering in Far Cry 4
how-can-virtual-texturing-actually-be-efficient