以下是 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 曲面细分
|
有关控制台平台的着色器模型支持信息,请参阅特定平台的文档。
备注
mrt8
,着色器模型 5.0 包含interpolators32
和cubearray
。为了更广泛的兼容性,Unity 不包含这些。要强制要求这些功能,请使用显式的#pragma require
指令。geometry
,但您的着色器未定义几何阶段,则 Unity 会在编译时从要求列表中删除geometry
。tessellation
,但您的着色器未定义外壳或域阶段,则 Unity 会在编译时从要求列表中删除tessellation
。