#pragma ディレクティブの中には、特定のグラフィックス 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
ビルトインレンダーパイプラインでは、特定の条件の下で、グラフィックスティアに対応するシェーダーバリアントを自動的に生成することができます。また、必要な場合にこれらのバリアントを生成するように 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 |