「Metalのコマンドラインツールでライブラリを構築する」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
(ページの作成:「Metalのコマンドラインツールでライブラリを構築する Metal Shading Language(.metalファイル)のコンパイルXcodeやXamarin.…」)
 
 
(同じ利用者による、間の2版が非表示)
3行目: 3行目:
 
[[Metal Shading Language]](.metalファイル)の[[コンパイル]]は[[Xcode]]や[[Xamarin.Mac]]([[Visual Studio for Mac]])を使うと全自動で行われるので特に意識することはない。
 
[[Metal Shading Language]](.metalファイル)の[[コンパイル]]は[[Xcode]]や[[Xamarin.Mac]]([[Visual Studio for Mac]])を使うと全自動で行われるので特に意識することはない。
  
これは[[SPIR-V]]からmetallibファイルを生成するツールを作る際に必要になったものであり普通の人には縁のない話だと思われる。
+
これは[[SPIR-V]]からmetallibファイルを自動生成するツールを作る際に必要になったものであり普通の人には縁のない話だと思われる。
  
== 作る ==
+
==作る==
1つのソースコード(.metalファイル)は1つの中間コード(.airファイル)にコンパイルされる。
+
1つの[[ソースコード]](.metalファイル)は1つの[[中間コード]](.airファイル)にコンパイルされる。
 
  xcrun -sdk macosx metal -c vertex.metal  -o vertex.air  
 
  xcrun -sdk macosx metal -c vertex.metal  -o vertex.air  
 
  xcrun -sdk macosx metal -c fragment.metal -o fragment.air
 
  xcrun -sdk macosx metal -c fragment.metal -o fragment.air
  
複数の中間コード(.airファイル)をリンクして最終的な1つのライブラリ(.metallibファイル)を生成する。
+
複数の中間コード(.airファイル)をリンクして最終的な1つの[[ライブラリ]](.metallibファイル)を生成する。
 
  xcrun -sdk macosx metallib *.air -o MyLibrary.metallib
 
  xcrun -sdk macosx metallib *.air -o MyLibrary.metallib
  
== 使う ==
+
===備考===
 +
当初、xcrunコマンドを叩くと以下のようなエラーがでた。
 +
xcrun: error: unable to find utility "metal", not a developer tool or in PATH
 +
 
 +
Xcodeの「Command Line Tools」の設定が空欄になっていたのが原因のようだ。[[homebrew]]を[[インストール]]した直後はなぜか空欄になってしまうようだ。
 +
 
 +
[[ファイル:Xcode-command-line-tools-setting.png|フレームなし|640x640ピクセル]]
 +
 
 +
==使う==
 
ライブラリ(.metallibファイル)をXcodeやXamarin.Macのプロジェクトに追加する。
 
ライブラリ(.metallibファイル)をXcodeやXamarin.Macのプロジェクトに追加する。
  

2020年6月25日 (木) 02:46時点における最新版

Metalのコマンドラインツールでライブラリを構築する

Metal Shading Language(.metalファイル)のコンパイルXcodeXamarin.Mac(Visual Studio for Mac)を使うと全自動で行われるので特に意識することはない。

これはSPIR-Vからmetallibファイルを自動生成するツールを作る際に必要になったものであり普通の人には縁のない話だと思われる。

作る[編集 | ソースを編集]

1つのソースコード(.metalファイル)は1つの中間コード(.airファイル)にコンパイルされる。

xcrun -sdk macosx metal -c vertex.metal   -o vertex.air 
xcrun -sdk macosx metal -c fragment.metal -o fragment.air

複数の中間コード(.airファイル)をリンクして最終的な1つのライブラリ(.metallibファイル)を生成する。

xcrun -sdk macosx metallib *.air -o MyLibrary.metallib

備考[編集 | ソースを編集]

当初、xcrunコマンドを叩くと以下のようなエラーがでた。

xcrun: error: unable to find utility "metal", not a developer tool or in PATH

Xcodeの「Command Line Tools」の設定が空欄になっていたのが原因のようだ。homebrewインストールした直後はなぜか空欄になってしまうようだ。

Xcode-command-line-tools-setting.png

使う[編集 | ソースを編集]

ライブラリ(.metallibファイル)をXcodeやXamarin.Macのプロジェクトに追加する。

guard let libraryFile = Bundle.main.path(forResource: "MyLibrary", ofType: "metallib") else { return }
do {
    let myLibrary = try device.makeLibrary(filepath: libraryFile)
} catch let error {
    print("Library error: \(error.localizedDescription)")
}