У нас есть приложение, которое использует Metal
для рендеринга.Это приложение корректно работает на устройствах под управлением iOS11.При использовании одного и того же приложения на устройствах под управлением iOS12 у нас начались глюки и иногда зависания при рендерингеМы также пытались перекомпилировать для iOS12 и получаем то же самое плохое поведение.На консоли мы получаем следующие разные сообщения:
2018-09-22 09: 22: 29.508576-0500 OurApp [1286: 84481] Выполнение буфера команд было прервано из-за ошибки во времявыполнение.Отклонено (жертва ошибки / восстановления графического процессора) (код 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] Выполнение буфера команд было прервано из-за ошибки во время выполнения.Игнорируется (для того, чтобы вызвать предыдущие / чрезмерные ошибки графического процессора) (код IOAF 4)
При первых двух сообщениях рендеринг выглядит сбойным, когда отображается пустой экран, а затем, наконец, рендеринг происходит на экране.С последним сообщением рендеринг фактически не происходит, и сообщение продолжает отображаться, пока мы не перейдем к другому представлению.
Это приложение использует SceneKit
, создает экземпляр SCNView
и использует значение по умолчанию CIContext
,Также используется модель Physical Based Lighting, которая заставляет использовать рендерер Metal
.Приложение имеет простую SCNNode
геометрию, цилиндр.Каждый геометрический объект цилиндра получает нормальную текстуру (всего 3).Одинаковые значения диффузии, металличности и шероховатости применяются ко всем геометрическим объектам цилиндра.
Кто-нибудь сталкивался с этой проблемой?Если да, то как вы решили это?
Спасибо
ОБНОВЛЕНИЕ: Кажется, проблема возникает, когда изображение используется в качестве среды освещения сцены:
let scene = SCNScene()
scene.lightingEnvironment.contents = UIImage(named: "ourLightingEnvironmentImage")
Когда среда освещения не используется, проблема исчезает.Это начинает выглядеть как ошибка Apple, мы ее опубликуем.Мы застряли, потому что нам нужна световая среда для реалистичного отражения моделей в нашем приложении.