一些 #pragma
指令 接受允许您定位特定图形 API 和平台的参数。本页包含有关使用这些指令的信息,并提供有效参数值的列表。
默认情况下,Unity 会为当前构建目标列表中的每个图形 API 编译所有 着色器在 GPU 上运行的程序。 更多信息
参见 词汇表 程序。有时,您可能希望仅为某些图形 API 编译某些着色器程序;例如,如果您使用并非所有平台都支持的功能。
要仅为给定 API 编译着色器程序,请使用 #pragma only_renderers
指令。您可以传递多个值,用空格分隔。
此示例演示如何仅为 Metal 和 Vulkan 编译着色器
#pragma only_renderers metal vulkan
要从给定编译器编译中排除着色器代码,请使用 #pragma exclude_renderers
指令。您可以传递多个值,用空格分隔。
此示例演示如何从 Metal 和 Vulkan 的编译中排除着色器
#pragma exclude_renderers metal vulkan
在内置 渲染管线一系列操作,将场景内容显示在屏幕上。Unity 允许您从预构建的渲染管线中选择,或编写自己的渲染管线。 更多信息
参见 词汇表 中,Unity 会自动生成与 图形层级 对应的 着色器变体根据着色器关键字及其状态的特定组合,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一个 JavaScript API,在 Web 浏览器中渲染 2D 和 3D 图形。Unity 的 Web 构建选项允许 Unity 将内容发布为使用 HTML5 技术和 WebGL 渲染 API 在 Web 浏览器中运行 Unity 内容的 JavaScript 程序。 更多信息 参见 词汇表 2.0 |
metal |
iOS 或 Mac 上的 Metal |
ps4 |
PlayStation®4 |
ps5 |
PlayStation®5 |
switch |
Nintendo Switch™ |
vulkan |
Vulkan |
xboxseries |
Xbox Series S|X |