SceneKit 中的闪电选项

lightning options in SceneKit

SceneKit 提供了一堆灯光属性。我不确定他们到底做了什么。这是 SceneKit Editor 的截图。我正在寻找优化游戏性能的方法并遇到了这些属性。这些属性是否有助于性能?有些应该避免吗?

透明模式定义当对象部分透明时发生的情况。在这里,您可以设置乘法、加法、滤色等模式来计算当相机 "sees through" 部分透明的物体到它后面的任何东西时会发生什么。不幸的是,他们选择在这里使用 OpenGL 术语。所以...不知道。

反光度是 "Specular Highlights" 的另一种说法,它是 shine/sparkle 光线从光源反射、离开物体并直接射向相机的程度。一般来说,这有点像面积*强度类型的东西,但 SceneKit 愚蠢地简化了它,所以除非你试验,否则你真的不知道它的作用。

类似地,菲涅尔描述了在不同的反弹角度(那些不是直接来自光源、离开物体并进入相机)发生的情况,这最适用于制造金属和玻璃(以及木材和塑料)通过控制有角度的光在表面上的反射方式以及它的作用看起来更逼真。它不应该只是一个设置,因此,再次进行更多测试以找出它控制的内容。

照明模型也是关于这种镜面高光的。这些决定了高光的形状,最重要的是。

之后我猜的比我上面的还要多

一般来说这些都会对性能有一定的影响,但并不显着。最糟糕的是重型混合模式,这可能会使 GPU 在透明区域顶部的工作量增加一倍或三倍。 None 这些东西会给你带来显着的性能提升,除非你在某种程度上处于性能的边缘,并且它们的不同足以让你低于这个水平。

根据我对您之前问题的了解,我认为您在使用 Scene Kit 时还有其他问题,可能与 Scene Kit 有关。

我建议创建您的场景,根据您的喜好对其进行调整,然后基于该场景创建光照贴图。

假设您随后将场景中的动态灯光数量减少到最大 3 个,这将极大地提高性能。

我看了一个 WWDC 视频,视频中有人说对 GPU 的绘制调用次数乘以场景中的灯光数量。