本指南要求使用了在Epic Games启动程序中学习选项卡下的内容示例项目中的材质。虽然不使用这些材质也可以完成以下步骤,但为了设置地形,使其正常生效,需要使用绘制好的地形材质。
在继续观看本指南前,请先参阅地形快速入门指南 ,或打开 学习 选项卡下的内容示例项目 Landscapes 地图,以配合本指南的学习。
在运行时虚拟纹理(RVT)快速入门中,将介绍在您自己的项目中针对地形和非地形组件设置和使用RVT的过程。
在开始本指南前,出于以下原因,理解运行时虚拟纹理最适用于地形十分重要:
复杂的地形材质缓存着色效果,可提高性能。
使用样条型和贴花类效果可提高质量和加强变体。
由同一RVT资源处理非地形Acor与地形的混合。
完成本指南后,您会更了解:
设置运行时虚拟纹理资源以及它连接到不同组件的方式。
为地形材质启用运行时虚拟纹理。
在关卡中设置运行时虚拟纹理体积。
设置更多Actor以渲染至运行时虚拟纹理。
1 - 项目设置
使用运行时虚拟纹理前,必须先为项目启用它。执行以下步骤:
在主菜单中,选择 编辑(Edit) 菜单并选择 项目设置(Project Settings)。在 引擎(Engine) > 渲染(Rendering) > 虚拟纹理(Virtual Textures) 类目下,将 启用虚拟纹理支持(Enable Virtual texture support) 设为true。
重启 项目。
2 - 创建运行时虚拟纹理资源
运行时虚拟纹理 资源包含指定给运行时虚拟纹理体积的RVT资源的配置详情。RVT资源的工作原理是链接场景中需共享数据的材质和其他Actor。
在 内容浏览器 中,利用右键点击快捷菜单或 新增(Add New) 按钮从 材质和纹理(Materials & Textures) 类目创建 运行时虚拟纹理 资源。
为 运行时虚拟纹理 资源命名。在本指南中,命名为
VT_Test
。双击打开此 运行时虚拟纹理 资源以配置其可用属性。
可在此窗口中定义运行时虚拟纹理的大小、图块大小和支持的材质属性类型,并设置要渲染的低mip数量,以供流送的虚拟纹理使用。可在编辑器中实时调整这些设置,查看所做的更改是否生效。
欲知这些设置的详情和用途,参阅虚拟纹理设置 页面。
3 - 创建运行时虚拟纹理材质
从这一步起将使用来自 内容示例 项目的资源。尽管这 不 是操作的必要环节,但建议执行此操作。
这一步将使用一个简单的地形材质来获得运行时虚拟纹理支持。此外,还将使用一些RVT特定的材质表达式来设置逻辑,当虚拟纹理在受支持平台上不可用时,这些表达式能将材质退却到原始使用状态。
设置材质使用RVT需要考虑两个情境:
部分材质将 写入 RVT资源。
部分材质将从RVT资源 采样,并应用进一步的逻辑。
在本示例中,地形材质来自 内容示例(Content Examples) 项目,它拥有一个雪、草地和岩石的简单图层混合设置。
点击查看大图。
若未使用内容示例中的材质,可如上所述重新创建。但记住,仍需正确设置材质以便于用于地形。可参阅地形快速入门指南 作为起点。
接下来将分解此材质的各个部分,演示在RVT资源中进行写入和采样的方式。
必要材质设置
设置地形材质用于RVT资源的方式与设置传统材质相同,但有一个例外:应启用 使用材质属性(Use Material Attributes)。此选项允许使用 建立材质属性(Make Material Attributes) 表达式来重建和输出材质用于不同的使用情况。
打开已创建或可用的地形材质。右键点击图表并搜索 建立材质属性(Make Material Attributes) 表达式。在图表中添加一个材质。
将引线从主属性(Main Attributes)节点移至 建立材质属性(Make Material Attributes) 节点。应显示类似如下:
点击查看大图。
选择 主属性(Main Attributes) 节点后,利用 细节(Details) 面板启用 使用材质属性(Use Material Attributes)。
从 建立材质属性(Make Material Attributes) 节点拉出引线,并创建 运行时虚拟纹理功能切换(Runtime Virtual Textures Feature Switch) 节点。此操作会将其插入 No 输入中。然后,将其连接至 材质属性(Material Attributes) 输出。
材质应如下所示:
点击查看大图。
写入运行时虚拟纹理资源
接下来,材质需通过 运行时虚拟纹理输出(Runtime Virtual Texture Output) 表达式 写入 RVT资源。此节点引用本指南前面创建的RVT资源,并允许将相应材质属性(如底色、粗糙度和法线)用作此节点的输入属性。
在图表中右键点击并添加一个 运行时虚拟纹理输出(Runtime Virtual Texture Output) 节点。
点击查看大图。
连接节点上列出的每个材质属性输入的节点引线。对于基础材质中未用到的属性输入,在其位置上使用常量值。
在复杂的材质图表中,为防止引线发生混淆,双击任意引线可创建变更路线节点。例如,在引线上为底色或法线等输入添加一个节点,让一个引线同时处理RVT Output和Make Material Attributes节点的输出是比较可取的方法。
材质应如下所示:
点击查看大图。
所有图层混合和逻辑发生在此材质的第一部分。此部分全部是 与摄像机无关的 着色,可缓存到RVT资源,其他对象(如样条和贴花)应被RVT系统合成到此节点的输出中。
从运行时虚拟纹理资源采样
接下来,材质需通过 运行时虚拟纹理采样(Runtime Virtual Texture Sample) 表达式从RVT资源 采样。
在图表的这一部分,RVT资源接受采样,并在此处应用 与摄像机相关的 或其他着色操作。RVT资源属性为采样内容,将被传送至最终材质输出,因此在图表的这一部分所做的操作越少,此材质的渲染开销就越低。
点击右键并添加一个 运行时虚拟纹理采样(Runtime Virtual Texture Sample) 节点。
点击查看大图。
点击右键并创建另一个 建立材质属性(Make Material Attributes) 节点。将 运行时虚拟纹理采样(Runtime Virtual Texturing Sample) 节点的输出连接到 建立材质属性(Make Material Attributes) 节点的相应输入。
将 建立材质属性(Make Material Attributes) 节点的输出连接到 虚拟纹理功能切换(Virtual Texture Feature Switch) 节点的 Yes 输入。
点击查看大图。
选择 运行时虚拟纹理采样(Runtime Virtual Texture Sample) 节点。在 细节(Details) 面板中,利用 虚拟纹理(Virtual Textures) 资源选择框来指定先前在本指南中创建的RVT资源。
将 虚拟纹理功能切换(Virtual Texture Feature Switch) 节点的输出连接到 材质属性(Material Attributes) 主节点的输入。
保存 并 关闭 此材质。
材质应如下所示:
点击查看大图。
4 - 放置运行时虚拟纹理体积
设置支持运行时虚拟纹理的材质之后,这一步将在关卡中放置 运行时虚拟纹理体积(Runtime Virtual Texture Volume)。将RVT资源指定给体积前,使用一些内置工具对体积进行缩放和旋转,以便将地形包围起来。
在 放置Actor(Place Actors) 面板中,在 体积(Volume) 类目下搜索 运行时虚拟纹理体积(Runtime Virtual Texture Volume),并将其拖入场景。
点击查看大图。
选择RVT体积后,可用 细节(Details) 面板快速缩放和旋转体积,以便包围所选Actor的边界。
在 从边界变换(Transform from Bounds) 类目下,用 源Actor(Source Actor) 选择框选择放置在关卡中的Actor,或用 滴管工具 选择一个Actor。
点击 复制边界(Copy Bounds) 和 复制旋转(Copy Rotation) 按钮将RVT体积缩放至所选Actor的边界和旋转。
在RVT资源中进行采样或写入的任何对象应位于RVT体积的边界内。
在 虚拟纹理(Virtual Texture) 类目下,将RVT资源指定给 虚拟纹理(Virtual Texture) 资源选择框。
若材质 M_LandscapeMaterial
全部设置正确,且已将其正确指定并绘制到地形上,则指定RVT资源的RVT体积应能够正确渲染。否则,材质将渲染为黑色。
5 - 将Actor渲染至运行时虚拟纹理
基本地形材质已设置好并已渲染到RVT资源之后,我们便可以开始在场景中添加要渲染到RVT的其他Actor。这一步中,我们将启用地形样条(表示道路)通过RVT直接渲染到地形上。
本指南的这一部分使用内容示例中已设置的地形样条,但这里显示的步骤也可应用于其他Actor及其材质。样条是渲染到运行时虚拟纹理的一个良好用例。
导航到 模式(Modes) 下拉菜单并选择 地形(Landscape) 选项卡,然后选择 管理(Manage) 选项卡。
在 地形(Landscape) 工具栏种,点击 样条(Splines)。
在关卡视口中,选择样条的任何部分。在关卡的 细节(Details) 中,点击 片段(Segments) 按钮,选择构成此样条的所有片段。
在 地形样条网格体(Landscape Spline Meshes) 类目下,展开 样条网格(Spline Meshes) 排列。应指定静态网格体 SM_Street。双击它打开静态网格体编辑器。
然后在 材质插槽(Material Slots) 下,双击元素0 M_Street 材质在材质编辑器中打开它。
对于此静态网格体和指定材质,由于元素0是插槽0和插槽1使用的基础材质,且元素1是元素0的子材质实例,因此选择元素0。请注意,要渲染到RVT资源的任何材质都需要使用以下步骤进行设置。
在材质编辑中选择主材质节点后,在 细节(Details) 面板中将 材质域(Material Domain) 设为 虚拟纹理(Virtual Texture)。
保存并关闭 材质和静态网格体编辑器。
返回关卡视口中,仍保持选中地形样条,查看关卡的 细节(Details) 面板下的 虚拟纹理(Virtual Textures) 类目。点击 添加(add) (+)按钮在列表中新增排列元素。将RVT资源指定给此排列元素。
现在,在关卡视口中应看到样条材质被渲染到地形上的RVT资源中,而不是随略高于地形表面的样条路径而浮动。
下面是使用RVT将样条材质应用到地形表面的详细介绍。
6 - 自己动手操作!
完成本指南且已设置使用运行时虚拟纹理的地形材质之后,便可以开始探索将自己的Actor材质渲染到RVT。开始时可使用下面的一些建议:
将RVT添加到另一个静态网格体,RVT可以像贴花一样应用。了解如何使用带遮罩材质的静态网格体平面向地形添加类似贴花的细节。
使用植物实例来绘制网格体,该网格体可渲染到RVT,创建地形的独特变体。
利用多个运行时虚拟纹理资源来管理不同类型的Actor、以及它们渲染到运行时虚拟纹理体积的方式。
通过 半透明排序优先级(Translucency Sort Priority) 为Actor渲染到RVT的方式设置图层顺序。举例而言,0表示底层,更高的值则表示堆叠在另一层之上。