Version: Unity 6.0 (6000.0)
言語 : 日本語
シェーダーが必要とするシェーダーモデルまたは GPU 機能の設定
コンピュートシェーダー

シェーダーにグラフィックス API またはプラットフォーム要件を設定する

#pragma ディレクティブの中には、特定のグラフィックス API やプラットフォームを対象とするためのパラメーターをとるものがあります。このページでは、これらのディレクティブの使用に関する情報と、有効なパラメーター値のリストを提供します。

グラフィックス API を含むかどうか

デフォルトでは、Unity は現在のビルドターゲットに対して、リストにある各グラフィックス API 用のすべてのシェーダープログラムをコンパイルします。しかし、使用する機能が一部のプラットフォームでのみサポートされている場合など、特定のグラフィックス API に対してのみ特定のシェーダープログラムをコンパイルしたい場合があります。

指定する API に対してのみシェーダープログラムをコンパイルするには、#pragma only_renderers ディレクティブを使用します。スペースで区切って複数の値を渡すことができます。

この例では、Metal および Vulkan 専用のシェーダーをコンパイルする方法を示します。

#pragma only_renderers metal vulkan

シェーダーコードを特定のコンパイラーによるコンパイルから除外するには、#pragma exclude_renderers ディレクティブを使用します。スペースで区切って複数の値を渡すことができます。

この例では、Metal および Vulkan 用のコンパイルからシェーダーを除外する方法を示します。

#pragma exclude_renderers metal vulkan

指定するグラフィックス API に対応するグラフィックスティアのシェーダーバリアントの生成

ビルトインレンダーパイプラインでは、特定の条件の下で、グラフィックスティアに対応するシェーダーバリアントを自動的に生成することができます。また、必要な場合にこれらのバリアントを生成するように Unity に強制することができます。

これを行うには、#pragma hardware_tier_variants プリプロセッサーディレクティブを使用し、ティアシェーダーバリアントを生成したいグラフィックス API を指定します。

例えば、以下は Unity に対して、Metal 用のティアシェーダバリアントをコンパイルするように指示しています。

#pragma hardware_tier_variants metal

有効なパラメーター値のリスト

サポートされている値は以下の通りです。

説明
d3d11 DirectX 11 機能レベル 10 以上、DirectX 12
glcore OpenGL 3.x、OpenGL 4.x
gles3 OpenGL ES 3.x、WebGL 2.0
metal Metal on iOS または Mac
ps4 PlayStation®4
ps5 PlayStation®5
switch Nintendo Switch™
vulkan Vulkan
xboxseries Xbox Series S X

追加リソース

シェーダーが必要とするシェーダーモデルまたは GPU 機能の設定
コンピュートシェーダー