HoloLens研发实战:Graphics Tools如何实现高效实时照明技术
帮助开发者在维持性能预算的前提下提升MR应用的视觉质量
(映维网 2021年04月23日)Unreal Engine允许开发者为各种实时体验创建业界领先的视觉效果。与其他平台相比,混合现实具有全新的视觉挑战和机遇。MRTK Unreal的图形工具可以帮助开发者充分利用相关的视觉机遇。
Graphics Tools这个Unreal插件包含代码、blueprint和示例asset,旨在帮助开发者在维持性能预算的前提下提升MR应用的视觉质量。
当谈论混合现实中的性能时,你常常会听到“HoloLens 2的视觉潜能”等问题?HoloLens 2的移动GPU支持多种功能,但发挥其优势并避免GPU的弱点非常重要。
HoloLens 2的目标帧率为每秒60帧。如果应用没有达到这个帧速,用户体验就会出现减损,例如影响全息图稳定性、手部追踪和世界追踪。
一个常见的瓶颈是如何在混合现实中实现高效的实时照明技术。专注于为MR开发者构建工具的微软软件工程师卡梅隆·米卡(Cameron Micka)日前撰文概述了Graphics Tools是如何解决这个问题。下面是映维网的具体整理:
1. 简化的照明
默认情况下,Unreal使用HoloLens 2的移动照明渲染路径。这种照明路径非常适合智能手机和手持设备,但对于HoloLens 2而言成本太高。为了确保开发者能够访问性能合适的照明路径,Graphics Tools包括一个可通过MF\GTDefaultLit material函数访问的简化基物(基于物理)照明系统。所述照明模型限制动态照明的数量,并强制禁用特定图形功能。
如果你熟悉Unreal的默认照明材质设置,它非常类似于MFïGTDefaultLit函数的输入。例如,将值改为“Metallic”和“Roughness”输入可以提供令人信服的金属表面,如下所示。
如果你有兴趣了解更多关于照明模型的信息,建议你看看HLSL着色器代码,并且参阅这份文档。
2. 性能分析
通常情况下,你在开发过程中会发现应用没有达到目标帧速率。你需要找出原因,而性能分析工具将能派上用场。Unreal引擎拥有大量的分析资源(我们最喜欢的是Unreal Insights,它从Unreal Engine 4.26开始支持HoloLens 2)。
上述大多数工具都需要将HoloLens 2接到开发PC,这对于精细分析非常有用,但通常你只需要概述头显内的性能。Graphics Tools的GTVisualProfiler actor能够提供有关当前帧时间(以毫秒为单位)、绘制调用计数和可见多边形计数的实时信息,如下所示。
在上图中,开发者可以一眼看出应用受到GPU时间的限制。所以,强烈建议在运行和调试应用时始终显示帧速率视频以持续跟踪性能。
对于MR开发者而言,性能可能是一个不断变化的挑战,而要实现合理的性能,其涉及的知识范围非常巨大。Graphics Tools的性能分析文档提供了如何处理应用性能的一般性建议。
3. 窥视全息图
一系列的开发者要求能够“窥视”全息图的工具。在查看复杂组件时,切割模型以查看通常被遮挡的部分非常有用。为了解决这个问题,Graphics Tools提供了一个名为剪裁原语(clipping primitives)的功能。
剪裁原语表示将其状态和转换数据传递到材质的分析形状。然后,材质函数可以获取所述原语数据并执行计算,例如返回到形状曲面的符号距离。Graphics Tools包括以下剪裁原语形状。
剪裁原语可以配置为在其形状内或形状外剪裁像素。剪裁原语的其他用例包括作为三维模具测试,或者作为从分析曲面获取距离的机制。能够计算一个着色器内的表面距离能够实现如同上图所示的橙色边缘发光效果。
更多关于剪裁原语的信息请参阅这份文档。
4. 令一切恰如其分
Unreal引擎拥有一个强大的材质编辑器,可允许没有着色器经验的用户进行创建和探索。对于开发者来说,Graphics Tools包含一系列现成的效果:
- 近距离照明
- 程序网格纹理和照明
- 模拟 虹色,边缘照明+更多
要查看所述效果,以及上面所描述的一切,Graphics Tools提供了一个已托管z至GitHub示例插件。你同时可以从所述页面下载并侧载一个预构建版本的示例应用程序。