#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 |
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.