如何为SceneKit预编译PBR着色器?

pus*_*rix 10 ios scenekit metal arkit

我注意到如果你有一个空场景,然后用基于物理的光照加载3D模型,那么当对象出现时会有一点点凹凸不平.如果我之后添加一个不同的对象,那就不会发生口吃.

查看分析器,看起来默认的PBR着色器正在第一个慢帧中进行编译.是否可以预编译这些着色器,以便在我第一次渲染模型时不会发生这种情况?

类似的问题已经在其他框架中提出,比如Three.js.似乎是一个聪明的事情要防止.

ARG*_*Geo 0

如果要预编译基于物理的渲染 (PBR) 或任何其他常规 SceneKit 的着色器,则必须使用一个SCNProgram完整的 Metal 着色器程序类来替换 SceneKit 的几何体或材质渲染。

这是一个包含代码片段和有用链接的页面,向您展示如何使用顶点或片段预编译的 Metal 着色器。