运行时虚拟纹理(RVT)是虚幻引擎4.23版开始提供的一项功能,它可以在运行时使用GPU按需生成和缓存纹理数据。借助此功能,材质可以直接绘制到材质编辑器中的运行时虚拟纹理 (RVT),以及对 RVT 纹理进行采样。
1、过去的解决方案在虚幻引擎中引入运行时虚拟纹理之前,通常使用Render Target来实现地形混合和景观变形系统。Render Target是可以在运行时绘制的纹理。可以使用蓝图代码将形状和材质绘制到特定纹理。Render Target要求所有材质都是addtive类型,以便它们可以在相同的纹理中相互绘制。将所有内容绘制到纹理后,需要通过在蓝图代码中调用"ClearRenderTarget 2D"节点来手动清除纹理,以便重置并再次启动该过程。此过程有时会导致闪烁问题。
Render Target有以下缺点:
- 纹理尺寸有限
- 要执行大量步骤才能完成绘制
- 无法将大小和位置从命中点转换为Render Target的大小
- 设置为不同掩码的通道数量有限(RGB 和 alpha 要求材料设置为AlphaComposite)
- 不支持的照明
- "世界位置"节点有时会返回意外值
与Render Target相比,运行时虚拟纹理的优势如下:
- 支持较大的纹理分辨率(横向着色)
- 无需蓝图即可将材质的图纸处理到纹理上
- 适用于程序化图案和复合层状材料
- 植被实例(用于贴花散射)
- 可用于创建样条贴花类型效果
- 将草地、岩石和水与景观融为一体,呈现自然外观
让我们看看如何使用运行时虚拟纹理为角色创建雪迹。在本演示中,使用了Drawer材质和Receiver材质。
首先,转到"项目设置"。在"引擎>渲染>虚拟纹理"类别下,将"启用虚拟纹理支持"设置为 true。
然后在项目目录中创建名为"RVT"的运行时虚拟纹理资源: