作為對shader的深入了解的第一步,需要了解Unity給了我們什麼佐料和食材,現在将其羅列于下。
變量均儲存在UnityCG.cginc檔案中,請include這個檔案。
Transformations 變換
- float4x4 UNITY_MATRIX_MVP
-
Current model*view*projection matrix
目前物體*視*投影矩陣。(注:物體矩陣為 本地->世界)
float4x4 UNITY_MATRIX_MV -
Current model*view matrix
目前物體*視矩陣
float4x4 UNITY_MATRIX_P -
Current projection matrix
目前物體*投影矩陣
float4x4 UNITY_MATRIX_T_MV -
Transpose of model*view matrix
轉置物體*視矩陣
float4x4 UNITY_MATRIX_IT_MV -
Inverse transpose of model*view matrix
逆轉置物體*視矩陣
float4x4 UNITY_MATRIX_TEXTURE0 to UNITY_MATRIX_TEXTURE3 -
Texture transformation matrices
貼圖變換矩陣
float4x4 _Object2World -
Current model matrix
目前物體矩陣
float4x4 _World2Object -
Inverse of current world matrix
物體矩陣的逆矩陣
float3 _WorldSpaceCameraPos -
World space position of the camera
世界坐标空間中的錄影機位置
float4 unity_Scale -
xyz components unused; .w contains scale for uniformly scaled objects.
不适用xyz分量,而是通過w分量包含的縮放值等比縮放物體。
Lighting 光照
In plain ShaderLab, you access the following properties by appending zero at the end: e.g. the light's model*light color is
_ModelLightColor0
. In Cg shaders, they are exposed as arrays with a single element, so the same in Cg is
_ModelLightColor[0]
.
在純粹的ShaderLab中,你可以利用下面這些屬性,隻要在末尾增加一個零數:例如 燈光的物體*燈光顔色是_ModelLightColor0.在Cgshader中這些變量更像是一個包含單一進制素的數組。是以在Cg中他們是這樣的_ModelLightColor[0];
Name | Type | Value |
_ModelLightColor | float4 | Material's Main * Light color 材質的主顔色*燈光顔色 |
_SpecularLightColor | float4 | Material's Specular * Light color 材質的鏡面反射(高光)*燈光顔色。 |
_ObjectSpaceLightPos | float4 | Light's position in object space. w component is 0 for directional lights, 1 for other lights 物體空間中的燈光為,平行光w分量為零其燈光為1; |
_Light2World | float4x4 | Light to World space matrix 燈光轉世界空間矩陣 |
_World2Light | float4x4 | World to Light space matrix 世界轉燈光空間矩陣 |
_Object2Light | float4x4 | Object to Light space matrix 物體轉燈光空間矩陣 |
Various 變量
-
float4 _Time : Time (t/20, t, t*2, t*3), use to animate things inside the shaders
時間: 用于Shasder中可動畫的地方。
-
float4 _SinTime : Sine of time: (t/8, t/4, t/2, t)
時間的正弦值。
-
float4 _CosTime : Cosine of time: (t/8, t/4, t/2, t)
時間的餘弦值
-
float4 _ProjectionParams : 投影參數
x is 1.0 or -1.0, negative if currently rendering with a flipped projection matrix
x為1.0 或者-1.0如果目前渲染使用的是一個反轉的投影矩陣那麼為負。
y is camera's near plane y是錄影機的近剪裁平面
z is camera's far plane z是錄影機遠剪裁平面
w is 1/FarPlane. w是1/遠剪裁平面
-
float4 _ScreenParams : 螢幕參數
x is current render target width in pixels x是目前渲染目标在像素值中寬度
y is current render target height in pixels y是目前渲染目标在像素值中的高度
z is 1.0 + 1.0/width z是1.0+1.0/寬度
w is 1.0 + 1.0/height w是1.0+1.0/高度