ホーム / Unreal Engine にはシェーダー スタッターの問題に対する解決策があります。

Unreal Engine にはシェーダー スタッターの問題に対する解決策があります。

2025/02/06 0:04:17
Unreal Engine 5.2 は、シェーダコンパイルによるスタッタリングを軽減するために、パイプラインステートオブジェクト(PSO)プリロードシステムを採用しました。従来の方法では、複雑なゲームにおける多様なPSOの組み合わせが追いつかなかったため問題が発生していましたが、新しいシステムは読み込み時に必要なPSOを予測して事前に準備します。これは、目に見える遅延を削減し、プレイヤーエクスペリエンスを向上させます。
Unreal Engine にはシェーダー スタッターの問題に対する解決策があります。

Unreal Engine 5.2 では、シェーダーコンパイルによるスタッタリングを軽減するために、パイプラインステートオブジェクト(PSO)のプリロードシステムが導入されました。これにより、PCゲームで現在深刻な問題となっているシェーダースタッタリングが緩和されます。

シェーダコンパイルのスタッタリング(シェーダスタッタリングとも呼ばれる)は、ゲームがシェーダを表示する直前に準備しなければならない場合に発生します。このため、目に見える遅延が発生し、シェーダが目立つように出現します。 この遅延は、高レベルのシェーダコードをさまざまなグラフィックカードが理解できる機械語に変換することが複雑であるためです。

最新のグラフィックスAPIであるDirectX 12とVulkanは、パフォーマンスを向上させるためにPSOs(ピクセルシェーダーオブジェクト)を導入しました。PSOsはシェーダとレンダリング設定を組み合わせることで、事前に準備できるようになります。しかし、多くの異なる材質やレンダリングオプションを持つ複雑なゲームでは、可能なPSOの組み合わせの数があまりにも多すぎて圧倒される可能性があります。Unreal Engineの「Bundled PSO Cache」などの従来の方法では追いつくことができなかったため、このキャッシュはトラッキングと管理に多くのリソースを必要としたのです。

Unrealの新しいPSOプリキャッシングシステムにより、以前の問題が解決されます。読み込み時に、マテリアル、メッシュ、全体的な設定を調べ、必要なPSO(パイプラインステートオブジェクト)を予測します。これらは、ロード画面中にまたは必要になる直前に準備されます。後からオブジェクトが入ってきた場合、PSOの準備が整うまで待つか、基本的なマテリアルを使用できます。これにより、目に見える遅延を削減できます。

エンジンの開発者がこの問題を解決しようと取り組んでいるのは素晴らしいことです。興味深いのは、これが技術の進歩によって生じる問題であるということです。過去には、ゲームはプリコンパイルされたシェーダーコードが付属しており、グラフィックスドライバがゲーム実行中にこれを変換していました。これは単純なゲームではうまくいきましたが、シェーダーが複雑になり、グラフィックカードが進化するにつれてパフォーマンスの問題が発生しました。

素材の変化に対応することは現在進行中で、一部のシェーダーにのみ適用されていることを覚えておいてください。たとえば、モーションブラーなどの効果に使用されるグローバルシェーダーは処理が異なり、まだ問題が発生する可能性があります。しかし、将来的には改善される予定です。

それでも、Unrealがプレイヤーにとってこの問題を解決するリーダーシップをとっているように思えます。願わくば、恒久的な解決策はシェーダーのスタッタリングを過去のものにするでしょう。