Unity에는 미리 정의된 변수와 헬퍼 함수를 가져오기 위해 셰이더 프로그램에서 사용할 수 있는 파일이 몇 개 포함되어 있습니다. 이 작업은 스탠다드 #include
명령으로 수행됩니다. 예제:
CGPROGRAM
// ...
#include "UnityCG.cginc"
// ...
ENDCG
Unity에서 셰이더 포함 파일의 확장자는 .cginc
입니다. 빌트인 셰이더 포함 파일은 다음과 같습니다.
HLSLSupport.cginc
- (자동으로 포함됨) 크로스 플랫폼 셰이더 컴파일용 헬퍼 매크로 및 정의UnityShaderVariables.cginc
- (자동으로 포함됨) 일반적으로 사용되는 전역 변수UnityCG.cginc
- 일반적으로 사용되는 헬퍼 함수
AutoLight.cginc
- 조명 및 섀도우 기능. 예를 들어 표면 셰이더 등에서 이 파일을 내부적으로 사용합니다.Lighting.cginc
- 스탠다드 표면 셰이더 조명 모델. 표면 셰이더 작성 시 자동으로 포함됩니다.TerrainEngine.cginc
- 터레인 및 베지테이션 셰이더용 헬퍼 함수헬퍼 코드에서 수행되는 작업에 대해 정확히 알아보려면 이런 파일을 Unity 애플리케이션에서 확인할 수 있습니다(Windows에서는 {unity install path}/Data/CGIncludes/UnityCG.cginc, Mac에서는 /Applications/Unity/Unity.app/Contents/CGIncludes/UnityCG.cginc).
이 파일은 CGPROGRAM 셰이더를 컴파일할 때 자동으로 포함되지만 HLSLPROGRAM 셰이더를 컴파일하는 경우 포함되지 않습니다. 다양한 프리프로세서 매크로를 선언하여 멀티 플랫폼 셰이더 개발을 지원합니다.
이 파일은 CGPROGRAM 셰이더를 컴파일할 때 자동으로 포함되지만 HLSLPROGRAM 셰이더를 컴파일하는 경우 포함되지 않습니다. 셰이더에 일반적으로 사용되는 다양한 빌트인 전역 변수를 선언합니다.
이 파일은 Unity 셰이더에 종종 포함됩니다. 여러 빌트인 헬퍼 함수와 데이터 구조를 선언합니다.
appdata_base
: 포지션, 노멀 및 텍스처 좌표 1개를 포함한 버텍스 셰이더 입력appdata_tan
: 포지션, 노멀, 탄젠트 및 텍스처 좌표 1개를 포함한 버텍스 셰이더 입력appdata_full
: 포지션, 노멀, 탄젠트, 버텍스 컬러 및 텍스처 좌표 2개를 포함한 버텍스 셰이더 입력appdata_img
: 포지션과 텍스처 좌표 1개를 포함한 버텍스 셰이더 입력