본문으로 바로가기
반응형

Unity Shader에서의 Shader Model define


원문링크 : https://docs.unity3d.com/Manual/SL-ShaderCompileTargets.html



   DirectX and Shader Model Versions

  • DirectX 8.0 - Shader Model 1.0 & 1.1
  • DirectX 8.0a - Shader Model 1.3
  • DirectX 8.1 - Shader Model 1.4
  • DirectX 9.0 - Shader Model 2.0
  • DirectX 9.0a - Shader Model 2.0a
  • DirectX 9.0b - Shader Model 2.0b
  • DirectX 9.0c - Shader Model 3.0
  • DirectX 10.0* - Shader Model 4.0
  • DirectX 10.1* - Shader Model 4.1
  • DirectX 11.0† - Shader Model 5.0
  • DirectX 11.1† - Shader Model 5.0
  • DirectX 11.2‡ - Shader Model 5.0
  • DirectX 12** - Shader Model 5.1



#pragma target 2.0

Works on all platforms supported by Unity. DX9 shader model 2.0.
Limited amount of arithmetic & texture instructions; 8 interpolators; no vertex texture sampling; no derivatives in
fragment shaders; no explicit LOD texture sampling.

유니티가 지원하는 모든 플랫폼에서 동작. DX9의 셰이더 모델 2.0. 8개의 보간기, 버텍스 텍스쳐 샘플링, 프래그먼트 셰이더에서 미분 없음. LOD 텍스쳐 샘플링 없음


#pragma target 2.5 (default)

Almost the same as 3.0 target (see below), except still only has 8 interpolators, and does not have explicit LOD texture sampling.
Compiles into SM3.0 on DX9, and DX11 feature level 9.3 on Windows Phone.


기본이 되는 셰이더 모델 타겟. 거의 3.0과 같으나 8개의 보간기만을 가지며 역시 LOD 텍스쳐 샘플링 없음.

셰이더 모델은 DX9에서 3.0으로 윈도우 폰에서는 DX11 기능레벨 9.3으로 컴파일 됨


#pragma target 3.0

DX9 shader model 3.0: derivative instructions, texture LOD sampling, 10 interpolators, more math/texture instructions allowed.
Not supported on DX11 feature level 9.x GPUs (e.g. most Windows Phone devices).
Might not be fully supported by some OpenGL ES 2.0 devices, depending on driver extensions present and features used.


DX9 쉐이더 모델 3.0 : 파생 명령, 텍스처 LOD 샘플링, 10 개의 보간, 더 많은 수학 / 텍스처 명령 허용.
DX11 기능 수준 9.x GPU (예 : 대부분의 Windows Phone 장치)에서는 지원되지 않음.
드라이버 확장 기능 및 사용 된 기능에 따라 일부 OpenGL ES 2.0 장치에서 완전히 지원되지 않을 수 있음.



#pragma target 3.5 (or es3.0)

OpenGL ES 3.0 capabilities (DX10 SM4.0 on D3D platforms, just without geometry shaders).
Not supported on DX9, DX11 9.x (WinPhone), OpenGL ES 2.0.
Supported on DX11+, OpenGL 3.2+, OpenGL ES 3+, Metal, Vulkan, PS4/XB1 consoles.
Native integer operations in shaders, texture arrays, etc.


OpenGL ES 3.0 기능(DXD플랫폼에서 지오메트리 셰이더가 없는 DX10의 SM 4.0)

DX9, DX11 9.x(윈폰), OpenGL ES 2.0에서는 지원하지 않음

DX11+, OpenGL 3.2+, OpenGL ES 3+, 메탈, 불칸, PS4,/Xbox one 콘솔 지원

셰이더, 텍스쳐 어레이 등에서 네이티브 정수 연산



#pragma target 4.0

DX11 shader model 4.0.
Not supported on DX9, DX11 9.x (WinPhone), OpenGL ES 2.0/3.0/3.1, Metal.
Supported on DX11+, OpenGL 3.2+, OpenGL ES 3.1+AEP, Vulkan, PS4/XB1 consoles.
Has geometry shaders and everything that es3.0 target has.


DX11 셰이더 모델 4.0

DX9, DX11 9.x(윈폰), OpenGL ES 2.0/3.0/3.1, 메탈에서는 지원되지 않음

DX11+, OpenGL 3.2이상, OpenGL ES3.1 + AEP(Android Extension Pack), 불칸, PS4/Xbox one 콘솔 지원

AEP : https://www.khronos.org/registry/OpenGL/extensions/ANDROID/ANDROID_extension_pack_es31a.txt

지오메트리 셰이더와 ES 3.0 타겟의 모든 것들을 가집니다.



#pragma target 4.5 (or es3.1)

