缓冲区|UE渲染师Dyomin:做次世代手游,可以用好这项技能( 四 )



缓冲区|UE渲染师Dyomin:做次世代手游,可以用好这项技能
文章插图

我们做反向的深度测试,也只对同时通过深度测试和模板测试的像素着色。使用这种算法后,你可以仅计算与光照体积相交的像素。不过这会增添额外的绘制调用,以及各绘制调用之间的状态切换。
但在我们的测试中,这项优化在大部分移动端的情况下仍然是有益的。尤其是你的场景中并没有很多局部光源的情况,因此在你使用延迟着色时,这项优化是默认启用的。但你可以随时禁用它,只要使用r.Mobile.UselightStencilCulling即可。
【 缓冲区|UE渲染师Dyomin:做次世代手游,可以用好这项技能】我们依次渲染各个局部光照,按照其贡献调整最终场景颜色。但当屏幕上有许多局部光源时,为每个光源进行绘制调用,会消耗大量性能。我觉得这个转折点大概是个可见绘制调用个可见光源,所以如果你使用模板裁剪优化的话,就必须调用。
你会有个只为了渲染光源的大概绘制调用,当存在大量重叠光源时,性能消耗也会很大,因为这要消耗大量GPU算力。不过可以采用的办法是,将视野分散到各个图块并在帧开始时运行一个计算任务,由此生成光源列表。它们会影响每个集群,在渲染平行光时,我们查看光源列表,可以将影响到当前像素的所有局部光源融为一体。这意味着我们可以在一次绘制调用中应用所有局部光源的光照。
用来裁剪局部光源的优化,在延迟着色时,无法与集群并用。这种集群延迟着色是被默认禁用的,所以你只能在需要大量可见光源时才能开启它。
关于移动端延迟着色的性能表现,我们尚未完全探明。但在更早期的测试中,它在GPU上的速度比前向着色慢了5%。但我们可以使用了一些测量工具来查看数据。
结果表明,延迟着色在GPU上的计算开销要少得多,使用的内存带宽也少得多,所以它读写的内存更少。
我们计划在《堡垒之夜》移动版上,在某些情况下来启用它,测试延迟着色。
结语:
相比前向着色,延迟着色可能是更好的选择。移动端延迟着色是一项新功能,它带有实验性质,所以对我们来说,它还有很大改进空间。
首先就是优化。我说过,它目前采用位的G缓冲区,我觉得我们可以把它降低到位。目前它只支持默认有光照的着色模型,以及无光照的。所以我们要为它添加更多着色模型,至少要有次表面着色和透明涂层。但要添加这些着色模型,我们就需要在G缓冲区内增加额外的空间,所以我们要让它们变得更精简。
有了延迟着色,就能够有效地渲染光照函数,以及IES光照配置文件。所以我们也添加了IES光照配置文件。
还有,目前移动端前向渲染可以适用于聚光灯的动态阴影,但延迟渲染做不到。因此我们也需要添加前向渲染。

【精彩生活】jing111.com小编为您精选以下内容,希望对您有所帮助: