#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 |
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 |