버텍스 프로그램에 버텍스 데이터 제공하기(Providing vertex data to vertex programs)
미리 정의된 셰이더 프리프로세서 매크로(Predefined Shader preprocessor macros)

빌트인 셰이더 포함 파일(Built-in shader include files)

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).

HLSLSupport.cginc

이 파일은 CGPROGRAM 셰이더를 컴파일할 때 자동으로 포함되지만 HLSLPROGRAM 셰이더를 컴파일하는 경우 포함되지 않습니다. 다양한 프리프로세서 매크로를 선언하여 멀티 플랫폼 셰이더 개발을 지원합니다.

UnityShaderVariables.cginc

이 파일은 CGPROGRAM 셰이더를 컴파일할 때 자동으로 포함되지만 HLSLPROGRAM 셰이더를 컴파일하는 경우 포함되지 않습니다. 셰이더에 일반적으로 사용되는 다양한 빌트인 전역 변수를 선언합니다.

UnityCG.cginc

이 파일은 Unity 셰이더에 종종 포함됩니다. 여러 빌트인 헬퍼 함수와 데이터 구조를 선언합니다.

UnityCG.cginc의 데이터 구조

  • struct appdata_base: 포지션, 노멀 및 텍스처 좌표 1개를 포함한 버텍스 셰이더 입력
  • struct appdata_tan: 포지션, 노멀, 탄젠트 및 텍스처 좌표 1개를 포함한 버텍스 셰이더 입력
  • struct appdata_full: 포지션, 노멀, 탄젠트, 버텍스 컬러 및 텍스처 좌표 2개를 포함한 버텍스 셰이더 입력
  • struct appdata_img: 포지션과 텍스처 좌표 1개를 포함한 버텍스 셰이더 입력
버텍스 프로그램에 버텍스 데이터 제공하기(Providing vertex data to vertex programs)
미리 정의된 셰이더 프리프로세서 매크로(Predefined Shader preprocessor macros)