Windows用Metal開発ツールの使い方

Windows用Metal開発ツールの使い方

macOS Sonomaのリリースに伴い、AppleはWindowsで使用できるMetal開発ツールの最新バージョンもアップデートしました。入手方法と使い方については以下をご覧ください。

Metalは、AppleのmacOS向けグラフィックフレームワークです。Metalを使用すると、Appleのあらゆるデバイスに最適化されたグラフィックエンジンを使用して、リッチで高性能な2Dおよび3Dグラフィックを作成できます。

Metal は Apple デバイスで実行されますが、Metal で使用するアセット、イメージ、シェーダー、テクスチャを作成するためのプラットフォームとして Microsoft Windows を使用することもできます。

Appleの開発者ツールサイトには、Windows向けのMetalダウンロードが2種類あります。Metal Developer Tools 4.0 for WindowsとMetal Shader Converter for Windowsです。どちらもApple開発者アカウントにオンラインでログインすることでダウンロードできます。

ツールを入手する

Windows 用の Metal 開発ツールをダウンロードするには、Apple 開発者アカウントにログインし、Web ブラウザーのダウンロード ページに移動して、Windows 用の Metal 開発ツールまでスクロールします。

Windows 4 用の Metal 開発ツールをダウンロードします。

Windows 4 用の Metal 開発ツールをダウンロードします。

[詳細を表示]矢印をクリックし、Metal Developer Tools 4.0 Windows.pdfMetal Developer Tools 4.0 Windows.exeをクリックして、コンピューターのストレージにダウンロードします。

次に、少し下にスクロールして「Metal Shader Converter for Windows」に移動し、「詳細の表示」矢印をクリックします。次に、「Metal Shader Converter for Windows.pdf」「Metal Shader Converter for Windows.exe」をクリックして、コンピューターのストレージにダウンロードします。

Windows 用の Metal Shader Converter をダウンロードしてください。

Windows 用の Metal Shader Converter をダウンロードしてください。

インストール

ダウンロードしたすべてのアイテムを新しいフォルダに移動してください。これでアイテムは4つになります。インストール前に、以下の2つのPDFファイルをよく読んでおくことをお勧めします。

Windows ツールをダウンロードしました。

Windows ツールをダウンロードしました。

次に、Macにファイルをダウンロードした場合は、Windows対応のUSBメモリまたはその他のディスクを接続し、4つの項目をコピーします。このUSBメモリを使用して、Windows 10または11マシンにファイルをコピーします。

コピーが完了したら、USBドライブをWindowsコンピューターに接続し、4つのファイルをコピーします。両方の.exeインストーラーファイルを実行して、Windowsマシンにツールをインストールします。

Metal Developer Tools for Windows PDF には次のように記載されています。

デフォルトでは、パッケージは にインストールされます%PROGRAMFILES%\Metal Developer Tools。インストール時に、次のものが表示されます。

binTextureConverter ツールが含まれています。

includeAppleTextureConverter ライブラリのヘッダーが含まれています。

libAppleTextureConverter ライブラリが含まれています。

metal\iosiOS および tvOS を対象とするときに使用するツール セットが含まれています。macOSmetal\macosを対象とするときに使用するツール セットが含まれています。

Metal 開発ツールは、リリースの対象とする予定の OS SDK のバージョンと一致する必要があります。

また、GUI インストールの他に、インストーラーは次のようにコマンドライン インストールもサポートできると記載されています。

"Metal Developer Tools-Windows.exe" /S /D=C:\Users\My Name\Sandbox\Tools

ツールの使用

インストールが完了すると、ツールを使用して、Windows コンピューター上のシェーダーとアセットを Metal が使用する形式に変換できるようになります。

最初のツールは、TextureConverterWindowsで作成されたテクスチャをMetalが受け入れるGPU圧縮テクスチャ形式に変換します。詳細と実行オプションを確認するにはTextureConverter、次のように入力してください。

TextureConverter.exe --hWindows のコマンド プロンプトに入力し、Return キーまたはEnter キーを押します。

開発者ノートに示されているように、TextureConverter独自の Windows テクスチャ ツールに組み込むには、提供されている AppleTextureConverter ライブラリを使用し、AppleTextureConverter.h詳細についてはヘッダー ファイルを読んでください。

また、Apple Metal シェーディング言語を使用して Windows のグラフィックスおよびコンピューティング シェーダーを Metal ライブラリ オブジェクトにコンパイルするためのツールも含まれています。

Windows ツールにはこれを行う方法に関する説明がないため、Apple のオンライン Metal ドキュメントの Documentation->Metal領域のShader Libraryセクションにある「Building a Shader Library by Precompiling Source Files」を読む必要があります。

実際には、これらのツールを使ってWindows DXIL形式から中間の.air形式に変換し、さらにXcodeに読み込んでアプリ実行時に実行できる.metalarファイルと.metallibファイルに変換します。ドキュメントより:

「metal コンパイラツールは、各シェーダソースファイルを中間表現ファイルに変換します。次に、metallib ツールと metal-ar ツールが、中間表現ファイルをそれぞれライブラリとバイナリアーカイブにコンパイルします。」

ドキュメントに記載されているように、Windows 用の Metal コマンドライン ツールは、macOS 用のものと同じオプションと引数を使用します。

インストールされる Windows 用のもう一つのツールは、Metal Shader Converter for Windows です。

このツールは、LLVM IR バイトコード形式の中間表現を、Metal にロードするのに適したバイトコードに変換します。

LLVM は、プロジェクトのコンパイル時に Xcode によって使用されるオープンソースのコンパイラ インフラストラクチャです。

LLVM の詳細についてはllvm.orgを参照してください。また、バイトコード形式 (LLVM では「ビットコード」と呼ばれます) の詳細については、そのサイトのビットコード ページを参照してください。

