SceneKit - это абстракция, построенная на OpenGL / Metal. Он объединяет часто используемые операции, модели затенения и т. Д. В приятную среду, поэтому программистам не нужно реализовывать весь конвейер рендеринга. Вам не нужно переходить в Metal для выполнения часто поддерживаемых операций, таких как физическое рендеринг.
Чтобы реализовать PBR, вам нужно указать, что ваш объект использует PBR, и установить различные входные данные, необходимые для визуализации эффекта:
let material = firstNode.geometry?.firstMaterial
material?.lightingModelName = SCNLightingModelPhysicallyBased
material?.diffuse.contents = UIImage(named: "albedo.png")
material?.roughness.contents = UIImage(named: "roughness.png")
material?.metalness.contents = UIImage(named: "metalness.png")
material?.normal.contents = UIImage(named: "normal.png")
Вам нужно только перейти в Metal, если вы пытаетесь реализовать эффект, который не поддерживается SceneKit. Надеюсь, это поможет!