Version: 2023.1
言語: 日本語
Metal について
Metal グラフィックスのデバッグ

Metal の要件と互換性

このページには、Metal の使用に際しての要件および Metal と互換性のある機能の一覧を掲載しています。

プラットフォームの互換性

Unity は、iOS、tvOS、macOS 用に Unity プレイヤーで Metal をサポートしています。また、macOS 用に Unity エディターで Metal をサポートしています。

ハードウェアの互換性

Unity は、Unity がサポートする全ての Apple デバイス用に Metal をサポートしています。

レンダーパイプラインの互換性

機能 ビルトインレンダーパイプライン ユニバーサルレンダーパイプライン (URP) HD レンダーパイプライン (HDRP) カスタムのスクリプタブルレンダーパイプライン (SRP)
Metal あり あり あり (macOS のみ) あり

シェーダーの互換性

シェーダーのデータ型のサポート

一部の Metal デバイスは、16 ビットの half データ型をサポートしていません。Unity シェーダーはこうしたデバイスでは half を 32 ビットの float として表現します。同様に、real データ型は、モバイルデバイスでは half、デスクトッププラットフォームでは float として Unity シェーダーによって表現されます。このセクションの説明は、half データ型を使用して、half をサポートしないデバイスにアプリケーションをデプロイしたい場合に関連するものです。

half を適切な場所に使用することで、操作を高速化し、メモリを節約し、モバイルデバイスのバッテリーを節約できます。高精度が必要ない値には half 使用するのが最善です。本セクションの情報を参照して、コードを、half をサポートしないデバイスに確実に対応するようにしてください。

シェーダーのデータ型と、それらがサポートする精度についての詳細は、シェーダーのデータ型と精度 を参照してください。

サポートの影響

16 ビット浮動小数点数は 32 ビット浮動小数点数に比べて低精度です。half を使用して、それをサポートするデバイスでアプリケーションをテストすれば、多くの場合は、低精度に起因する問題を確認してそれを修正することができます。しかし、half をサポートしない (そして halffloat で代用する) デバイスでアプリケーションをテストした場合、後に half をサポートするデバイスでアプリケーションを実行した時に発生する精度の問題が見落とされる可能性があります。

half をサポートしないデバイスに Unity アプリケーションをデプロイしたい場合は、floathalf に置き換えられてもコードが正常に機能することを確認してください。half をサポートする Metal GPU は、バッファ (定数バッファも含む) が 16 ビット値が含んでいることも想定しています。half をサポートしない GPU は、これらのバッファが 32 ビット値を含んでいることを想定しています。バッファに値を書き込む時に、CPU 側のコードでこのことを考慮する必要があります。

Metal について
Metal グラフィックスのデバッグ