다음은 Unity가 사용하는 셰이더 모델의 목록과, 각 셰이더 모델에 해당하는 #pragma require 값의 조합입니다.
참고: Unity의 셰이더 모델은 DirextX 셰이더 모델 및 OpenGL 버전 요구 사항과 비슷하나, 정확히 상응하지는 않습니다. 설명을 잘 읽고 그 차이점을 이해하십시오.
| 값 | 설명 | 지원 | 동등한 #pragma require 값 |
|---|---|---|---|
2.0 |
DirectX 셰이더 모델 2.0과 동등합니다. 연산 및 텍스처 지침 수가 제한됩니다(인터폴레이터 8개, 버텍스 텍스처 샘플링 없음, 프래그먼트 셰이더에 도함수 없음, 명시적 LOD 텍스처 샘플링 없음). |
Unity가 지원하는 모든 플랫폼에서 작동합니다. | 해당 없음 |
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+ Desktop OpenGL 3.x OpenGL ES 3.1 OpenGL ES 3.1 + AEP(Android Extension Pack) OpenGL 3.2+ Vulkan Metal(지오메트리 단계가 정의되지 않은 경우) |
3.5의 모든 항목 +geometry
|
gl4.1 |
OpenGL 4.1과 동등합니다. | Desktop 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(지오메트리 단계가 정의되지 않고 헐(hull) 또는 도메인 단계가 정의되지 않은 경우) |
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(지오메트리 단계가 정의되지 않고 헐(hull) 또는 도메인 단계가 정의되지 않은 경우) |
4.0의 모든 항목 +compute randomwrite msaatex tesshw tessellation
|
콘솔 플랫폼의 셰이더 모델 지원에 대한 내용은 각 플랫폼의 문서를 참조하십시오.
참고:
mrt8을 포함하고 셰이더 모델 5.0은 interpolators32 및 cubearray를 포함합니다. Unity는 광범위한 호환성을 위해 이러한 기능을 포함하지 않습니다. 이러한 기능이 필요한 경우 #pragma require 지시문을 사용하십시오.geometry를 필요로 하는 타겟을 사용하지만 셰이더가 지오메트리 단계를 정의하지 않는 경우, Unity는 컴파일 시 요구 사항 목록에서 geometry를 제거합니다.tessellation을 필요로 하는 타겟을 사용하지만 셰이더가 헐 또는 도메인 단계를 정의하지 않는 경우, Unity는 컴파일 시 요구 사항 목록에서 tessellation을 제거합니다.