Version: Unity 6.0 (6000.0)
언어 : 한국어
HLSL semantics reference
HLSL pragma target 커맨드 레퍼런스

HLSL pragma 지시문 레퍼런스

표준 pragma 지시문

Unity는 표준 HLSL의 일부인 모든 #pragma 지시문을 지원합니다(지시문이 일반 include 파일에 있는 한). 이러한 지시문에 대한 자세한 내용은 HLSL 기술 자료 pragma 지시문을 참조하십시오.

표면 셰이더

표면 셰이더를 작성하는 경우, 이 지시문을 사용하여 컴파일러에 표면 함수로 사용할 함수를 알리고 해당 함수로 데이터를 전달하십시오.

상태 기능
#pragma surface <surface function> <lighting model> <optional parameters> 특정 조명 모델과 함께 작동하도록 특정한 이름의 함수를 표면 셰이더로 컴파일합니다. 자세한 내용은 표면 셰이더를 참조하십시오.

셰이더 단계

일반 그래픽스 셰이더를 작성하는 경우 다음 지시문을 사용하여 다양한 셰이더 단계에 사용할 함수를 컴파일러에 알립니다. #pragma vertex#pragma fragment 지시문은 필수이지만 다른 단계는 선택 사항입니다.

상태 기능
#pragma vertex <name> 특정한 이름의 함수를 버텍스 셰이더로 컴파일합니다. <name>을 함수 이름으로 바꿉니다. 이 지시문은 일반 그래픽스 셰이더에서 필요합니다.
#pragma fragment <name> 특정한 이름의 함수를 프래그먼트 셰이더로 컴파일합니다. <name>을 함수 이름으로 바꿉니다. 이 지시문은 일반 그래픽스 셰이더에서 필요합니다.
#pragma geometry <name> 특정한 이름의 함수를 지오메트리 셰이더로 컴파일합니다. <name>을 함수 이름으로 바꿉니다. 이 옵션은 #pragma require geometry를 자동으로 활성화합니다. 자세한 내용은 HLSL의 셰이더 모델 및 GPU 기능 타게팅을 참조하십시오.

참고: Metal은 지오메트리 셰이더를 지원하지 않습니다.
#pragma hull <name> 특정한 이름의 함수를 DirectX 11 헐 셰이더로 컴파일합니다. <name>을 함수 이름으로 바꿉니다. 이 옵션은 #pragma require tessellation을 자동으로 추가합니다. 자세한 내용은 HLSL의 셰이더 모델 및 GPU 기능 타게팅을 참조하십시오.
#pragma domain <name> 특정한 이름의 함수를 DirectX 11 도메인 셰이더로 컴파일합니다. <name>을 함수 이름으로 바꿉니다. 이 옵션은 #pragma require tessellation를 자동으로 활성화합니다. 자세한 내용은 HLSL의 셰이더 모델 및 GPU 기능 타게팅을 참조하십시오.

셰이더 배리언트 및 키워드

이러한 지시문을 사용하여 셰이더 배리언트 및 키워드를 처리하는 방식을 셰이더 컴파일러에 알립니다. 자세한 내용은 HLSL에서 셰이더 키워드 선언 및 사용을 참조하십시오.

지시문 설명
#pragma multi_compile <keywords> 키워드 컬렉션을 선언합니다. 컴파일러는 빌드에 있는 모든 키워드를 포함합니다.

_local과 같은 접미사를 사용하여 추가 옵션을 설정할 수 있습니다.

자세한 내용과 지원되는 접미사 목록은 HLSL에서 셰이더 키워드 선언 및 사용을 참조하십시오.
#pragma shader_feature <keywords> 키워드 컬렉션을 선언합니다. 컴파일러는 빌드에서 사용되지 않는 키워드를 제외합니다.

_local과 같은 접미사를 사용하여 추가 옵션을 설정할 수 있습니다.

자세한 내용과 지원되는 접미사 목록은 HLSL에서 셰이더 키워드 선언 및 사용을 참조하십시오.
#pragma hardware_tier_variants <values> 빌트인 렌더 파이프라인 전용: 특정 그래픽스 API에 대해 컴파일할 때 그래픽스 티어에 대한 키워드를 추가합니다. 자세한 내용은 그래픽스 티어를 참조하십시오.
#pragma skip_variants <list of keywords> 지정된 키워드를 스트리핑합니다.

GPU 요구 사항 및 셰이더 모델 지원

이러한 지시문을 사용하여 셰이더가 특정한 GPU 기능을 필요로 한다는 사실을 컴파일러에 전달하십시오.

