読者です 読者をやめる 読者になる 読者になる

saii-lab

「知性のルーツを発見する」がテーマのブログ。人工知能(AI)、プログラミング教育などの幅広いトピックを扱います。

MetalでGPUコンピューティング(5) MTLLibrary

Metal Advent Calendar2016の8日目の記事を投稿しました。

本記事では、前回に引き続きAppleが提供するサンプルコードの解説を行います。
扱うサンプルコードは、前回と同じライフゲームのアプリ、MetalGameOfLifeです。
MetalGameOfLife

今回は、サンプルコード内のMTLLibraryについて解説を行います。
MTLLibraryを用いることでGPU側の言語Metal shading languageの関数を、CPU側の言語Objective-CやSwiftで扱うことが可能になります。
MTLLibraryはクラスではなくプロトコルです。
MTLLibraryに従うオブジェクトは、Metal shading languangeのソースコードを含んでいます。
シェーダーファイル内にあるソースコードはビルド時にコンパイルされ、文字列で書かれたMSLのコードはランタイム時にコンパイルされます。
MTLLibraryのオブジェクトを生成するためには、MTLDeviceのメソッドを用います。
コンパイル済みのバイナリからライブラリを作る場合は、以下のメソッドのどれかを用います。
  • newDefaultLibrary()
  • makeLibrary(filepath:)
  • makeLibrary(data:)
また、ランタイムでテキストからコンパイルしライブラリを作る場合は、以下のメソッドのどれかを用います。
  • makeLibrary(source:options:completionHandler:)
  • makeLibrary(source:options:)
 詳細は、以下の記事をご覧ください。
[iOS]MetalでGPUコンピューティング(5) MTLLibrary