UE教程

用心搭建好场景

Unreal虚拟贴图RVT的应用

Hello,大家好!今天和大家一起讨论一下Unreal虚拟贴图RVT的应用,我是木偶心没。

虚拟贴图virtual texture在unreal4.23开始使用,4.24的版本进行了改进和优化,4.25对手机进行了支持。它和虚拟内存差不多,主要是解决场景中大量贴图产生的巨大内存。在unreal项目中使用虚拟贴图,可在运行时以更低内存占用率和更高的一致性创建和使用大尺寸贴图。而虚拟贴图又分为了运行时虚拟贴图RVT(runtime virtual texture)和流送虚拟贴图SVT(streaming virtual texture)

这里我们先来说说RVT,runtime virtual texture。

RVT主要是用于渲染复杂的地形材质,能够改善地形样条,网格体和材质贴花,以及一般地形与对象混合的渲染性能和工作流程。而VRT运行时由GPU生成纹理数据,因为主要是获取材质信息。如果用在地形上面的话,就可以直接把编译好的效果直接输出到RVT中,然后将生成的RVT直接加载到其他地形或者原地形上面,这样地形就会直接加载RVT而不用再进行复杂的材质计算。

下面我们在引擎里面用实例说明一下用法。

首先要使用虚拟贴图,需要在项目设置里面把virtual texture启用。Edit>Project Settings>Engine>Rendering>Virtual Texture,勾选Enable virtual texture support和Enable virtual texture lightmaps虚拟光照贴图(支持虚拟纹理光照贴图可提高光照贴图烘焙的流送性能和质量)

Unreal虚拟贴图RVT的应用

重启生效后,需要有一个RVT材质。而创建RVT材质有两种办法。

第一种是直接把材质material domain改成Virtual Texture

Unreal虚拟贴图RVT的应用

另外一种是使用节点,来将已有的地形材质写入到RVT中并从中进行采样。

Runtime Virtual Texture Output:将已有材质的属性输出到RVT中

Unreal虚拟贴图RVT的应用

Runtime Virtual Texture Sample:获取分配的RVT以进行采样并输出

Unreal虚拟贴图RVT的应用

Runtime Virtual Texture Sample Param:将要采样的RVT暴露出去,方便在instance中进行调节。

Unreal虚拟贴图RVT的应用

现在我们就用这三个节点将RVT输出去并且同时加载进来。

首先用Runtime Virtual Texture Output把做好的材质属性输出出去。

Unreal虚拟贴图RVT的应用

然后再用Runtime Virtual Texture Sample给加载进来,并添加一个VirtualTextureFeatureSwitch开关来控制该材质是否要使用RVT。

Unreal虚拟贴图RVT的应用

现在连上去会报错,因为Runtime Virtual Texture Sample需要加载一个RVT图片进去,而RVT又需要一个“容器”来确认将RVT作用到哪个物体上。

Unreal虚拟贴图RVT的应用

往地形场景里面拉一个Runtime Virtual Texture Volume,然后在属性Source Actor里面用吸管在场景中选择一个需要使用RVT的actor,这边直接选择地形。

Unreal虚拟贴图RVT的应用

完成以后点copy bounds复制地形的bounds并旋转(将bounds把需要RVT的物件包含在里面,因为RVT只会影响Bounds范围内的物体,超出的部分不会有RVT的效果)

Unreal虚拟贴图RVT的应用

接下来开始创建虚拟贴图RVT,右键Material&Textures>Runtime Virtual Texture

Unreal虚拟贴图RVT的应用

把创建好的RVT拉到Runtime Virtual Texture Volume的Virtual Texture属性中,并同时加载到材质的Runtime Virtual Texture Sample中

Unreal虚拟贴图RVT的应用

到这里便设置好了RVT到地形上,如果设置错误,材质将渲染为黑色。

对于RVT的应用,还可以制作树木的假阴影,将阴影做成RVT然后实时加载

也可以解决草的悬浮等问题,将地面高度输出到RVT,然后在草的材质中去采样RVT然后抵消那个高度

Unreal虚拟贴图RVT的应用

另外RVT还可以和SVT一起使用来确定多远处使用SRT优化场景材质。

来源:Thepoly公众号