Version: 5.3
Unity에서 사용하는 셰이딩 언어
셰이더 데이터 타입 및 정밀도

셰이더 컴파일 타겟 레벨

When writing either Surface Shaders or regular Shader Programs, the Cg/HLSL source can be compiled into different “shader models”. Higher shader compilation targets allow using more modern GPU functionality, but might make the shader not work on older GPUs or platforms.

컴파일 타겟은 #pragma target name 지시자로 표시하며, 예제는 다음과 같습니다.

#pragma target 3.0

기본 컴파일 타겟

By default, Unity compiles shaders into lowest supported target; roughly shader model 2.0 equivalent. Some other compilation directives make the shader automatically be compiled into a higher target:

  • 지오메트리 셰이더를 사용하면(#pragma geometry) 컴파일 타겟을 4.0으로 설정합니다.
  • Using tessellation shaders (#pragma hull or #pragma domain) sets compilation target to gl4.1.

지원되는 #pragma target 이름

아래 리스트는 지원되는 셰이더 모델을 성능의 오름차순으로 나열합니다(일부 경우 더 높은 플랫폼/GPU 요구 사항 순서).

#pragma target 2.0 (default)

  • Unity가 지원하는 모든 플랫폼에서 작동합니다. DX9 셰이더 모델 2.0.
  • 연산 및 텍스처 명령어 수가 제한됩니다. 인터폴레이터 8개, 버텍스 텍스처 샘플링 없음, 프래그먼트 셰이더에 도함수 없음, 명시적 LOD 텍스처 샘플링 없음.

#pragma target 3.0

  • DX9 셰이더 모델 3.0: 도함수 명령어, 텍스처 LOD 샘플링, 인터폴레이터 10개, 더 많은 수학/텍스처 명령어 허용.
  • DX11 기능 레벨 9.x GPU에서는 지원하지 않습니다(예: 대부분의 Windows 휴대폰 기기).
  • 제공되는 드라이버 확장 및 사용 기능에 따라 일부 OpenGL ES 2.0 기기에서 완전히 지원하지 않을 수 있습니다.

#pragma target es3.0

  • OpenGL ES 3.0 성능입니다(D3D 플랫폼에서 DX10 SM4.0, 지오메트리 셰이더는 제외).
  • DX9, DX11 9.x(WinPhone), OpenGL ES 2.0에서 지원하지 않습니다.
  • Supported on DX11+, OpenGL 3.2+, OpenGL ES 3+, Metal, PS4/XB1 consoles.
  • Native integer operations in shaders, etc.

#pragma target 4.0

  • DX11 셰이더 모델 4.0.
  • 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, PS4/XB1 consoles.
  • 지오메트리 셰이더 등 es3.0 타겟의 모든 것이 포함됩니다.

#pragma target es3.1

  • OpenGL ES 3.1 성능입니다(D3D 플랫폼에서 DX11 SM5.0, 테셀레이션 셰이더 제외).
  • Not supported on DX9, DX11 before SM5.0, OpenGL before 4.3 (i.e. Mac), OpenGL ES 2.0/3.0. Not yet supported on Metal.
  • Supported on DX11+ SM5.0, OpenGL 4.3+, OpenGL ES 3.1, PS4/XB1 consoles.
  • 컴퓨트 셰이더, 랜덤 액세스 텍스처 쓰기, 단위 동작 등이 있습니다. 지오메트리 또는 테셀레이션 셰이더는 없습니다.

#pragma target gl4.1

  • OpenGL 4.1 성능입니다(D3D 플랫폼에서 DX11 SM5.0, 컴퓨트 셰이더 제외). Mac이 지원하는 가장 높은 OpenGL 레벨입니다.
  • DX9, SM5.0 이전 DX11, OpenGL 4.1 이전 버전, OpenGL ES 2.0/3.0/3.1, Metal에서 지원하지 않습니다.
  • DX11+ SM5.0, OpenGL 4.1+, OpenGL ES 3.1+AEP, PS4/XB1 콘솔에서 지원합니다.

#pragma target 5.0

  • DX11 셰이더 모델 5.0.
  • DX9, SM5.0 이전 DX11, OpenGL 4.3 이전 버전(Mac), OpenGL ES 2.0/3.0/3.1, Metal에서 지원하지 않습니다.
  • Supported on DX11+ SM5.0, OpenGL 4.3+, OpenGL ES 3.1+AEP, PS4/XB1 consoles.

Note that all OpenGL-like platforms (including mobile) are treated as “capable of shader model 3.0”. WP8/WinRT platforms (DX11 feature level 9.x) are treated as only capable of shader model 2.0.

참고 항목

Unity에서 사용하는 셰이딩 언어
셰이더 데이터 타입 및 정밀도