정점 프로그램에 정점 데이터의 흐름
정의된 쉐이더 전처리 매크로(Predefined shader preprocessor macros)

내장 쉐이더 include 파일

Unity는 자신의 shader programs으로, 정의된 변수와 헬퍼 함수를 사용할 수 있는 몇 가지 파일을 갖게 할 수 있습니다. 이것은 표준 #include 지시어로 할 수 있습니다, ​​예를 들면 :

CGPROGRAM
// ...
#include "UnityCG.cginc"
// ...
ENDCG

HLSLSupport.cginc - (자동으로 포함) 헬퍼 매크로 및 크로스 플랫폼 쉐이더 컴파일의 정의 UnityShaderVariables.cginc - (자동으로 포함) 일반적으로 사용되는 전역 변수.

UnityCG.cginc - 일반적으로 사용되는 헬퍼 함수. AutoLight.cginc - 라이팅과 그림자 기능, 즉 surface shaders는 내부적으로 이 파일을 사용합니다. Lighting.cginc - 표준적인 surface shader 라이팅 모델, 표면 쉐이더를 작성할 때 자동으로 포함됩니다. TerrainEngine.cginc - Terrain(지형)과 Vegetation(식물) 쉐이더의 헬퍼 함수.

이 파일은 Unity 응용 프로그램(Windows에서는 {unity install path}/Data/CGIncludes/UnityCG.cginc, Mac에서는/Applications/Unity/Unity.app/Contents/CGIncludes/UnityCG.cginc)에서 찾을 수 있으므로, 내용을 보고 헬퍼 코드가 구체적으로 무엇을 하고 있는지 보고 싶다면 참조하십시오.

HLSLSupport.cginc

이 파일은 쉐이더를 컴파일할 때 _자동으로 포함_됩니다. 멀티-플랫폼 쉐이더 개발을 돕기 위해, 다양한 preprocessor macros를 정의합니다.

UnityShaderVariables.cginc

이 파일은 쉐이더를 컴파일할 때 _자동으로 포함_됩니다. 멀티 플랫폼 쉐이더 개발을 돕기 위해, 다양한 preprocessor macros를 정의합니다.

UnityCG.cginc

이 파일은 많은 헬퍼 함수를 가져오기 위해서 Unity 쉐이더에 자주 포함됩니다.

UnityCG.cginc 데이터 구조

  • struct appdata_base: 위치, 법선, 텍스처 좌표, 정점 쉐이더 입력.
  • struct appdata_tan: 위치, 법선, 접선, 한 개의 텍스처 좌표의 정점 쉐이더 입력.
  • struct appdata_full: 위치, 법선, 접선, 정점 색상, 두 개의 텍스처 좌표의 정점 쉐이더 입력.
  • struct appdata_img : 위치, 한 개의 텍스처 좌표의 정점 쉐이더 입력.

Unity 쉐이더 include 파일은 .cginc 확장자가 붙어 있고, 내장되어 있는 것은 :

정점 프로그램에 정점 데이터의 흐름
정의된 쉐이더 전처리 매크로(Predefined shader preprocessor macros)