過去 2 年間で、ビデオ ゲームを技術的に分析する際に私たちの語彙に入ってきた正確な言葉が 2 つあります。シェーダーe吃音。 2020 年以前は、これら 2 つの概念は、非常に技術的な分析を除いて、ビデオ ゲーム制作とはほとんど関連付けられていませんでした。
ソース コードやグラフィックス エンジンのコーディング分野におけるあらゆる進歩は、現在のプログラミング方法の新たな限界の発見も伴い、これまで対処されていなかったいくつかの問題が明らかになります。テクノロジーがここまで発展するまでは、今日の問題の多くは計算も予測もできませんでした。最高の解像度、細部のきれいさ、照明、影、ポリゴン モデルのリアリズムを求める競争により、開発者が製品を最適化するために戦わなければならない新たな困難が生じています。
この特別番組では、グラフィックの詳細度の増加が、ビデオ カードやプロセッサの流動性を損なうなど、ますます複雑になり理解しにくいビデオ カードやプロセッサを対象とした計算プロセスによって、最近の作品で見つかった最適化の問題にどのようにつながっているかについてお話します。画像の乱れが目立ち、ロード時間がますます安定しているゲーム。
シェーダーとは何ですか?
このトピックをさらに深く掘り下げるには、技術的な部分から始めて基本から始める必要がありますが、簡単な言葉で説明されています。それで、シェーダーとは何ですか?シェーダにはさまざまなタイプがありますが、これらは一連のコマンド、またはむしろ命令であり、これらが一緒になって画面上の画像の表示に作用する小さなプログラムを作成すると考えることができます。たとえば、三角形の頂点に適用される頂点シェーダーや、明らかに個々のピクセルに適用されるピクセル シェーダーがあります。
基本的に、ゲームのコードのプログラミングによって、ゲーム中に何をプレイするかが決まります。シェーダは再生方法に影響します。このプロセスは、紙の上に絵を描くことに似ています。形状の輪郭が描かれたら、細部、影、色の作業に進みます。シェーダーがシーンに入り、色、ジオメトリ、明るさ、コントラスト、シャープネスなど、あらかじめ確立されたオブジェクトの多くを実現します。
これらすべての側面をカバーするために、今列挙したさまざまな影響範囲で機能するさまざまなタイプのシェーダーが存在します。たとえば、ピクセル シェーダーやレイ シェーダー (レイ トレーシングの出現で誕生) は、どのようにするかについての命令を与える役割を果たします。照明とテクスチャリングが画面に表示されます。ビデオ ゲームは、グラフィック コンテンツが非常に詳細でリアルタイムに計算されるため、他のプログラムに比べてより大きな計算能力を必要とし、画面上の各要素が何千もの命令を受け取ることになります。
最新の CPU と GPU の能力により、すべての命令の計算は非常に高速になりますが、前述したように、ピクセルに対するシェーダーの作業は非常に複雑です。プロセッサーとグラフィックス カードが強力であればあるほど、コンポーネントが呼び出されるワークロードが低くなり、グラフィック パフォーマンスとゲームの流動性が向上することは明らかです。これは 3D 描画やビデオの背後で行われる作業がどのように機能するかを部分的に説明していますが、画像処理プロセスとそのグラフィック レンダリングはこれで終わりではありません。
シェーダーのコンパイル時間
シェーダーがプロセスを引き継ぐ必要がある情報の概要が示されたら、すべてを画面上に表示されるものに具体的に変換する 2 段階のステップがあります。まずプログラマがどれを選択するかAPI、アプリケーションプログラミングインターフェース、次のような利用可能な一般的なものに依存します。ダイレクト3D図書館バルカンこれにより、シェーダー言語が汎用コードに変換され、その後 GPU ドライバーが介入して、この結果をビデオ カード上のプロセッサが直接処理できるバイナリ コードに変換します。非常に表面的に要約すると、マシンに存在するハードウェア上で正しく実行するには、すべてのソース コードまたはシェーダーを「変換」する必要があります。
変換が完了すると、計算プロセスは GPU によって処理されます (イメージとしてはほんの数秒)。高性能コンポーネントを使用している場合、すべてがメイン画面上で行われることを考えると、それはまったく認識されません。アップロード中に。ただし、ビデオ カードが古い場合、またはドライバーが正しく最適化されていない場合は、GPU が実行する計算に優先順位を与えることを強いられるため、スタッタリング現象が発生する可能性があり、従来のビデオ カードに比べて追加の時間が必要になります。標準積載。
この導入部では、最近作られたゲームでますます見られるようになった問題、つまり数年前まで認識されていなかったか、少なくともそれほどはっきりとは認識されていなかった問題について説明します。このテクノロジーの黎明期には、シェーダーに割り当てられるコマンドは最大 10 個でしたが、最近のプロダクションでは数千をはるかに超えていると考えてください。これらすべては、大まかに、なぜ最近のタイトルでグラフィックの問題が増えているのかを示しています。ビデオ ゲーム内での詳細の増加により、フィールド内のシェーダーの数が増加します、シェーダが増えると計算も増え、多くの場合、問題も増えます。
オープンワールドの問題点
実際、それは偶然ではありません近年のオープンワールドではこれらの問題が発生しています: サイバーパンク 2077 とエルデン リングは、2 つの基本的でよく代表的な例です。これらはプレイ可能なサーフェスの点で非常に大きなゲームであるため、シェーダーはゲーム領域全体に対して即座にコンパイルされるわけではなく、特定の領域に近づくとプロセスが発生します。もし私たちが Liurnia を探索していることに気づいた場合、私たちの PC は現時点ではコンパイルされていません。 Caelid のシェーダを計算しますが、その影響範囲に近づいたとき、または高速移動時のロード中にのみ計算されます。
これは技術的な問題を回避するための実際的な解決策であるとは限りません。また、これらすべてはゲームをプレイするハードウェアによって異なります。PlayStation 5 や Xbox シリーズなどのコンソールでこれにより、PC 分野で考えられるすべてのハードウェアの組み合わせを最適化するために開発者が対処しなければならない頭痛の種のほとんどが解消されます。
コンソール ゲームに取り組んでいる開発チームは、ハードウェアが静的であること、つまりすべての PlayStation と Xbox には特定のプロセッサと特定のグラフィックス カードが搭載されているのに対し、PC の場合は膨大な数の要素を考慮する必要があることを知っています。 CPU と GPU の組み合わせ。これにより、コンピュータ上で問題が指数関数的に発生する可能性が高まる理由が部分的に明らかになりました。
吃音はどうして起こるのでしょうか?
上で説明したシェーダーのローディング画面の状況は、いくつかの問題を防ぐために開発者が採用した解決策の 1 つです。 3GB NVIDIA RTX 1060 と第 8 世代インテル Core i7 を搭載した PC で昨年のアンチャーテッドの移植版を起動すると、メイン メニューで、シェーダーがロード中であるため、この操作が終了する前にゲームを開始すると、グラフィックレンダリングが損なわれます。これは、開発者がゲームの後半で問題が発生しないように、プレイヤーに最初は長く待たせることを好んだためです。
もう 1 つの解決策は、必要な場合にのみシェーダーをロードすることです。;この場合、初期ロードは短くなりますが、ゲーム内で問題が発生する可能性があります。実際にはゲームが引き継がれる可能性があります。吃音つまり、実行中のフレームの遅延または損失です。開発者が実行した最適化プロセスによってシェーダー ライブラリが適切にロードされていれば、ゲーム中にこのような迷惑なグラフィックの問題は発生しないはずです。
最近のビデオゲームもより複雑になっているので、シェーダはますます複雑かつ長くなり、処理に必要なワークロードが大幅に増加しています。途切れの問題を克服するには、シェーダーを少しずつコンパイルし、メイン メニューで一部を非表示にし、カットシーン中に一部を非表示にするという中間的な方法がありますが、明らかにすべてがゲームをプレイするハードウェアに依存したままになります。
解決策は何ですか?
残念ながら、プレイヤーができることはほとんどなく、ゲーム中に CPU を可能な限り解放したままにし、バックグラウンドで他の重要でないプロセスをすべて閉じることしか選択肢がありません。最適化作業は完全に開発者の手に委ねられており、リリース後の修正パッチも含めてこれらの問題を解決するために資金と時間を費やします。すべての開発チームが、ゲームのデビュー前にゲームを徹底的にチェックするために膨大なリソースを費やしていると言いたいところですが、現実には、他の多くのチームと同様、Q&A 部門はますます中心的ではなくなっています。
5 年前を振り返ると、吃音という言葉を知っている人はほとんどいなかったでしょう。吃音の影響を受ける作品もほとんどありませんでした。その理由は数多くありますが、パブリッシャーによってできるだけ早くゲームを公開し、作業中に修正を加えるように強制された開発者の「怠惰」だけが厳しい理由だけではありません。プログラミングはますます複雑になり、ハードウェアの組み合わせは無限になり、生産時間は劇的に増加しました。
現在、シェーダーのロードの選択をプレイヤーに委ねているゲームはほんの一握りです。前述のアンチャーテッドと同様に、Horizon Zero Dawn もメイン メニュー画面でコンパイルする可能性を提供しますが、予想時間が長くなった場合 (明らかに、ローエンド構成で見られる状況) にコンパイルをスキップするオプションも提供します。一方、ホグワーツ レガシーでは、起動中およびメイン メニューでほとんどのシェーダーがコンパイルされ、残りは実行中にロードされたままになります。
ぎくしゃくした未来
GPU メーカーもこのプロセスで基本的な役割を果たしており、AMD と NVIDIA は一般的に使用されるシェーダーを PC の特定のフォルダーに保存していますが、更新のたびに削除され、上書きされます。 Steam もその役割を果たそうとし、OpenGL または Vulkan 経由で動作するすべてのゲーム用のキャッシュ ストレージ サービスを提供していますが、実際に見ようとすると、このフォルダはほとんどの場合空です。
いくつかの予防策にもかかわらず、ベテランであるかどうかにかかわらず、すべては開発者の手に委ねられており、開発者はこの問題に対処し、ゲームに重大な問題が発生しないようにするための時間と経験の両方を持たなければなりません。この分野のペースと、市場での競争力を維持するための収益化競争を考慮すると、将来に対して暗いビジョンを持つのは当然のことです。フィールドに出かけるDLSS と将来の FSR 3 の概要これは、人工知能のおかげで、わずかな「人間」の努力で 1 秒あたりのフレーム数を大幅に向上させることができますが、現代の制作を悩ませる問題の大釜に追加される亜種であり、テスト段階での品質管理に費やす時間が削減されます。
希望は、グラフィックス エンジンがソフトウェア ハウスによって管理しやすくなることです。ソフトウェア ハウスもまた、これまでお話してきたように、ますます新しく要求の厳しい機能に対応する必要に迫られています。Unreal Engine 5 の詳細な特集で: オブジェクトの表示に影響を与える追加のプロセス。その結果、他の計算が作成され、その一部は処理に不必要な負担を与えます。グラフィックのインパクトを最大限に高める競争は、決して終わることがないようです。