OpenGL ES 3.1 capabilities (DX11 SM5.0 on D3D platforms, just without tessellation shaders).
Not supported on DX9, DX11 before SM5.0, OpenGL before 4.3 (i.e. Mac), OpenGL ES 2.0/3.0.
Supported on DX11+ SM5.0, OpenGL 4.3+, OpenGL ES 3.1, Metal, Vulkan, PS4/XB1 consoles.
Has compute shaders, random access texture writes, atomics etc. No geometry or tessellation shaders.


OpenGL ES 3.1의 기능(D3D 플랫폼의 DX11 SM 5.0, 단 테셀레이션 셰이더가 없는 경우)

DX9, SM 5.0 이전의 DX11, 4.3 이전의 OpenGL(Mac), OpenGL ES 2.0/3.0에서는 지원되지 않음

DX11+ SM 5.0, OpenGL 4.3이상, OpenGL ES 3.1, 메탈, 불칸, PS4/XBOX one 콘솔에서 지원

컴퓨트 셰이더, 렌덤 액세스 텍스쳐 쓰기, 오토믹등. 지오메트리 혹은 테셀레이션 셰이더 없음



#pragma target 4.6 (or gl4.1)

OpenGL 4.1 capabilities (DX11 SM5.0 on D3D platforms, just without compute shaders). This is basically the highest OpenGL level supported by Macs.
Not supported on DX9, DX11 before SM5.0, OpenGL before 4.1, OpenGL ES 2.0/3.0/3.1, Metal.
Supported on DX11+ SM5.0, OpenGL 4.1+, OpenGL ES 3.1+AEP, PS4/XB1 consoles.


OpenGL 4.1기능(컴퓨트 셰이더가 없는 D3D 플랫폼의 DX11 SM 5.0). 이것은 기본적으로 Mac에서 지원되는 가장 높은 OpenGL 레벨임

DX9, SM 5.0 이전의 DX11, 4.1 이전의 OpenGL, OpenGL ES 2.0/3.0/3.1, 메탈에서는 지원되지 않음

DX11+ SM 5.0, OpenGL 4.1+, OpenGL ES 3.1 +AEP, PS4/Xbox One 콘솔에서 지원



#pragma target 5.0

DX11 shader model 5.0.
Not supported on DX9, DX11 before SM5.0, OpenGL before 4.3 (i.e. Mac), OpenGL ES 2.0/3.0/3.1, Metal.
Supported on DX11+ SM5.0, OpenGL 4.3+, OpenGL ES 3.1+AEP, Vulkan, PS4/XB1 consoles.


DX11 셰이더 모델 5.0

DX9, SM 5.0 이전의 DX11, 4.3 이전의 OpenGL(Mac), OpenGL ES 2.0/3.0/3.1, 메탈에서 지원되지 않음

DX11 + 5.0, OpenGL 4.3이상, OpenGL ES 3.1 + AEP, 불칸, PS4/Xbox One 콘솔에서 지원



define에 따라 Shader Model에서 지원되는 플랫폼이 미세하게 다르다. 타겟 플랫폼에 맞춰서 선언해줘야지 무작정 높은것만 때려넣음 제대로 작동하지 않음.


Shader Model 6.0


 2016 GDC에서 공개된 Shader Model. DX12 대응모델 아래는 기사 내용

http://www.4gamer.net/games/033/G003329/20160317117/


Shader Model은 프로그래머블 셰이더의 버전이라고 할 수 있으며, 기본적으로 DX9까지는 2~3.x DX10에서는 4.x, DX 11에서는 5.x가 대응하고 있습니다. DX 12에서는 DX 11과 마찬가지로 5.x를 여전히 사용 중인데, 그 이유는 DX 12가 다른 부분보다는 오버 헤드의 절감에 초점을 맞춰 개발되었기 때문입니다. 따라서 새로운 Shader Model에 대해서는 비교적 최근에서야 검토가 이뤄졌다고 합니다.

Microsoft는 Shader Model 6.0에서 다음과 같은 부분이 변경될 것이라고 말했습니다.

- 셰이더 명령 실행 입도 변경 가능 (SM 5 및 이전에는 1픽셀 단위로만 실행 가능, SM6 부터는 다양하게 실행 가능)
- 차세대 하드웨어를 위한 기능 (VR을 위한 뷰보트, 프로그래머블 블렌딩 등)
- HLSL (High Level Shader Language)에서 컴파일러 기반의 LLVM/Clang 채용



반응형

'Technical Report > Unity Shader' 카테고리의 다른 글

Blend Complex values  (0) 2017.09.18
Unity fragment self shadow casting  (0) 2017.09.18
Unity Fallback 선언에 따른 shader variants 생성자  (0) 2017.08.03
Unity Normal defined function  (0) 2017.07.04
Unity compiler directives  (0) 2017.06.27