Code Monkey home page Code Monkey logo

metalbook's Introduction

MetalBook

日本語初のMetal解説書「Metal入門」のサンプルコードです。

書籍の概要

iOS/macOSのGPUインターフェース、Metalの入門書です。 GPUを操って高度なグラフィックス処理や大規模な並列演算を行うことにはロマンがありますが、OpenGLやDirectXといった他の低レベルグラフィックスAPIを扱った経験がない開発者にとって、Metalは一歩目のハードルが一番高いのではないかと思います。筆者もそんなGPUプログラミング初心者のひとりで、四苦八苦しながら最初の一歩目を乗り越えました。 本書では、そんな「非」熟練者である筆者だからこその視点から、Metalをかみくだいて解説します。

全136ページ。iOS 12.0, Xcode 10.0, Swift 5対応。

書籍の目次

1章 Metal の概要

2章 Metal の基礎

  • 2.1 Metalの「最初のハードル」
  • 2.2 「背景にある概念」を理解する
  • 2.3 Metalの基本クラスとプロトコル
  • 2.4 MetalKit

3章 入門その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 ArgumentBuffers

11 章 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でリアルタイム動画処理

metalbook's People

Contributors

shu223 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.