BLOG

シェーダーとは何か?そしてゲームはなぜそれらをプリロードする必要があるのか?

最終更新日:

  このページはDeepLによって自動的に翻訳されました。 Switch to English

シェーダーは、レンダリングプロセスの一環としてGPU上で動作する小さなプログラムです。3Dモデルのジオメトリ変換からテクスチャの適用、照明、影、ポストプロセス効果の処理まで、あらゆることを担当します。これらは現代のゲームに不可欠であり、ゲームがこれほど印象的な見た目を持つ理由の一部です。

しかし、常にそうであったわけではない。初期のグラフィックカードは固定機能ハードウェアに依存しており、テクスチャリングやライティングといったタスクごとに専用のユニットが割り当てられていた。これらのユニットは当時としては強力だったが、同時に柔軟性に欠けていた。ゲームがより複雑で視覚的に野心的なものになるにつれ、固定ハードウェアは視覚効果と創造的な自由度の両方を制限するようになった。プログラマブルシェーダーはそうした制限を取り除いた。

battlefield 6 game modes explained rush conquest escalation

ピクセルシェーダー

最も早く広く使われたシェーダーはピクセルシェーダーである。これらは画面上の各ピクセルの最終的な色を決定し、照明計算、影、テクスチャ、透明度、ぼかしやセルシェーディングなどのポストプロセス効果を処理できる。その後すぐに頂点シェーダーが登場し、開発者はジオメトリがレンダリングされる前に位置、色、テクスチャ座標などの頂点データを操作できるようになった。

その後、ジオメトリシェーダーが登場した。これはグラフィックスパイプライン内でリアルタイムにジオメトリを生成・変更できる。パフォーマンスコストのため現在ではあまり使われていないが、プロシージャルジオメトリやパーティクルエフェクトなどの効果を実現した。テッセレーションシェーダーはこの概念を拡張し、モデルデータを増やさずに表面を滑らかに見せるため、幾何学的詳細を動的に増加させる。

Borderlands 4 Screenshot 10

メッシュシェーダー

近年、現代的なAPIではタスクシェーダーとメッシュシェーダーが導入されている。これらは従来の頂点シェーダー、ジオメトリシェーダー、テッセレーション処理の一部を置き換え、開発者がジオメトリの生成と処理方法をより柔軟に制御できるシステムを提供している。

レイトレーシングシェーダーが新たに追加されました。これらはシーン内を光線が辿る経路を追跡することで、反射、影、グローバルイルミネーションなどの効果を実現します。DirectX RaytracingおよびVulkanを通じてサポートされており、プレイ可能なパフォーマンスレベルで動作させるには比較的新しいグラフィックカードが必要です。

Cyberpunk 2077 Neon

シェーダーをプリロードするとはどういう意味ですか?

シェーダーとはそういうものなら、なぜプリロードにそんなに時間がかかるのか?そしてプリロードとは実際には何を意味するのか?

この用語はやや誤解を招く。実際には、シェーダーのプリロードとは、単に読み込むのではなく、コンパイルしてキャッシュすることを意味する。ゲーム開発者は、プレイ中にオンザフライでシェーダーをコンパイルするか、ゲームプレイ開始前に事前にコンパイルするかを選択できる。

ゲームプレイ中のシェーダーコンパイルは単純なケースでは機能するが、新たなエフェクトやエリアに遭遇するとラグやカクつきを招くことが多い。多数のシェーダーを同時にコンパイルする必要がある場合、フレーム時間が急激に悪化する可能性がある。このため、オープンワールドゲームではこの手法の影響が顕著に現れる。過度なオンザフライコンパイルは、PC最適化が不十分な兆候であることが多い。

Screenshot of Apex Legends Preloading Shaders

プリロードの利点

シェーダーのプリロードは、事前にコンパイルして結果をキャッシュに保存することでこの問題を回避します。コンパイル済みのシェーダーはゲームプレイ中に即座に再利用可能となり、パフォーマンスが向上します。欠点は、ゲームを初回起動時にシェーダーのコンパイル処理を待機する必要がある点です。

大規模なゲームアップデートやグラフィックドライバーの更新後には、この待ち時間が再発する可能性があります。シェーダーバイナリはゲームバージョンとGPUドライバーの両方に密接に紐づいているためです。グラフィックドライバーの更新頻度が高いため、シェーダーの再コンパイルはPCプレイヤーにとっておなじみの煩わしさとなっています。

開発者はなぜコンパイル済みシェーダーをそのまま出荷できないのか?愛すべきPCでは、ハードウェアとドライバーの環境が多様すぎるのだ。シェーダーのコンパイルはGPUアーキテクチャ、ドライバーバージョン、グラフィックスAPIに依存するため、あるシステムで動作するコンパイル済みシェーダーが別のシステムでは動作しない。コンソールは固定プラットフォームであるためこの問題を回避できるが、PCはそうではない。

次にシェーダーのプリロード画面を見つめる時は、これが実際にプレイする際にカクつきを減らし、パフォーマンスを向上させるために存在していることを思い出してください。これは善のための力なのです。

Screenshot from CoD MW3

JOIN OUR OFFICIAL CORSAIR COMMUNITIES

Join our official CORSAIR Communities! Whether you're new or old to PC Building, have questions about our products, or want to chat the latest PC, tech, and gaming trends, our community is the place for you.