某些 #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 会在特定情况下自动生成与图形层对应的着色器变体。如果需要,还可以强制 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 |
iOS 或 Mac 上的 Metal | |
ps4 |
PlayStation®4 | |
ps5 |
PlayStation®5 | |
switch |
Nintendo Switch™ | |
vulkan |
Vulkan | |
xboxseries |
Xbox Series S | X |