Apple Metal中的PBR渲染

时间:2018-03-29 03:28:59

标签: ios scenekit metal

我想主要在Metal-level上工作,但我需要一些对象的PBR。 我认为在SceneKit(基于Metal)中应该没有什么可以做的,这在Metal本身是无法完成的。但现在我对PBR渲染很困惑,因为它似乎是独家的SceneKit功能。它是如何工作的?是否有一些着名的着色器或其他东西,它可以在金属级别上复制吗?

1 个答案:

答案 0 :(得分:5)

PBR并不仅仅是着色器;它是表示和逼近物理现象的整体的经验方法。

SceneKit的PBR实现只是将PBR技术整合到渲染引擎中的一种方式。 Metal并没有明确支持PBR,因为Metal是一种低级API,并且与渲染技术无关。

如果您想要" SceneKit外观,"你可以假设转储SceneKit用来实现渲染的Metal shaders,但这只是图片的一部分。您需要了解如何从这些着色器函数构造渲染管道对象,并构建一个使用它们绘制网格的多遍渲染器(不仅仅是绘制到HDR渲染目标的初始传递,而是后续执行后处理效果的传递,如绽放,小插图,色调映射等)。您还需要确保您渲染的资产具有物理上可信的材料,这本身就是一种艺术。

我的GLTFKit框架包含一个Metal PBR渲染器示例实现。它更多地用于教学而非生产用途,但您可能会发现阅读PBR shader source很有意思。

关于同一问题的另一个问题,请参阅Apple的LOD with Function Specialization样本;它有一些漂亮,干净的PBR金属着色器。

如果你想进入并真正了解这里发生了什么,我建议你阅读一些关于这个主题的论文和样本。一些最基础的是Burley 2012Karis 2013Lagarde 2015。另请参阅Joey de Vries' articles有关该主题的信息。在过去的几年中取得了很大的进步,但这些东西对于入门很有帮助。