图形/仿真

具有网格着色的真实照明

网易雷霆火游戏使用网格着色,为正义创造美丽的游戏环境

十二月, 我们采访了钱海勇 ,网易游戏引擎开发研究员兼网易雷霆火游戏技术中心经理,看看他在正义团队将 NVIDIA 光线追踪解决方案添加到他们的开发管道中时学到了什么。他们的结果与当地 8K 简直惊人 DLSS 通过 RTXGI .

近日,网易推出了网格着色器支持正义。不仅是更新的环境令人惊叹,游戏支持 18 亿个三角形,在 NVIDIA 3060Ti 上以 4K 每秒 60 帧的速度运行。

为了了解更多关于实现和结果的信息,我们和网易游戏引擎开发人员邹宇恒( Yuheng Zou )坐了下来。他的工作集中于 Justice 中的渲染引擎,特别是 DirectX12 支持的 GPU 功能。

问:你想通过添加网格着色来达到什么目的?

我们的第一个想法是渲染一些非常详细的模型,这些模型可能需要大量的三角形。很快我们发现,我们可以将网格着色器与自动生成的 lod 结合起来,几乎只获得与分辨率相关的渲染复杂度,而不是多边形数。我们决定试试。由于网格着色器的巨大潜力,我们认为它将成为未来游戏的主流。

问:目前有哪些方法不适用于常规计算/绘制间接/传统方法?

简单的抽签就不适合这个。它缺乏处理比三角形更粗颗粒的网格的能力,比如小网格剔除。

Compute 或 draw indirect 可能很好,但我们确实需要对渲染管道进行巨大的更改。该算法的基本思想是首先进行剔除,然后绘制网格的有效部分。虽然可以通过使用 compute shader 进行剔除和压缩,然后进行间接绘制来实现,但在 highpoly 渲染环境下,两个步骤之间的数据交换有时会对 GPU 造成致命的影响。网格着色器从硬件级别解决了这个问题。

问:网格着色器如何解决这个问题?

网格着色器可以扩展几何阶段的可伸缩性,并且很容易集成到引擎运行时。它能够将剔除过程封装在一个 API 调用中,从而省去了繁琐的状态和资源设置过程。对于网格着色器,我们使用的消隐算法具有很大的灵活性。例如,在“阴影过程”( shadow pass )中,我们没有深度信息,因此在着色器中仅忽略遮挡消隐。

问:添加网格着色器的最终结果是你的玩家会很快注意到的,还是效果更微妙?

我们的技术定制了 highpoly mesh 流水线,包括制作、处理、序列化、流式处理和渲染,旨在为我们的玩家提供具有如此高保真内容的全新体验。事实上,它是有效的。《万佛库》发布后不久,我们的玩家发现呈现的模型比传统的模型要精致得多,论坛上贴了很多特写截图。在自定义的 highpoly 场景下添加网格着色器确实可以提高渲染效率,但是如何优化传统场景仍然很微妙,需要更多的工程工作。

问:什么样的环境从这项技术中受益最大?

我们的技术能够以难以置信的逼真度渲染模型的视差和轮廓。对于像洞穴这样的场景,这些细节可以产生视觉效果更好的图像。它还为中国古建筑、古家具、古饰品提供了“细致”的渲染效果,使其所承载的文化得以最大限度的公正表达。

问:在添加网格着色之前,您希望知道的一件事是什么?根据你的学习,你会有什么不同的做法?

对于这样详细的模型,大的纹理分辨率是必须的。我们将更加关注纹理加载或流式处理。这也对我们的网格/纹理压缩算法提出了进一步的要求。

问:对于第一次使用网格着色器的开发人员,还有其他建议吗?

网格着色器有可能大大提高几何阶段。但是,需要仔细分析和优化。我们强烈建议 NSight 用于调试和分析网格着色器。

使用网格着色器进行 GPU 消隐有时需要更改网格表示数据格式。一个聪明的数据格式设计将使您的尝试和错误,取得了更快的进展。

自 2016 年以来, Justice 一直与 NVIDIA 在中国进行视频游戏图形技术创新。作为中国市场上最好的 PC MMO 游戏之一,《正义》凭借其卓越的技术和优美的画面,在过去的三年里吸引了三千万玩家。

进一步了解 NVIDIA 为游戏开发者提供的技术资源 here .

 

Tags