일부 #pragma 지시문은 특정 그래픽스 API 및 플랫폼을 타게팅할 수 있는 파라미터를 받습니다. 이 페이지는 해당 지시문 사용에 대한 정보를 포함하고 유효한 파라미터 값 목록을 제공합니다.
기본적으로 Unity는 현재 빌드 타겟의 목록에 있는 각 그래픽스 API에 대한 모든 셰이더 프로그램을 컴파일합니다. 특정 그래픽스 API에 대해서만 특정 셰이더 프로그램을 컴파일해야 할 때도 있습니다. 예를 들어 모든 플랫폼에서 지원되지 않는 기능을 사용하는 경우가 있습니다.
특정 API에 대해서만 셰이더 프로그램을 컴파일하려면 #pragma only_renderers 지시문을 사용하십시오. 공백으로 구분된 여러 값을 전달할 수 있습니다.
이 예제는 Metal과 Vulkan만을 위해 셰이더를 컴파일하는 방법을 나타냅니다.
#pragma only_renderers metal vulkan
특정 컴파일러의 컴파일에서 셰이더 코드를 제외하려면 #pragma exclude_renderers 지시문을 사용하십시오. 공백으로 구분된 여러 값을 전달할 수 있습니다.
이 예제는 Metal과 Vulkan을 위한 컴파일에서 셰이더를 제외하는 방법을 나타냅니다.
#pragma exclude_renderers metal vulkan
빌트인 렌더 파이프라인에서 Unity는 그래픽스 티어에 해당하는 셰이더 배리언트를 생성할 수 있습니다. 필요한 경우 Unity가 이러한 배리언트를 강제로 생성할 수도 있습니다.
이를 수행하려면 #pragma hardware_tier_variants 프리 프로세서 지시문을 사용하고 티어 셰이더 배리언트를 생성할 그래픽스 API를 지정하십시오.
예를 들어, 다음은 Unity에 Metal을 위한 티어 셰이더 배리언트를 컴파일하도록 명령합니다.
#pragma hardware_tier_variants metal
지원되는 값은 다음과 같습니다.
| 값 | 설명 | |
|---|---|---|
d3d11 |
DirectX 11 기능 레벨 10 이상, DirectX 12 | |
glcore |
OpenGL 3.x, OpenGL 4.x | |
gles3 |
OpenGL ES 3.x, WebGL 2.0 | |
metal |
iOS 또는 Mac용 Metal | |
ps4 |
PlayStation®4 | |
ps5 |
PlayStation®5 | |
switch |
Nintendo Switch™ | |
vulkan |
Vulkan | |
xboxseries |
Xbox Series S | X |