Unityはたくさんの定義済みの値をシェーダで用意しています。例えば,現在のオブジェクトの変換行列,時間,等。
他のプロパティと同じようにShaderLabで使用するのみで,唯一の違いはどこかで宣言する必要がなく,すでに“定義済み”です。
Programmable Shaders で使用する場合は UnityCG.cginc file をインクルードする必要があります。.
Name | Type | Value |
UNITY_MATRIX_MVP | float4x4 | 現在のモデル*ビュー*射影行列(model*view*projection) |
UNITY_MATRIX_MV | float4x4 | 現在のモデル * ビュー行列。 |
UNITY_MATRIX_V | float4x4 | 現在のビュー行列。 |
UNITY_MATRIX_P | float4x4 | 現在の投影行列 |
UNITY_MATRIX_VP | float4x4 | 現在のビュー行列*射影行列 |
UNITY_MATRIX_T_MV | float4x4 | モデル * ビュー行列の転置行列 |
UNITY_MATRIX_IT_MV | float4x4 | モデル * ビュー行列の逆行列の転置行列 |
UNITY_MATRIX_TEXTURE0 - UNITY_MATRIX_TEXTURE3 | float4x4 | テクスチャ変換行列 |
_Object2World | float4x4 | 現在のモデルマトリックス |
_World2Object | float4x4 | 現在のワールド行列の逆 |
_WorldSpaceCameraPos | float3 | カメラのワールド空間位置 |
unity_Scale | float4 |
xyz コンポーネントを使用せず,w が均一に拡大・縮小するスケールを保持しています |
シンプルなShadelabでは,次のプロパティにアクセスするには末尾に0を付与,すなわちライトのModel×LightColorは_ModelLightColor0
となります。Cgシェーダでは,ひとつの要素をもった配列としてアクセスできるため,Cgでの相当する表現は_ModelLightColor[0]
です。
Name | Type | Value |
_ModelLightColor | float4 | マテリアルのModel×Light color。 |
_SpecularLightColor | float4 | マテリアルのSpecular×Light color。 |
_ObjectSpaceLightPos | float4 | オブジェクト座標系でのライトの位置。_w_コンポーネントが 0 の場合は指向性ライト,1 の場合はその他のライト。 |
_Light2World | float4x4 | ライトからワールド座標系の行列。 |
_World2Light | float4x4 | ワールドからライト座標系の行列。 |
_Object2Light | float4x4 | オブジェクトからライト座標系の行列。 |
Name | Type | Value |
_Time | float4 | 時間 (t/20,t,t×2,t×3),シェーダの中でアニメーションするのに使用。 |
_SinTime | float4 | 時間の正弦: (t/8, t/4, t/2, t). |
_CosTime | float4 | 時間の余弦: (t/8, t/4, t/2, t). |
unity_DeltaTime | float4 | デルタ時間: (dt,1/dt,smoothDt,1/smoothDt) |
_ProjectionParams | float4 |
x は 1.0 または –1.0,反転した射影行列で現在レンダリングしている場合は負の値。 y はカメラに近い平面,z はカメラの遠い平面,w は 1/FarPlaneです |
_ScreenParams | float4 |
x はピクセルの現在のレンダーターゲット幅。y はピクセルの現在のレンダーターゲット高さ,z は 1.0 + 1.0/width,w は 1.0 + 1.0/height |