ブログへ戻る
Graphics Engine/全 22 回
Metal
Apple の Metal API でレンダラーを一段ずつ組み上げる連載。最初の MTKView から、遅延シェーディング、テッセレーション、ハードウェアレイトレーシングまで。
- 01Metal #0 Swift 復習最初の三角形を描く前に必要な Swift。宣言、Optional、クロージャ、プロトコル、値型と参照型の違い。2024-04-29 · 2 min read
- 02Metal #1 初期化最小構成の完全な Metal アプリケーション。MTKView、device、command queue、そして毎フレーム通る四つのステップ。2024-04-30 · 2 min read
- 03Metal #2 レンダリングパイプラインパイプラインステート、頂点ディスクリプタ、レンダーコマンドエンコーダ。Metal でジオメトリが画面に届くまで。2024-05-11 · 17 min read
- 04Metal #3 頂点関数頂点関数。頂点ディスクリプタ、属性のバインド、uniform を渡す三つの方法、そして MVP 変換をここで行う理由。2024-05-18 · 9 min read
- 05Metal #4 フラグメント関数フラグメント関数。補間修飾子、深度とブレンド、複数レンダーターゲット、そして quad が GPU の実際の実行単位である理由。2024-05-25 · 9 min read
- 06Metal #5 テクスチャテクスチャ。読み込みとピクセルフォーマット、サンプラーとアドレスモード、ミップマップと異方性、そして sRGB をハードウェアに任せるべき理由。2024-06-01 · 9 min read
- 07Metal #6 カメラと操作カメラと操作。ビュー行列の正体、透視投影と平行投影、Metal の [0,1] 深度規約、そして実用的なオービットカメラ。2024-06-15 · 8 min read
- 08Metal #7 ライティングライティング。Phong と Blinn-Phong、三種類のライト、減衰モデル、そして複数光源のループをどこに置くか。2024-06-29 · 9 min read
- 09Metal #8 マテリアルマテリアル。Phong のパラメータから metallic-roughness の PBR ワークフローへ、法線マップと TBN、Cook-Torrance の各項が計算しているもの。2024-07-13 · 10 min read
- 10Metal #9 レンダーパスレンダーパス。TBDR で load / store アクションがもっとも重要なスイッチである理由、オフスクリーンターゲット、MTLHeap、フレームの構成。2024-07-27 · 8 min read
- 11Metal #10 シャドウシャドウマッピング。深度パス、シャドウ行列、アクネと Peter Panning の原因と対処、PCF とカスケード。2024-08-10 · 10 min read
- 12Metal #11 遅延レンダリング遅延レンダリング。G-Buffer の構成と圧縮、ライティングパス、そして Apple Silicon のタイルメモリを使ったシングルパス遅延。2024-08-24 · 9 min read
- 13Metal #12 パーティクルシステムパーティクルシステム。コンピュートシェーダーでのシミュレーション、GPU 上での発生と再利用、インスタンス描画、そしてソート問題。2024-09-07 · 9 min read
- 14Metal #13 テッセレーションテッセレーション。Metal 独自のコンピュート駆動ファクタ段、ディスプレイスメントと地形 LOD、そして亀裂が生じる原因。2024-09-21 · 8 min read
- 15Metal #14 ポストプロセスポストプロセス。HDR とトーンマッピング、ブルーム、SSAO のサンプリング戦略、そしてポストチェーンをフルスクリーン三角形でなくコンピュートで組むべき理由。2024-10-12 · 9 min read
- 16Metal #15 反射と屈折反射と屈折。キューブマップと IBL、平面反射、スクリーンスペース反射の原理と必然的な破綻、屈折と分散。2024-10-26 · 9 min read
- 17Metal #16 アニメーションアニメーション。クォータニオンによる変換の補間、スキニング行列パレット、GPU スキニングの二通り、そしてキーフレームをコンピュートに置くべき場面。2024-11-09 · 9 min read
- 18Metal #17 レイトレーシング(一)レンダリングアルゴリズムレイトレーシング(一)。レンダリング方程式、モンテカルロ推定と重要度サンプリング、そして Metal の加速構造と intersector API。2024-11-23 · 8 min read
- 19Metal #18 レイトレーシング(二)影とライティングレイトレーシング(二)。シャドウレイとソフトシャドウ、next event estimation、パストレーシングのループとロシアンルーレット、ハイブリッドパイプライン。2024-12-07 · 10 min read
- 20Metal #19 レイトレーシング(三)性能最適化レイトレーシング(三)。レイの発散とウェーブフロント方式、加速構造の構築戦略、サンプリング列の選択、GPU キャプチャによるボトルネック特定。2024-12-21 · 11 min read
- 21Metal #21 [付録] Compute Shader描画以外の用途に GPU を使う。kernel 関数、スレッドグループ、そして dispatch を正しく分割する方法。2024-09-14 · 3 min read
- 22Metal #22 [付録] SwiftUI における MetalSwiftUI の shader モディファイアは Metal Shading Language を通常のビューに届ける。その橋の仕組みと限界。2024-09-30 · 16 min read