T.TAO
ブログへ戻る
Graphics Engine/全 22 回

Metal

Apple の Metal API でレンダラーを一段ずつ組み上げる連載。最初の MTKView から、遅延シェーディング、テッセレーション、ハードウェアレイトレーシングまで。

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