#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 | 
| gles | OpenGL ES 2.0、WebGL 1.0 | 
| gles3 | OpenGL ES 3.x、WebGL 2.0 | 
| ps4 | PlayStation 4 | 
| xboxone | Xbox One と GameCore、DirectX 11 と DirectX 12 | 
| metal | iOS/Mac Metal | 
| glcore | OpenGL 3.x、OpenGL 4.x | 
| vulkan | Vulkan | 
| switch | Nintendo Switch | 
| ps5 | PlayStation 5 |