상태 기능
#pragma target <value> 이 셰이더 프로그램이 호환되는 최소 셰이더 모델입니다. <value>를 유효한 값으로 바꿉니다. 유효한 값 목록은 셰이더 컴파일: HLSL의 셰이더 모델 및 GPU 기능 타게팅을 참조하십시오.
#pragma require <value> 이 셰이더와 호환되는 최소 GPU 기능입니다. <value>를 유효한 값으로, 또는 공백으로 구분된 여러 유효한 값으로 바꿉니다. 유효한 값 목록은 셰이더 컴파일: HLSL의 셰이더 모델 및 GPU 기능 타게팅을 참조하십시오.

그래픽스 API

이러한 지시문을 사용하여 Unity에 특정한 그래픽스 API에 대해 코드를 포함하거나 제외할 것을 전달하십시오.

상태 기능
#pragma only_renderers <value> 특정 그래픽스 API에 대해서만 이 셰이더 프로그램을 컴파일합니다. <values>를 공백으로 구분된 유효한 값 목록으로 바꿉니다. 자세한 내용과 유효한 값 목록은 HLSL의 그래픽스 API 및 플랫폼 타게팅을 참조하십시오.

예를 들어 #pragma only_renderers glcore는 데스크톱 OpenGL에 대해서만 컴파일합니다. ES 3 타겟처럼 기본 셰이더가 OpenGL 2.x를 지원하는 한편 셰이더 모델 5.0 기능을 요구하는 셰이더가 OpenGL 4.2+를 요구하는 모든 데스크톱 OpenGL 버전을 포함하도록 스케일을 확대합니다.
#pragma exclude_renderers <value> 특정 그래픽스 API에 대해 이 셰이더 프로그램을 컴파일하지 마십시오. <value>를 공백으로 구분된 유효한 값 목록으로 바꿉니다. 자세한 내용과 유효한 값 목록은 HLSL의 그래픽스 API 및 플랫폼 타게팅을 참조하십시오.

기타 pragma 지시문

상태 기능
#pragma instancing_options <options> 특정한 옵션으로 이 셰이더에서 GPU 인스턴싱을 활성화합니다. 자세한 내용은 GPU 인스턴싱을 참조하십시오.
#pragma once 이 지시문을 파일에 넣으면 컴파일러가 셰이더 프로그램에 파일을 한 번만 포함합니다.

참고: Unity는 캐시 셰이더 프리 프로세서가 활성화된 경우에만 이 지시문을 지원합니다.
#pragma enable_d3d11_debug_symbols 지원되는 그래픽스 API에 대한 셰이더 디버그 심볼을 생성하고 모든 그래픽스 API에 대한 최적화를 비활성화합니다. 외부 툴에서 셰이더 코드를 디버깅하는 데 사용합니다.

Unity는 Vulkan, DirectX 11 및 12와 지원되는 콘솔 플랫폼용 디버그 심볼을 생성합니다.

경고: 이를 사용하면 파일 크기가 증가하고 셰이더 성능이 저하됩니다. 셰이더 디버깅을 마치고 애플리케이션의 최종 빌드를 만들 준비가 되면 셰이더 소스 코드에서 이 줄을 제거하고 셰이더를 다시 컴파일합니다.
#pragma skip_optimizations <value> 특정 그래픽스 API에 대한 최적화를 해제합니다. <values>를 공백으로 구분된 유효한 값 목록으로 바꿉니다. 유효한 값 목록은 HLSL의 그래픽스 API 및 플랫폼 타게팅을 참조하십시오.
#pragma hlslcc_bytecode_disassembly 디스어셈블된 HLSLcc 바이트코드를 변환된 셰이더에 포함합니다.
#pragma disable_fastmath NaN 처리를 포함하는 정확한 IEEE 754 규칙을 활성화합니다. 이는 현재 Metal 플랫폼에만 영향을 줍니다.
#pragma editor_sync_compilation 동기 컴파일을 강제로 수행합니다. 이는 Unity 에디터에 영향을 줍니다. 자세한 내용은 비동기 셰이더 컴파일을 참조하십시오.
#pragma enable_cbuffer HLSLSupport의 CBUFFER_START(name)CBUFFER_END 매크로를 사용할 때 cbuffer(name)을 방출합니다. 이는 현재 플랫폼이 상수 버퍼를 지원하지 않더라도 마찬가지입니다.
HLSL semantics reference
HLSL pragma target 커맨드 레퍼런스