Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shu223/metalbook
「Metal入門」のサンプルコードです。
https://github.com/shu223/metalbook
Last synced: about 2 months ago
JSON representation
「Metal入門」のサンプルコードです。
- Host: GitHub
- URL: https://github.com/shu223/metalbook
- Owner: shu223
- License: mit
- Created: 2018-04-21T08:01:52.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2023-12-02T06:56:44.000Z (about 1 year ago)
- Last Synced: 2024-05-01T20:40:25.969Z (8 months ago)
- Language: Swift
- Homepage: https://booth.pm/ja/items/826318
- Size: 2.08 MB
- Stars: 107
- Watchers: 9
- Forks: 8
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
# MetalBook
日本語初のMetal解説書「[Metal入門](https://booth.pm/ja/items/826318)」のサンプルコードです。
## 書籍の概要
iOS/macOSのGPUインターフェース、Metalの入門書です。 GPUを操って高度なグラフィックス処理や大規模な並列演算を行うことにはロマンがありますが、OpenGLやDirectXといった他の低レベルグラフィックスAPIを扱った経験がない開発者にとって、Metalは**一歩目のハードルが一番高い**のではないかと思います。筆者もそんなGPUプログラミング初心者のひとりで、四苦八苦しながら最初の一歩目を乗り越えました。 本書では、そんな「非」熟練者である筆者だからこその視点から、Metalをかみくだいて解説します。
全136ページ。iOS 17, Xcode 15, Swift 5対応。
## 書籍の目次
1章 Metal の概要
2章 Metal の基礎
- 2.1 Metalの「最初のハードル」
- 2.2 「背景にある概念」を理解する
- 2.3 Metalの基本クラスとプロトコル
- 2.4 MetalKit3章 入門その1 - 画像を描画する
- 3.1 描画処理のためのセットアップを行う
- 3.2 画像をテクスチャとしてロードする
- 3.3 描画処理を実行する4章 入門その2 - シェーダを利用する
- 4.1 Metalシェーダの基礎
- 4.2 「画面全体を一色に塗る」シェーダの実装
- 4.3 CPUプログラム側の実装5章 入門その3 - シェーダでテクスチャを描画する
- 5.1 テクスチャを扱うシェーダの実装
- 5.2 テクスチャ座標データをシェーダに渡す
- 5.3 テクスチャをシェーダに渡す
- 5.4 ピクセルフォーマットを合わせる6章 Metal のハードウェア要件
- 6.1 歴代iOSデバイスのMetalサポート状況
- 6.2 `MTLFeatureSet`
- 6.3 Metal非対応デバイスの判定7章 GPGPU プログラミング入門
- 7.1 コンピュートシェーダ
- 7.2 スレッドとスレッドグループ
- 7.3 GPGPUの実装例8章 MSL 入門
- 8.1 Metal のグラフィックスレンダリングパイプライン
- 8.2 .metalファイルと.metallibファイル
- 8.3 FunctionQualifier(関数修飾子)
- 8.4 AttributeQualifier(属性修飾子)
- 8.5 Address Space Qualifiers(アドレス空間修飾子)
- 8.6 型
- 8.7 GLSLをMSLに移植する9章 Metal Performance Shaders
- 9.1 デバイスがMPSをサポートしているかを確認する
- 9.2 ガウシアンブラー
- 9.3 `MPSUnaryImageKernel`を継承する他の画像処理カーネルクラス
- 9.4 画像のリサイズ
- 9.5 画像の転置(行と列の入れ替え)10章 Metal の最適化
- 10.1 スレッドグループサイズの最適化
- 10.2 ArgumentBuffers11 章 Metal のデバッグ
- 11.1 GPUフレームキャプチャを有効にする
- 11.2 Xcode上でGPUの負荷を確認する
- 11.3 GPUフレームデバッガ
- 11.4 GPUフレームキャプチャをプログラムから制御
- 11.5 InstrumentsのMetalSystemTrace
- 11.6 ラベル
- 11.7 デバッググループ
- 11.8 GPUで利用中のメモリサイズを調べる12 章 Core Image × Metal
- 12.1 Core ImageとMetalのシームレスな統合
- 12.2 Core Imageのフィルタ結果をMetalで描画する
- 12.3 CoreImageのカスタムフィルタをMetalで書く
- Metalでカーネルを書く利点
- MSLによるカスタムカーネルの実装
- Metalカスタムカーネルを利用するためのビルド設定13 章 SceneKit × Metal
- 13.1 MetalでSceneKitのマテリアルを描画する
- 13.2 他のSceneKitとMetalの連携機能14章 ARKit × Metal
- 14.1 マテリアルをMetalで描画する
- 14.2 Metalによるカスタムレンダリング15章 Core Video × Metal
- 15.1 Metalでリアルタイム動画処理