web-dev-qa-db-ja.com

iOS12がMetal Command Bufferの実行でエラーを引き起こしている、レンダリングがグリッチまたは発生しない

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]実行中のエラーのため、コマンドバッファーの実行が中止されました。発生したGPUハングエラー(IOAFコード3)

2018-09-22 09:34:37.718054-0500 OurApp [1286:87354]実行中にエラーが発生したため、コマンドバッファーの実行が中止されました。無視されます(以前または過度のGPUエラーが発生した場合)(IOAFコード4)

最初の2つのメッセージでは、レンダリングがグリッチになり、空白の画面が表示され、最後に画面でレンダリングが行われます。最後のメッセージでは、レンダリングは実際には発生せず、別のビューに移動するまでメッセージは表示され続けます。

このアプリはSceneKitを使用し、SCNViewをインスタンス化し、デフォルトのCIContextを使用します。また、Metalレンダラーを強制的に使用する物理ベースの照明モデルを使用します。アプリには単純なSCNNodeジオメトリ、円柱があります。円柱の各ジオメトリオブジェクトは、通常のテクスチャを取得します(合計3)。同じ拡散、金属、および粗さの値が、円柱のすべてのジオメトリオブジェクトに適用されます。

誰かがこの問題に遭遇しましたか?もしそうなら、どうやってそれを解決しましたか?

ありがとう

更新:この問題は、画像がシーンの照明環境として使用されている場合に発生するようです。

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

照明環境を使用しない場合、問題はなくなります。これは、Appleバグのように見え始めています。バグを登録します。アプリのモデルにリアルな反射を生成するために照明環境が必要なので、行き詰まります。

12

これはバグであり、高解像度環境の雷画像が原因です。

解決策は、これらの画像のサイズを変更することです。現在使用しているのは1000x500です。完璧に動作します。

1
Sergio

レンダリングモードとしてOpenGL ESを選択することで、今のところ問題を解決することができました。

enter image description here

1
Stefan

Appleに提出したバグのアップデートを受け取ったところです。

アップル開発者関係

この問題は、最新のiOS 12.2ベータ版で解決されると信じています。最新のiOSベータ版でテストしてください。それでも問題が解決しない場合は、バグレポートを更新して、調査に役立つ可能性のある関連ログまたは情報を追加してください。 iOSベータ https://developer.Apple.com/download/ "

1

私はまったく同じ問題を抱えているようです。また、ARKitとデフォルトのsceneKitエディターを使用して、画面がフリーズしたときにIOAFコード4エラーが無限に発生し続けました。

環境を「プロシージャルスカイ」から「なし」に変更して問題を解決しました。遅延やフリーズはなくなりましたが、ARオブジェクトに照明や環境がないため、これはほとんど解決策にはなりません。 iOS 12.2 Betaで修正されると思いますが、まだ更新されていません。

私のソリューションが他の人を助けることを願っています。

0
Ali Aljoubory