use*_*411 1 ios scenekit metal
我想主要在金属级别上工作,但是我的某些对象需要PBR。我认为在SceneKit(基于Metal)中应该没有什么可以做的,而在Metal本身中是不能完成的。但是现在我对PBR渲染感到困惑,因为它似乎是SceneKit的独有功能。如何运作?是否有一些众所周知的着色器或其他东西,可以在金属级上复制吗?
PBR不仅仅与着色器有关;这是代表和近似物理现象的整体,经验性方法。
SceneKit的PBR实现只是将PBR技术整合到渲染引擎中的一种方法。由于Metal是底层API,并且与渲染技术无关,因此Metal显然不支持PBR。
如果希望“ SceneKit外观”,可以假设转储SceneKit用于实现其渲染的Metal着色器,但这只是图片的一部分。您需要了解如何从这些着色器函数构造渲染管道对象,以及如何构建一个通过它们渲染网格的多遍渲染器(不仅是绘制到HDR渲染目标中的初始遍,还包括执行后处理效果的后续遍,例如花朵,小插图,色调映射等)。您还需要确保要渲染的资产具有物理上合理的材料,这本身就是一门艺术。
我的GLTFKit框架包括一个Metal PBR渲染器示例实现。它更多地用于指导而非生产用途,但是您可能会发现阅读PBR着色器源很有趣。
关于同一问题的另一种见解,请参阅Apple的具有功能专长的LOD示例。它具有一些漂亮,干净的PBR金属着色器。
如果您想进入并真正了解这里发生了什么,我鼓励您阅读有关该主题的许多论文和示例。一些最基础的是Burley 2012,Karis 2013和Lagarde 2015。另请参阅Joey de Vries关于该主题的文章。在过去的几年中已经取得了很多进步,但是这些东西对于入门非常有用。