版本:Unity 6 (6000.0)
语言:English
HLSL pragma 指令参考
HLSL pragma require 命令参考

HLSL pragma target 命令参考

以下是 Unity 使用的着色器在 GPU 上运行的程序。 更多信息
参见 术语表
模型列表,以及每个模型对应的#pragma require值的组合。

注意:Unity 的着色器模型类似于 DirectX 着色器模型和 OpenGL 版本要求,但它们并不完全对应。请仔细阅读描述,确保您理解其中的差异。

描述 支持 等效的 #pragma require
2.0 等效于 DirectX 着色器模型 2.0

有限的算术和纹理指令;8 个插值器;不支持顶点纹理采样;片段着色器中不支持导数;不支持显式 LOD 纹理采样。
适用于 Unity 支持的所有平台。 N/A
2.5 几乎与 3.0 相同,但仅有 8 个插值器,并且不支持显式 LOD 纹理采样。 DirectX 11 功能级别 9+
OpenGL 3.2+
Vulkan
Metal
导数
3.0 等效于 DirectX 着色器模型 3.0

.
DirectX 11 功能级别 10 +
OpenGL 3.2+
OpenGL ES 3.0+
Vulkan
Metal
2.5 中的所有内容,以及
插值器10 samplelod fragcoord
3.5 等效于 OpenGL ES 3.0

DirectX 11 功能级别 10+
OpenGL 3.2+
OpenGL ES 3+
Vulkan
Metal
3.0 中的所有内容,以及
插值器15 mrt4 整数 2darray 实例化
4.0 等效于 DirectX 着色器模型 4.0,但不强制要求支持 8 个 MRT。 DirectX 11 功能级别 10+
桌面 OpenGL 3.x
OpenGL ES 3.1
OpenGL ES 3.1 + Android 扩展包 (AEP)
OpenGL 3.2+
Vulkan
Metal(如果未定义几何阶段)
3.5 中的所有内容,以及
几何
gl4.1 等效于 OpenGL 4.1 桌面 OpenGL 4.1
着色器模型 4.0 + 曲面细分,以匹配 macOS 10.9 的功能。
4.0 中的所有内容,以及
cubearray tesshw 曲面细分 msaatex
4.5 等效于 OpenGL ES 3.1 DirectX 11 功能级别 11+
OpenGL 4.3+
OpenGL ES 3.1
Vulkan
Metal
3.5 中的所有内容,以及
compute randomwrite msaatex
4.6 等效于 OpenGL 4.1

这是 Mac 上支持的最高 OpenGL 级别。
DirectX 11 功能级别 11+
OpenGL 4.1+
OpenGL ES 3.1 + AEP
Vulkan
Metal(如果未定义几何阶段,并且未定义外壳或域阶段)
4.0 中的所有内容,以及
cubearray tesshw 曲面细分 msaatex
5.0 等效于 DirectX 着色器模型 5.0,但不强制要求支持 32 个插值器或立方体贴图数组。 DirectX 11 功能级别 11+
桌面 OpenGL >= 4.2
OpenGL 4.3+
OpenGL ES 3.1 + AEP
Vulkan
Metal(如果未定义几何阶段,并且未定义外壳或域阶段)
4.0 中的所有内容,以及
compute randomwrite msaatex tesshw 曲面细分

有关控制台平台的着色器模型支持信息,请参阅特定平台的文档。

备注

  • 在 DirectX 定义中,着色器模型 4.0 包含mrt8,着色器模型 5.0 包含interpolators32cubearray。为了更广泛的兼容性,Unity 不包含这些。要强制要求这些功能,请使用显式的#pragma require指令。
  • 如果您使用的目标需要geometry,但您的着色器未定义几何阶段,则 Unity 会在编译时从要求列表中删除geometry
  • 如果您使用的目标需要tessellation,但您的着色器未定义外壳或域阶段,则 Unity 会在编译时从要求列表中删除tessellation
HLSL pragma 指令参考
HLSL pragma require 命令参考