Unity3D:面向 HLSL 中的图形 API 和平台
推荐:将NSDT场景编辑器加入你的3D工具链
3D工具集:NSDT简石数字孪生
面向 HLSL 中的图形 API 和平台
某些 #pragma
指令采用允许您面向特定图形 API 和平台的参数。本页包含有关使用这些指令的信息,并提供有效参数值的列表。
包含或排除图形 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
为给定图形 API 的图形层生成着色器变体
在内置渲染管线中,Unity 会自动生成与特定条件下的图形层相对应的着色器变体。如果需要,您还可以强制 Unity 生成这些变体。
为此,请使用预处理器指令并指定要为其生成层着色器变体的图形 API。#pragma hardware_tier_variants
例如,这将指示 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 | 游戏机 4 |
xboxone | Xbox One 和 GameCore、DirectX 11 和 DirectX 12 |
metal | iOS/Mac Metal |
glcore | OpenGL 3.x, OpenGL 4.x |
vulkan | 火山 |
switch | 任天堂开关 |
ps5 | 游戏机 5 |
由3D建模学习工作室整理翻译,转载请注明出处!