Unity의 빌트인 포함 파일에는 현재 오브젝트의 변환 매트릭스, 광원 파라미터, 현재 시간 같은 셰이더용 전역 변수가 포함되어 있습니다. 다른 변수처럼 셰이더 프로그램에서 사용하지만 관련 포함 파일을 포함하면 선언할 필요가 없습니다.
포함 파일에 대한 자세한 내용은 빌트인 포함 파일을 참조하십시오.
다음의 모든 매트릭스는 float4x4 유형이고, 열 우선입니다.
| 이름 | 값 |
|---|---|
| UNITY_MATRIX_MVP | 현재 모델 * 뷰 * 투사 매트릭스 |
| UNITY_MATRIX_MV | 현재 모델 * 뷰 매트릭스 |
| UNITY_MATRIX_V | 현재 뷰 매트릭스 |
| UNITY_MATRIX_P | 현재 투사 매트릭스 |
| UNITY_MATRIX_VP | 현재 뷰 * 투사 매트릭스 |
| UNITY_MATRIX_T_MV | 모델의 전치 * 뷰 매트릭스 |
| UNITY_MATRIX_IT_MV | 모델의 역 전치 * 뷰 매트릭스 |
| unity_ObjectToWorld | 현재 모델 매트릭스 |
| unity_WorldToObject | 현재 월드 매트릭스의 역 |
이 변수는 렌더링 중인 카메라에 해당합니다. 예를 들어 섀도우맵 렌더링 중에도 이 변수는 여전히 Camera 컴포넌트 값을 참조하며 섀도우맵 투사를 위해 사용되는 ‘가상 카메라’를 참조하지 않습니다.
| 이름 | 유형 | 값 | |
|---|---|---|---|
| WorldSpaceCameraPos ||float3 | 카메라의 월드 공간 위치입니다. | |ProjectionParams | float4 |
x는 1.0(또는 현재 뒤집힌 투사 매트릭스로 렌더링하는 경우 –1.0), y는 카메라의 근접 평면, z는 카메라의 원거리 평면, w는 1/FarPlane입니다. |
|
ScreenParams ||float4 | x는 카메라의 타겟 텍스처의 너비(픽셀), y는 카메라의 타겟 텍스처의 높이(픽셀), z는 1.0+1.0/너비, w는 1.0+1.0/높이입니다. |
|ZBufferParams |
float4 | Z 버퍼 값을 선형화하는 데 사용됩니다. | |
x |
1-far/near, 또는 UNITY_REVERSED_Z가 1로 설정된 경우에는 -1+far/near입니다. UNITY_REVERSED_Z에 대한 자세한 내용은 플랫폼 기능 기반 브랜치를 참조하십시오. |
||
y |
|||
far/near, 또는 UNITY_REVERSED_Z가 1로 설정된 경우는 1입니다. UNITY_REVERSED_Z에 대한 자세한 내용은 플랫폼 기능 기반 브랜치를 참조하십시오. |
|||
z |
|||
x/far |
|||
w |
|||
y/far |
|||
| unity_OrthoParams | float4 |
x는 직교 카메라의 너비이고, y는 직교 카메라의 높이이며, z는 사용되지 않고, w는 카메라가 직교이면 1.0이고 원근이면 0.0입니다. |
|
| unity_CameraProjection | float4x4 | 카메라의 투사 매트릭스입니다. | |
| unity_CameraInvProjection | float4x4 | 카메라의 투사 매트릭스의 역순입니다. | |
| unity_CameraWorldClipPlanes[6] | float4 | 카메라 절두체 평면 월드 공간 방정식이며 왼쪽, 오른쪽, 아래, 위쪽, 근처, 먼 쪽 순서입니다. | |
시간은 초 단위로 측정되며 프로젝트의 시간 설정에서 시간 멀티플라이어로 조정됩니다. 조정되지 않은 시간에 대한 액세스를 제공하는 빌트인 변수는 없습니다.
| 이름 | 유형 | 값 |
|---|---|---|
| Time |float4 | 레벨 로딩 시점부터의 시간(t/20, t, t2, t3)으로, 셰이더 내에서 애니메이션을 위해 사용합니다. | |SinTime | float4 | 시간의 사인(Sin): (t/8, t/4, t/2, t) |
| _CosTime | float4 | 시간의 코사인(Cos): (t/8, t/4, t/2, t) |
| unity_DeltaTime | float4 | 델타 시간: (dt, 1/dt, smoothDt, 1/smoothDt) |
광원 파라미터는 셰이더에서 어떤 렌더링 경로가 사용되는지, 어떤 LightMode 패스 태그가 사용되는지에 따라 다른 방법으로 셰이더에 전달됩니다.
포워드 렌더링(ForwardBase 및 ForwardAdd 패스 유형):
| 이름 | 유형 | 값 |
|---|---|---|
| LightColor0 (UnityLightingCommon.cginc에 선언됨) | fixed4 |광원 컬러 | |WorldSpaceLightPos0 | float4 | 방향 광원: (월드 공간 방향, 0). 기타 광원: (월드 공간 위치, 1) |
| unity_WorldToLight (AutoLight.cginc에 선언됨) | float4x4 | 월드-광원 매트릭스입니다. 쿠키 및 감쇠 텍스처를 샘플링하기 위해 사용합니다. |
| unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0 | float4 | (ForwardBase 패스 한정) 중요하지 않은 첫 네 개 점 광원의 월드 공간 위치입니다. |
| unity_4LightAtten0 | float4 | (ForwardBase 패스 한정) 중요하지 않은 첫 네 개 점 광원의 감쇠 인자입니다. |
| unity_LightColor | half4[4] | (ForwardBase 패스 한정) 중요하지 않은 첫 네 개 점 광원의 컬러입니다. |
| unity_WorldToShadow | float4x4[4] | 월드-그림자 매트릭스입니다. 스폿 광원에 한 개의 매트릭스, 방향 광원 캐스케이드에 최대 네 개의 매트릭스를 지원합니다. |
조명 패스 셰이더에 사용되는 디퍼드 섀이딩(모두 UnityDeferredLibrary.cginc에 선언됨):
| 이름 | 유형 | 값 |
|---|---|---|
| _LightColor | float4 | 광원 컬러 |
| unity_WorldToLight | float4x4 | 월드-광원 매트릭스입니다. 쿠키 및 감쇠 텍스처를 샘플링하기 위해 사용합니다. |
| unity_WorldToShadow | float4x4[4] | 월드-그림자 매트릭스입니다. 스폿 광원에 한 개의 매트릭스, 방향 광원 캐스케이드에 최대 네 개의 매트릭스를 지원합니다. |
스피리컬 하모닉 계수(앰비언트 및 라이트 프로브에서 사용됨)는 ForwardBase 및 Deferred 패스 유형을 위해 설정됩니다. 이 계수는 월드 공간 노멀에 의해 계산되기 위해 3차 SH를 포함합니다(UnityCG.cginc의 ShadeSH9 참조). 이 변수는 모두 half4 유형이며 unity_SHAr 및 이와 비슷한 이름을 가집니다.
버텍스 릿 렌더링(Vertex 패스 유형):
최대 8개의 광원이 Vertex 패스 유형을 위해 설정됩니다. 항상 가장 밝은 광원에서 어두운 광원 순으로 정렬됩니다. 따라서 두 개의 광원에 동시에 영향을 받는 오브젝트를 렌더링하려면 배열의 처음 두 항목을 가져오면 됩니다. 오브젝트에 영향을 미치는 광원이 8개 미만이면, 나머지는 검은색으로 설정됩니다.
| 이름 | 유형 | 값 |
|---|---|---|
| unity_LightColor | half4[8] | 광원 컬러 |
| unity_LightPosition | float4[8] | 뷰 공간 광원 위치입니다. 방향 광원: (-방향,0). 포인트/스폿 광원: (위치,1). |
| unity_LightAtten | half4[8] | 광원 감쇠 인자입니다. x_는 cos(spotAngle/2)이거나 스폿 광원이 아닌 경우 –1입니다. y_는 1/cos(spotAngle/4)이거나 스폿 광원이 아닌 경우 1입니다. z_는 2차 감쇠이며, w_는 광원 범위 제곱입니다. |
| unity_SpotDirection | float4[8] | 뷰 공간 스폿 광원 위치. 비스폿 광원(0,0,1,0)입니다. |
| 이름 | 유형 | 값 |
|---|---|---|
| unity_Lightmap | Texture2D | 라이트맵 정보가 들어 있습니다. |
| unity_LightmapST | float4[8] | UV 정보를 스케일링하고 올바른 범위로 변환하여 라이트맵 텍스처를 샘플링합니다. |
| 이름 | 유형 | 값 |
|---|---|---|
| unity_AmbientSky | fixed4 | 그레디언트 주변 조명 케이스의 스카이 주변 조명 컬러 |
| unity_AmbientEquator | fixed4 | 그레디언트 주변 조명 케이스의 이퀘이터 주변 조명 컬러 |
| unity_AmbientGround | fixed4 | 그레디언트 주변 조명 케이스의 그라운드 주변 조명 컬러 |
| unity_IndirectSpecColor | fixed4 |
스카이박스를 사용하는 경우 이 값은 스카이박스의 평균 컬러이며, Unity는 앰비언트 프로브의 스피리컬 하모닉 데이터의 DC 컴포넌트를 사용하여 계산합니다. 그렇지 않으면 검은색입니다. |
| UNITY_LIGHTMODEL_AMBIENT | fixed4 | 주변 조명 컬러(그레디언트 앰비언트인 경우 하늘색). 레거시 변수. |
| unity_FogColor | fixed4 | 안개 컬러 |
| unity_FogParams | float4 | 안개 계산을 위한 파라미터: (density / sqrt(ln(2)), density / ln(2), –1/(end-start), end/(end-start)). x_는 Exp2 안개 모드, y_는 Exp 모드, z 및 _w_는 리니어 모드에 유용합니다. |
##기타
| 이름 | 유형 | 값 | ||
|---|---|---|---|---|
| unity_LODFade | float4 | LODGroup을 사용할 때의 페이드 정밀도 수준입니다. x_는 (0..1) 사이의 페이드, y_는 16단계로 양자화된 페이드, z 및 w_는 사용되지 않습니다. | |TextureSampleAdd | float4 | 텍스처가 Alpha8 포맷으로 사용되는지 여부(사용되면 값이 (1,1,1,0)으로, 사용되지 않으면 값이 (0,0,0,0)으로 설정됨)에 따라 Unity가 UI 전용으로 자동 설정합니다. |