UE4中使用虚拟纹理时,总会有很多的成本消耗,所以我们都会统计虚拟纹理,并评估性能和成本。下面带大家了解UE4中统计虚拟纹理的方法。


统计虚拟纹理


使用反引号(`)键打开控制台,然后输入以下命令以启用其统计信息:


使用stat virtualtexturing查看有关在毫秒(ms)虚拟纹理场景成本的细节和计数器页表。


UE4中如何统计虚拟纹理


使用stat virtualtexturememory以显示与当前场景中使用虚拟纹理的相关内存计数器。


UE4中如何统计虚拟纹理


流式虚拟纹理可视化


使用控制台命令r.VT.Borders 1在使用流虚拟纹理的材质上绘制Mip可视化网格。


UE4中如何统计虚拟纹理


物料查找和堆栈


从材质中的虚拟纹理进行采样比对传统纹理进行采样要昂贵。虚拟纹理化的成本分为两类:


查找针对“材质图”中采样的每个虚拟纹理进行。


当使用相同的UV和采样器源时,堆栈会组合虚拟纹理。


虚拟纹理将永远比传统纹理示例更昂贵。始终至少会有两次纹理获取和一些数学指令。但是,通过组合使用相同UV和采样器源的VT纹理样本的堆栈(最多8个),可以分摊部分成本。


在这个简单的Material示例中,有两个使用默认UV进行采样的VT Texture Sample表达式。为该纹理样本的每次查找添加了一个虚拟纹理查找,并且由于两者都使用单个UV,因此将它们合并为一个虚拟纹理堆栈:


UE4中如何统计虚拟纹理


但是,如果使用不同的UV,则两次虚拟纹理堆栈获取会增加成本:


UE4中如何统计虚拟纹理


第一个示例总共使用了三个纹理获取。两个查询和一个堆栈。由于VT样本使用相同的UV,因此将它们的堆栈合并以节省纹理提取。在第二个示例中,总共进行了四个纹理提取;第二个示例是将纹理提取到第二个纹理。两个查询和两个堆栈。VT纹理样本对基色样本和正常纹理样本使用不同的UV,这意味着它们不能合并为单个堆栈。


流虚拟纹理被分割为每个纹理的固定大小的切片,而不管其大小如何。最低分辨率的Mip受图块大小的限制。在许多情况下,这将不是问题,但是,由于缺少低分辨率的点状点,具有大量噪点或高细节的纹理可能会出现混叠或莫尔效果。尽管这在实践中可能很难衡量,但这也带来了潜在的GPU性能成本。

,Unreal Engine技巧,Unreal Engine教程