ホーム/ コンピュータグラフィックス

グラフィックス

コンピュータグラフィックス

描画パイプライン・ラスタライズ・レイトレーシング・シェーダ・GPU 計算… CG と GPU の「なぜ動く」を、まず TL;DR でつかみ、そこから原理まで。

解説記事

原理・深掘り

描画と GPU 計算の仕組みを、まず TL;DR で要点をつかみ、そこから原理まで。

3つの要点応用

CUDA・GPGPUプログラミングモデル

GPUに数万スレッドを正しく並べれば桁違いの並列性能が引き出せます。グリッド/ブロック/スレッドの階層、共有メモリ同期、コアレッシングまで性能の勘所を原理から押さえます。

3つの要点応用

GPUテクスチャ圧縮

VRAM不足とテクスチャ帯域のボトルネックを、GPUがサンプリング時に直接展開できるブロック圧縮の原理から理解し、BC・ASTC・ETCを用途で正しく選べるようになります。

3つの要点応用

GPU計算モデル(SIMT・ワープ)

GPUカーネルが遅い理由の大半は分岐発散・非コアレスアクセス・低占有率に集約されます。ワープとSIMTの内部動作から、なぜそこで性能が落ちるのかを原理で押さえられます。

3つの要点応用

HDRとトーンマッピング

白飛びやのっぺりした画を根絶。上限のないリニアHDRを露出とトーンマッピングで表示レンジへ写す原理、Reinhard と ACES の違い、ブルームの正しい順序まで理解できます。

3つの要点応用

アンチエイリアシング

ジャギーやちらつきが消えない理由を標本化不足という一点から解き、MSAA・SSAA・FXAA・SMAA・TAA を原理と得失で選び分けられるようになります。

3つの要点応用

アンビエントオクルージョン(SSAO)

隙間や接地部がのっぺり見える理由を近接遮蔽という一点から解き、SSAO・HBAO・GTAO を深度と法線からの推定原理で理解し、サンプル数とノイズ・ブラーの得失を根拠を持って調整できるようになります。

3つの要点応用

グラフィックスAPIの系譜

OpenGL・DirectX・Vulkan・Metal・WebGL・WebGPU の分岐と世代が年代で腑に落ちます。なぜ状態機械型から明示的・低レベル制御型へ移ったのか、CPUオーバーヘッドと並列化の観点で押さえられます。

3つの要点応用

サブサーフェススキャタリング

肌や大理石が「内側から光っている」ように見える理由を、内部散乱・拡散プロファイル・スクリーン空間SSSの原理からたどり、透過や単なる拡散との違いを踏まえて根拠を持って質感を作れるようになります。

3つの要点応用

シェーディングと物理ベース描画(PBR)

ランバート・Phong の古典モデルがなぜ破綻し、PBR がどう解いたかを、エネルギー保存・フレネル・マイクロファセットの原理から理解でき、metallic/roughness を根拠を持って調整できるようになります。

3つの要点応用

シャドウマッピングの技法

影の輪郭がギザギザに割れる・物体が地面から浮くといった定番の破綻を、深度マップの原理からバイアス・PCF・カスケードの根拠まで押さえて自力で直せるようになります。

3つの要点応用

スクリーンスペース反射(SSR)

鏡やレイトレを使わず床や水面の映り込みを安価に足せる理由を、深度バッファを画面空間でレイマーチする原理から理解し、画面外が消える限界とキューブマップ併用の落としどころまで掴めます。

3つの要点応用

スケルタルアニメーションとスキニング

キャラクターがなめらかに動く仕組みを、ボーン階層・線形ブレンドスキニング・頂点ウェイトの原理から理解でき、関節がつぶれる典型不具合や逆運動学の勘所まで押さえられます。

3つの要点応用

テクスチャマッピングとフィルタリング

拡大でボケ、縮小でチラつくテクスチャの品質問題を、UV座標・ミップマップ・異方性フィルタの原理から理解し、破綻しない設定を選べるようになります。

3つの要点応用

テッセレーションと変位マッピング

粗いメッシュから GPU 上で滑らかな曲面と本物の凹凸を生成する仕組みを、制御点・パッチ・テッセレーションファクタから理解し、LOD の亀裂を出さない設計を選べるようになります。

3つの要点応用

ハードウェアレイトレーシング(RTX・DXR)

GPUがレイトレーシングをリアルタイムでこなせるようになった仕組みを、RTコア・加速構造・専用パイプラインから理解できます。ラスタライズとのハイブリッド構成やDXR/Vulkanの使い分けまで押さえます。

3つの要点応用

パストレーシングと大域照明

