Unreal Engine 5(UE5)で「Take High Res Screenshot」を実行した際に、「シェーダをコンパイル」という表記が出て長時間待たされることがあります。この現象は特にプロジェクトが大規模になるほど顕著に発生し、開発のストレス要因となります。

本記事では、その原因と解決策について詳しく解説し、ブループリントを活用してこの問題を回避する方法を紹介します。

なぜ「シェーダをコンパイル」が発生するのか?

UE5では、スクリーンショットを高解像度で取得する際、一時的にレンダリング設定が変更されることがあります。この際、新しいシェーダのコンパイルが必要になると、プロジェクトのシェーダ数に応じて大幅な処理時間がかかる場合があります。

特に以下の要因が関係しています:

  • 使用しているマテリアルの種類が多い
  • シェーダキャッシュが適切に保存されていない
  • プロジェクトの設定で頻繁にマテリアルの変更が発生している

解決策1:シェーダキャッシュを事前にコンパイル

まず、シェーダのキャッシュを事前にコンパイルしておくことで、スクリーンショット時のコンパイルを減らすことができます。

以下の方法で事前にシェーダをコンパイルできます:

  • プロジェクトを開いた後、「シェーダコンパイル」が完了するまで待つ
  • シェーダキャッシュを保存するために、「プロジェクト設定」→「シェーダキャッシュの有効化」を行う

解決策2:ブループリントを使ってキャッシュを作成

ブループリントを使って、あらかじめシェーダをロードし、高解像度スクリーンショット時の負荷を軽減できます。

手順は以下の通りです:

  1. ブループリントのレベルブループリントを開く
  2. 「Begin Play」イベントを追加
  3. 「Load Asset」ノードを使い、使用するマテリアルを事前にロード
  4. 「Delay」ノードを挟み、ロードが完了するまで少し待機

この方法により、ゲーム開始時にシェーダが事前に読み込まれ、スクリーンショット時のコンパイルを削減できます。

解決策3:「r.ForceAllCoresToCompileShader」コマンドを使用

UE5には、シェーダコンパイル時にすべてのCPUコアを使用する設定が存在します。コンソールコマンドに以下を入力することで、コンパイルを高速化できます。

r.ForceAllCoresToCompileShader 1

この設定をブループリントから実行する場合は、「Execute Console Command」ノードを使用してコマンドを実行します。

まとめ

「Take High Res Screenshot」実行時に「シェーダをコンパイル」が発生する問題を解決するために、以下の対策を試してみてください:

  • シェーダキャッシュを事前にコンパイルする
  • ブループリントを活用してシェーダをロードする
  • コンソールコマンドでCPUの使用効率を向上させる

これらの方法を実践することで、スクリーンショット撮影時の待ち時間を大幅に削減できるはずです。ぜひ試してみてください!