Надеюсь, что мое решение поможет другим.

есть приложение, которое используетMetal оказывать. Это приложение корректно работает на устройствах под управлением iOS11. При использовании одного и того же приложения на устройствах под управлением iOS12 у нас начались глюки и иногда зависания при рендеринге. Мы также пытались перекомпилировать для iOS12 и получаем то же самое плохое поведение. На консоли мы получаем следующие разные сообщения:

2018-09-22 09: 22: 29.508576-0500 OurApp [1286: 84481] Выполнение буфера команд было прервано из-за ошибки во время выполнения. Сброшено (жертва ошибки / восстановления GPU) (код IOAF 5)

2018-09-22 09: 29: 55.654426-0500 OurApp [1286: 84625] Выполнение буфера команд было прервано из-за ошибки во время выполнения. Вызванная ошибка зависания графического процессора (код IOAF 3)

2018-09-22 09: 34: 37.718054-0500 OurApp [1286: 87354] Выполнение буфера команд было прервано из-за ошибки во время выполнения. Проигнорировано (для того, чтобы вызвать предыдущие / чрезмерные ошибки GPU) (код 4 IOAF)

С первыми двумя сообщениями рендеринг кажется затруднительным, когда отображается пустой экран, а затем, наконец, рендеринг происходит на экране. С последним сообщением рендеринг фактически не происходит, и сообщение продолжает отображаться, пока мы не перейдем к другому представлению.

Это приложение используетSceneKit, создаетSCNView и использует значение по умолчаниюCIContext, Он также использует модель физического освещения, которая заставляетMetal рендер для использования. Приложение имеет простойSCNNode геометрия, цилиндр. Каждый геометрический объект цилиндра получает нормальную текстуру (всего 3). Одинаковые значения диффузности, металличности и шероховатости применяются ко всем геометрическим объектам цилиндра.

Кто-нибудь сталкивался с этой проблемой? Если да, то как ты решил это?

Спасибо

ОБНОВЛЕНИЕ: проблема, кажется, вызвана, когда изображение используется в качестве среды освещения сцены:

let scene = SCNScene()
scene.lightingEnvironment.contents = UIImage(named: "ourLightingEnvironmentImage")

Когда среда освещения не используется, проблема исчезает. Это начинает выглядеть как ошибка Apple, мы ее опубликуем. Мы застряли, потому что нам нужна световая среда для реалистичного отражения моделей в нашем приложении.

Ответы на вопрос(3)

Ваш ответ на вопрос