BundledPSOCacheを利用するとアプリの初回起動時にコンパイル処理が発生します。
このコンパイル処理の終了を待ってアプリの処理を開始したいのです。
今のところ、FShaderPipelineCache::NumPrecompilesRemaining();が0になるまで待てば、初回起動時のコンパイル処理が終了すると想定してます。
もしも、このメソッドに加えてそれ以外に待つための判定が必要ならば、教えて下さい。
BundledPSOCacheを利用するとアプリの初回起動時にコンパイル処理が発生します。
このコンパイル処理の終了を待ってアプリの処理を開始したいのです。
今のところ、FShaderPipelineCache::NumPrecompilesRemaining();が0になるまで待てば、初回起動時のコンパイル処理が終了すると想定してます。
もしも、このメソッドに加えてそれ以外に待つための判定が必要ならば、教えて下さい。
再現手順
お世話になっております。
本件に関しましては、FShaderPipelineCache::NumPrecompilesRemaining()で監視して頂く方法の他に、GetPrecompilationCompleteDelegateで取得可能なDelegateで検知する方法がありますが、以下ドキュメントにありますように、NumPrecompilesRemainingを用いてロード画面で対応を行う方法で問題ない認識です。
>FShaderPipelineCache::NumPrecompilesRemaining() は、バンドル キャッシュと PSO 事前キャッシュの両方で、未処理の PSO 事前キャッシュ コンパイル数を確認するのに有用です。ロード画面のロジックを変更し、この数値をチェックして、ゼロになるまでロード画面を表示し続けることができます。
https://www.docswell.com/s/EpicGamesJapan/ZPMG8Z-UE4_UFE19_Mobile_ShaderCompile_PSOCache#p137
※補足情報となりますが、r.ShaderPipelineCache.StartupMode=0で起動時のコンパイルを止めてFShaderPipelineCache::ResumeBatching()を実行することで任意のロード画面等でコンパイルすることも可能です。
上記ドキュメント等を参考に対応を検討いただければと思います。
よろしくお願いいたします。
承知しました。ありがとうございます。