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