バイトコード形式については、PACKT Publishing の書籍「LLVM Cookbook」でも説明されています。

Metal Shader Converter は、スタンドアロン ツールとしても、必要に応じて独自のツールに組み込むことができるライブラリとしても提供されます。

提供されているヘッダー ファイルも参照してくださいmetal_irconverter_runtime.h

Windows 用の Metal Shader Converter には、Microsoft Windows 10 以降と Microsoft Visual Studio 2019 以降が必要です。

Windows 用の Metal Shader Converter を使用して構築されたライブラリは、macOS 14 Sonoma および iOS 17 でのみ動作します。以前の OS バージョン用に構築されている場合、一部の機能は利用できない可能性があります。

Windows用Metalシェーダーコンバーターの最も簡単な使い方は、WindowsのDirectX DXIL(DirectX中間言語)シェーダーをMetalシェーダーライブラリに変換することです。これはmetal-shaderconverterコマンドラインツールを使って実行できます。

例えば:

metal-shaderconverter shader.dxil -o ./shader.metallib

metal-shaderconverterWindowsmetal-shaderconverter --helpでコマンド プロンプトを 実行すると、詳細情報を取得できます。

またlibmetalirconverter、C、C++、Objective-C、Swift プロジェクトで動作し、提供されているIRCompilerクラスを使用して DXIL を Metal に変換できる動的コード ライブラリ (dylib) も提供されています。

このような変換コードは非常に簡単で、1 ページ未満のサンプル コードが Metal Shader Converter PDF に提供されています。

基本的に、提供されているIRCompilerクラスを使用するには、まずオブジェクトのインスタンスを作成し、エントリ ポイント名を設定し、IRObjectクラスを使用して DXIL オブジェクトを IR オブジェクトに変換し、関数を使用して Metal にコンパイルしIRCompilerAllocCompileAndLink()、出力を検査します。

提供されたIRMetalLibBinary クラスを使用すると、コンパイルされた Metal オブジェクトを読み込んで操作できます。

かなり長い 30 ページの Windows 用 Metal シェーダー コンパイラ PDF には、頂点属性、サンプラー状態オブジェクト、引数バッファ、レイ トレーシングなど、Windows から Apple Metal への変換に使用できる他の多くのオプションが説明されています。

最適な Metal パフォーマンスを実現するためのヒントや、ジオメトリやテッセレーションを含む複雑なシェーダー パイプラインを処理するためのヒントもあります。

PDF では、Metal サンプル コード ページで Apple の Metal サンプル コード プロジェクト「Learn Metal with C++」を参照することも推奨しています。

追加リソース

C++ を知らない場合は、まず C に関するシンプルで古典的な本から始めることをお勧めします。たとえば、Brian Kernighan と故 Dennis Ritchie による C の決定版本『The C Programming Language』などです。この 2 人は 1970 年代にベル研究所で C 言語を書き、UNIX オペレーティング システムを作成しました。

Bjarne Stroustrupによって開発されたC++は、C言語をベースにしていますが、クラス、オブジェクト、標準テンプレートライブラリ(STL)などのオブジェクト指向(OOP)機能、そしてその他の最新機能を備えています。Stroustrupの著書『C++プログラミング言語 第4版』は必読です。

ストロウストルップのウェブサイトもさらに役立つ C++ 書籍やチュートリアルもいくつかあります。

年次 C++ カンファレンスであるCppCon は、毎年 10 月に開催されます。今年は 10 月 1 日から 6 日まで、コロラド州オーロラで開催されます。CppCon には YouTube チャンネルもあり、多数の優れた C++ チュートリアルが掲載されています。

C++は、C言語などの手続き型言語の限界が明らかになった1994年に人気を博しました。C言語にはC99、C11、C14、C17、C22といった標準規格がいくつか存在し、APRESSはそれぞれの標準規格に関する優れた書籍を出版しています。

Xcode のビルド設定ペインで、Xcode コンパイラがどの標準を使用するかを設定できます。

1989 年に NeXT Computer で、NeXT チームはObjective-Cを作成しました。これは C をベースにした同様の OOP 言語ですが、動的リンクやオブジェクト イントロスペクションなどの追加の利点があります。

Appleは1997年にNeXTを買収し、Objective-Cを含むNeXTの技術をすべて取得しました。Objective-Cに関する優れた決定版として、Big Nerd Ranchの『Objective-Cプログラミング:Big Nerd Ranchガイド』があります。

一部のサードパーティの 3D 標準にもいくつかの要件があり、その多くは Windows DirectX/Direct3D DXIL 標準に基づいていることにも注意してください。

例えばSteamには、満たさなければならない特定のDirectX要件があります。SteamとAppleプラットフォームの両方に同時にパブリッシュする場合は、これらの要件に注意する必要があります。Steamには要件の詳細を説明したページがあります。

Microsoft は、GitHub で DirectXShaderCompiler リポジトリと Wiki をホストしています。

Microsoft には、GitHub の DirectX-Specs および DirectXTK12 リポジトリに、DirectX-Specs ページと DirectX Shader Model 6 もあります。

Windows DXIL デバッグおよびチューニング PIX ツールも利用できます。

Microsoft には DirectX 開発者ブログもあります。

最後に、非常に複雑なドキュメントを読む勇気があるなら、 NVIDIA にはNsight Graphicsという Windows ベースの DirectX デバッグ ツールがあります。

AppleがmacOS SonomaにWindows Metalツールを追加したことで、既存のゲームグラフィックパイプラインをMetalに移植し、Appleプラットフォーム上で最適に動作させることがはるかに容易になりました。今後、AppleがMetalツールを改善し、クロスプラットフォームゲーム開発の負担を軽減してくれることが期待されます。