下表列出了 Unity 所使用的着色器模型,以及分别对应的 #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 |
derivatives |
3.0 |
等效于 DirectX 着色器模型 3.0。 . |
DirectX 11 功能级别 10 + OpenGL 3.2+ OpenGL ES 3.0+ Vulkan Metal |
2.5 中的所有内容,以及:interpolators10 samplelod fragcoord
|
3.5 |
等效于 OpenGL ES 3.0。 |
DirectX 11 功能级别 10+ OpenGL 3.2+ OpenGL ES 3+ Vulkan Metal |
3.0 中的所有内容,以及:interpolators15 mrt4 integers 2darray instancing
|
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 中的所有内容,以及:geometry
|
gl4.1 |
等效于 OpenGL 4.1 | 桌面端 OpenGL 4.1 着色器模型 4.0 + 曲面细分以匹配 macOS 10.9 功能。 |
4.0 中的所有内容,以及:cubearray tesshw tessellation 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 tessellation msaatex
|
5.0 |
等效于 DirectX 着色器模型 5.0,但不要求支持 32 个插值器或立方体贴图数组。 | DirectX 11 功能级别 11+ Desktop OpenGL >= 4.2 OpenGL 4.3+ OpenGL ES 3.1 + AEP Vulkan Metal(如果未定义几何体阶段,也未定义外壳或域阶段) |
4.0 中的所有内容,以及:compute randomwrite msaatex tesshw tessellation
|
如需了解支持的游戏主机平台,请参阅针对该平台的文档。
注意:
mrt8,着色器模型 5.0 包含 interpolators32 和 cubearray。Unity 不包含上述项,以便实现更广泛的兼容性。要要求这些功能,请使用显式 #pragma require 指令。geometry,但着色器未定义几何体阶段,Unity 会在编译时从要求列表中删除 geometry。tessellation,但着色器未定义外壳或域阶段,Unity 会在编译时从需求列表中删除 tessellation。