ShaderLab builtin values

Unity는 사용자의 쉐이더를 위한 다양한 내장 값들을 제공합니다: 현재 물체의 변형 매트릭스, 시간 등과 같은 것들.

사용자는 사용자가 다른 소성들을 사용하는 것처럼 단순히ShaderLab에서 그들을 사용합니다. 유일한 차이점은 사용자가 그것이 내장된 것이라는 것을 어느 곳에서 선언할 필요가 없다는 것입니다.

programmable shaders에서 그들을 사용하는 것은_UnityCG.cginc_ 파일을 포함하는 것을 필요로 합니다.

Transformations

  • float4x4 UNITY_MATRIX_MVP : 현재 모델 *view*프로젝션 매트릭스]
  • float4x4 UNITY_MATRIX_MV : 현재 모델 *view*매트릭스
  • float4x4 UNITY_MATRIX_P : 현재 프로젝션 매트릭스
  • float4x4 UNITY_MATRIX_T_MV : 모델*view*매트릭스 전치
  • float4x4 UNITY_MATRIX_IT_MV : 모델*view*매트릭스 역전치
  • float4x4 UNITY_MATRIX_TEXTURE0 to UNITY_MATRIX_TEXTURE3 : 텍스쳐 변형 매트릭스
  • float4x4 _Object2World : 현재 모델 매트릭스
  • float4x4 _World2Object : 현재 세계 매트릭스의 역
  • float3 _WorldSpaceCameraPos : 카메라의 세계 공간 위치
  • float4 unity_Scale : 사용되지 않는 xyz컴포넌트; .w는 균등히 스케일된 물체들을 위한 스케일을 포함합니다.

Lighting

보통의ShaderLab에서 사용자는 끝에 0를 붙이는 것에 의해 다음의 속성에 접근이 가능합니다: 예를 들어 조명 모델 * 조명 새상은_ModelLightColor0입니다. Cg 쉐이더에서 그들은 하나의 구성 요소를 가지는 배열로서 나타내집니다. 그래서Cg에서 같은 것은_ModelLightColor[0]입니다.

_Name_ _Type_ _Value_
_ModelLightColor float4 Material's Main * Light color
_SpecularLightColor float4 Material's Specular * Light color
_ObjectSpaceLightPos float4 오브젝트 스페이스에서 조명의 위치. w 컴포넌트는 방향성 있는 조명을 위해서는 0을 다른 조명을 위해서는 1을 가집니다.
_Light2World float4x4 조명을 세계 스페이스로 보내는 매트릭스
_World2Light float4x4 세계를 조명 스페이스로 보내는 매트릭스
_Object2Light float4x4 float4x4 오브젝트를 조명 스페이스로 보내는 매트릭스

Various

  • float4 _Time : Time (t/20, t, t*2, t*3), 쉐이더 내부의 것들을 움직이게 하기 위해서 사용합니다
  • float4 _SinTime : 시간의 사인값: (t/8, t/4, t/2, t)
  • float4 _CosTime : 시간의 코사인값: (t/8, t/4, t/2, t)
  • float4 _ProjectionParams :

x는 1.0 or -1.0, 뒤짚어진 프로젝션 매트릭스로 현재 표현하고 있으면 음의 값

''y''는 카메라의 가까운 평면 입니다\\
''z''는 카메라의 멀리 떨어진 평면 입니다 \\
''w''는 1/FarPlane.
* //float4 _ScreenParams// : \\
''x''는 픽셀로 나타나는 현재 렌더 타겟 너비입니다\\
''y''는 픽셀로 나타나는 현재 렌더 타겟 높이입니다\\
''z''는 1.0 + 1.0/너비 \\
''w''는 1.0 + 1.0/높이

역링크