以下小节重点介绍了你在某些启用了Nanite的项目中可以使用的工作流程,这类项目还需要在不复制资产的情况下支持非Nanite功能和平台。
导入Nanite的高分辨率网格体
通过内容浏览器(Content Browser)或静态网格体编辑器(Static Mesh Editor),你可以导入高分辨率网格体,将其作为现有非Nanite静态网格体的Nanite表示。
在内容浏览器中,你可以在静态网格体资产上点击右键,打开快捷菜单,选择细节级别(Level of Detail)> 高分辨率(High Res)> 导入高分辨率(Import High Res),然后找到你要导入的文件。
或者,你也可以使用静态网格体编辑器,通过细节(Details)面板中的Nanite设置导入高分辨率网格体。 点击导入(Import)并找到你要导入的文件。
使用此工作流程时,预先存在的静态网格体及其细节级别(LOD)链会成为回退网格体,而不是让导入进程根据Nanite几何体自动生成回退网格体。
此工作流程会遵循场景中静态网格体Actor的禁止Nanite(Disallow Nanite)设置,详情请见下文的静态网格体组件选项小节。
材质工作流程
你可以通过两种方式使用材质改进非Nanite和Nanite工作流程:
通过在材质图表中使用节点来打断逻辑路径。
通过使用仅用于Nanite渲染的重载材质。
Nanite Pass Switch节点
Nanite Pass Switch节点可以在使用Nanite渲染时,定义材质图表中的特殊行为。
在渲染到非Nanite通道中时,使用Default输入,以按正常方式处理材质。 对于要简化或专门渲染到Nanite通道的材质逻辑,使用Nanite输入。 例如,当材质使用Nanite不支持的功能时,你可以为Default输入沿用相同的逻辑,为Nanite输入使用更友好的逻辑。
Nanite重载材质
材质和材质实例上提供了Nanite重载材质(Nanite Override Material)的插槽。 设置重载材质后,所有已分配材质或材质实例并启用Nanite的网格体,都将改用所引用的Nanite重载材质。 这意味着,你可以创建Nanite工作流程专用的材质,而不是使用Nanite Pass Switch节点直接在材质图表内管理逻辑。
在材质实例中,Nanite重载材质插槽会强制使用默认值无(None),因此为父材质设置重载项不会导致该材质的子实例自动继承该重载项。
在以下示例中,雕像的静态网格体资产已启用Nanite,并应用了材质实例。 出于演示目的,材质实例的Nanite重载材质设置了一些简单的颜色变化。 左侧的静态网格体Actor显示了Nanite重载材质,因为网格体使用Nanite渲染。 右侧的静态网格体Actor显示相同的材质,直到为Actor设置禁止Nanite,禁用Nanite重载材质,以显示材质实例的非Nanite基础材质。
静态网格体组件选项:禁止Nanite
你可以使用单个场景Actor上的“禁止Nanite”设置,设定启用Nanite的静态网格体应在何时使用其Nanite表示。 这意味着,你可以将使用相同静态网格体资产的Nanite和非Nanite Actor混合使用。
下列示例展示了一个启用Nanite的静态网格体资产,左侧是Nanite网格体表示,右侧启用了“禁止Nanite”设置。
地形地貌
你可以在地形Actor上启用Nanite。 Nanite地形网格体会在后台重新编译,不会打断用户在编辑器内的工作流程。 Nanite地形不会提高地形分辨率,但可以让用户使用Nanite的运行时功能,如GPU剔除、自动化几何体流送和LOD。 它通常能提升运行时性能,对于开销较大的功能(如VSM)效果尤其显著。
如需了解如何为地形启用和使用Nanite,请参阅在地形中使用Nanite文档。
常见内容的性能
为了便于比较,我们以PlayStation 5的虚幻引擎5技术演示Nanite地形中的Lumen为例,记录了以下GPU耗时信息:
平均渲染分辨率为1400p,时序上采样到4K。
剔除和光栅化Nanite网格体的时间约为2.5毫秒(演示中几乎所有网格体都是Nanite网格体)
几乎使用的所有几何体都是Nanite网格体
几乎没有CPU开销,因为场景100%由GPU驱动
所有Nanite网格体材质的求值时间都约为2毫秒
场景中每个材质都只产生一次绘制调用,因此CPU开销很小。
将这些GPU耗时叠加后大约是4.5毫秒,相当于虚幻4中深度预通道加上基础通道的时间。 这使得Nanite可用于那些以60 FPS为目标的游戏项目。
这类数据的前提是,项目不存在上文提及的各种性能不利因素。 使用海量实例与大量独特材质也会增加开销,这也是目前Nanite的重点开发领域之一。