写真のような陰影や色移りがなぜ再現できるのかを、レンダリング方程式とモンテカルロ積分から一気に理解できます。重要度サンプリングとロシアンルーレットでノイズを抑える実装勘所まで押さえます。

3つの要点応用

プログラマブルシェーダとGPU実行モデル

頂点・フラグメント・コンピュートの各シェーダが何を担い、なぜ分岐発散でGPU性能が落ちるのか。パイプラインの入出力とSIMT実行を原理から押さえ、遅いシェーダの原因を自力で切り分けられるようになります。

3つの要点応用

ボリュームレンダリング

煙・雲・フォグや光の筋(ゴッドレイ)がなぜ描けるのかを、参加媒質と放射伝達方程式から一気に理解できます。レイマーチングによる吸収・散乱の数値積分と、ボリュメトリックライティングの実装勘所まで押さえます。

3つの要点応用

メッシュとジオメトリ表現

3D モデルがなぜ頂点バッファとインデックスバッファに分かれるのか、法線・UV・接線が何のためにあるのかを、GPU の都合と幾何の両面から整理し、LOD やハーフエッジまで見通せます。

3つの要点応用

ラスタライズの原理(三角形の画素化)

三角形をどの画素で塗るか、色や UV をどう補間するかを、エッジ関数と重心座標という一つの仕組みで説明します。トップレフト規則や遠近補正まで、GPU が毎フレーム行う計算の中身が腑に落ちます。

3つの要点応用

レイトレーシングの原理

反射や影が自然に描ける理由を、光線とオブジェクトの交差計算からたどれます。屈折・シャドウレイ・再帰、そしてラスタライズとの計算コストの違いまで一気に掴めます。

3つの要点応用

画像ベースライティング(IBL)

屋外や室内で物体を「その場に置いたように」馴染ませられます。環境マップから拡散と鏡面の照明を事前計算し、実行時は数枚のテクスチャ参照だけでPBRを回す仕組みを原理から掴めます。

3つの要点応用

空間データ構造(BVH ほか)

レイトレーシングが全三角形を総当たりせず現実的な速度で描ける理由を、BVH・kd-tree・グリッドの仕組みと SAH による構築から理解できます。動的シーンの更新戦略まで押さえます。

3つの要点応用

座標変換(モデル・ビュー・射影)

3D の頂点が画面に映るまでの変換を、なぜ 4x4 行列と同次座標なのか、透視除算で遠近が付く理由、法線が壊れない掛け方まで一本の筋で追えます。

3つの要点応用

手続き的ノイズ(Perlin・Simplex)

地形やテクスチャを画像なしで無限に生成できる手続き的ノイズを、勾配ノイズの原理とfBmのオクターブ合成から理解し、格子アーティファクトや異方性の破綻を避けて設計できるようになります。

3つの要点応用

順序非依存透過(OIT)

半透明が回転で前後関係を崩す悩みを、なぜソートでは解けないかという根本から解決できます。加重ブレンドOITとピクセルリンクリスト方式を、正確さと負荷の得失で選び分けられるようになります。

3つの要点応用

色空間とガンマ補正

画像の合成や陰影が「なんとなく汚い」を根絶できます。ガンマとリニアの違い、なぜ計算はリニアで行うか、HDR やトーンマッピング、色域の差までを筋道立てて理解しましょう。

3つの要点応用

深度バッファと隠面消去

三角形をどんな順で描いても手前のものだけが残る仕組みを、Zバッファの原理から深度精度の偏りや z-fighting、透過の落とし穴まで一気に理解できます。

3つの要点応用

前方レンダリングと遅延レンダリング

多光源で描画が急に重くなる理由を、フォワードとディファードの計算量の差から解き明かし、G バッファ・透過・MSAA の相性まで踏まえて Forward+ やタイル/クラスタ方式を根拠を持って選べるようになります。

3つの要点応用

超解像アップサンプリング(DLSS・FSR・TAAU)

低解像度で描いて高解像度を復元する仕組みを、時間的蓄積とジッタ・モーションベクトルから解き、DLSS・FSR・TAAU の違いとゴースト対策まで一貫してつかめます。

3つの要点応用

描画パイプラインの全体像(頂点→ラスタライズ→フラグメント)

3D モデルが画面のピクセルになるまでを、頂点処理からラスタライズ、フラグメント処理、出力結合まで順に追い、固定機能段とプログラマブル段の違いと GPU の並列実行まで一気につかめます。

3つの要点応用

法線・視差マッピング

ポリゴンを増やさずに凹凸を出す仕組みを、法線マップと接空間、視差オクルージョンマッピングの原理から理解し、破綻の少ない設定を選べるようになります。