Version: 2022.1
HLSL로 셰이더 모델 및 GPU 기능 타게팅
HLSL에서 셰이더 키워드 선언 및 사용

HLSL로 그래픽스 API 및 플랫폼 타게팅

일부 #pragma 지시문은 특정 그래픽스 API와 플랫폼을 타게팅할 수 있도록 하는 파라미터를 가져옵니다. 이 페이지는 이러한 지시문을 사용하는 방법에 대한 정보를 포함하며, 유효한 파라미터 값의 리스트를 제공합니다.

그래픽스 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

특정 그래픽스 API용 그래픽스 티어를 위한 셰이더 배리언트 생성

빌트인 렌더 파이프라인에서 Unity는 특정 조건 하에서 그래픽스 티어에 상응하는 셰이더 배리언트를 자동으로 생성합니다. 필요한 경우 Unity가 이러한 배리언트를 생성하도록 강제할 수도 있습니다.

이를 수행하려면 #pragma hardware_tier_variants 프리 프로세서 지시문을 사용하고 티어 셰이더 배리언트를 생성할 그래픽스 API를 지정하십시오.

예를 들어, 다음은 Unity에게 Metal을 위한 티어 셰이더 배리언트를 컴파일하도록 명령합니다.

# pragma hardware_tier_variants metal

유효한 파라미터 값 리스트

지원되는 값은 다음과 같습니다.

설명
d3d11 DirectX 11 기능 레벨 10 이상, DirectX 12
gles OpenGL ES 2.0, WebGL 1.0
gles3 OpenGL ES 3.x, WebGL 2.0
ps4 PlayStation 4
xboxone Xbox One 및 GameCore, DirectX 11 및 DirectX 12
metal iOS/Mac Metal
glcore OpenGL 3.x, OpenGL 4.x
vulkan Vulkan
switch Nintendo Switch
ps5 PlayStation 5
HLSL로 셰이더 모델 및 GPU 기능 타게팅
HLSL에서 셰이더 키워드 선언 및 사용