Unity は、シェーダー用のビルトイン・グローバル変数をいくつか提供しています。例えば、現在のオブジェクトの変形マトリックス、ライトパラメーター、現在のタイムなどです。これらは他の変数と同様、 シェーダープログラム で使用します。ただ一つの違いは、宣言する必要がないことです。これらの変数はすべて、自動的に含められるインクルードファイル UnityShaderVariables.cginc
の中で宣言されています。
これらすべてのマトリックスは float4x4
タイプです。
Name | Value |
UNITY_MATRIX_MVP | 現在のモデル*ビュー*射影行列(model*view*projection) |
UNITY_MATRIX_MV | 現在のモデル * ビュー行列。 |
UNITY_MATRIX_V | 現在のビュー行列。 |
UNITY_MATRIX_P | 現在の投影行列 |
UNITY_MATRIX_VP | 現在のビュー行列*射影行列 |
UNITY_MATRIX_T_MV | モデル * ビュー行列の転置行列 |
UNITY_MATRIX_IT_MV | モデル * ビュー行列の逆行列の転置行列 |
_Object2World | 現在のモデルマトリックス |
_World2Object | 現在のワールド行列の逆 |
これらの変数は、レンダリング中の カメラ に対応します。例えば、シャドウマップのレンダリング中であれば、 シャドウマップの投影に使用されている「仮想カメラ」ではなく、カメラコンポーネントの値を参照します。
Name | Type | Value |
_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)、 y は (far/near)、 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 | カメラ錘台面のワールド空間上の方程式です。左、右、下、near、far の順番です。 |
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) |
ライトパラメーターは、どのレンダリング パス が使用されているか、 またどの LightMode Pass タグ がシェーダー内で使用されているかによって、異なる方法でシェーダーにパスされます。
Forward Rendering (パスタイプ ForwardBase
と ForwardAdd
)
Name | Type | Value |
_LightColor0 (declared in Lighting.cginc) | fixed4 | ライトの色 |
_WorldSpaceLightPos0 | float4 | ディレクショナルライト: (ワールド空間方向, 0)、他のライト: (ワールド空間位置, 1) |
_LightMatrix0 (declared in AutoLight.cginc) | float4x4 | ワールドとライトのマトリクス。クッキーと Attenuation テクスチャをサンプリングするのに使用されます。 |
unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0 | float4 | (ForwardBase パスのみ) 重要でない最初の 4つのポイントライトのワールド空間位置。 |
unity_4LightAtten0 | float4 | (ForwardBase パスのみ) 重要でない最初の 4つのポイントライトの Attenuation ファクター。 |
unity_LightColor | half4[4] | (ForwardBase パスのみ) 重要でない最初の 4つのポイントライトの色 |
ライティングパス シェーダー内で使用される、 Deferred シェーディングと Deferred ライティング(すべて UnityDeferredLibrary.cginc) 内で宣言される)
Name | Type | Value |
_LightColor | float4 | ライトの色 |
_LightMatrix0 | float4x4 | ワールドとライトのマトリクス。クッキーと Attenuation テクスチャをサンプリングするのに使用されます。 |
球面調和関数の相互作用 (Ambient とライトプローブにより使用される) は、ForwardBase
、PrePassFinal
、Deferred
いずれかの型のパス向けに設定されます。
それらは3番目の球面調和関数を含み、ワールド空間の法線ベクトルによって評価されます (UnityCG.cgincの ShadeSH9
を参照)。
変数はすべて、half4 型で、unity_SHAr
や似た名前を持っています。
Vertex Lit レンダリングパス詳細 (Vertex
パスタイプ)
1つの Vertex
パスタイプに、8 ライトまで設定できます。常に、最も明るいものから順番になっています。
2つのライトから同時に影響を受けるオブジェクトをレンダリングする場合、配列の最初の 2エントリーを取得するだけで行えます。
オブジェクトに影響するライトが 8つより少ない場合は、残りのライトの色を黒に設定します。
Name | Type | Value |
unity_LightColor | half4[8] | ライトの色 |
unity_LightPosition | float4[8] | ビュー空間ライト位置。ディレクショナルライト (-direction,0)、ポイント/スポットライト (position,1) |
unity_LightAtten | half4[8] | ライト Attenuation ファクター。スポットライト以外の x は cos(spotAngle/2) か –1、スポットライト以外の y は 1/cos(spotAngle/4) か 1、スポットライト以外の z は 2次 Attenuation、スポットライト以外の w は 平方のライト範囲。 |
unity_SpotDirection | float4[8] | ビュー空間スポットライト位置。スポットライト以外は、(0,0,1,0) |
Name | Type | Value |
unity_AmbientSky | fixed4 | gradient と ambient のライティングの場合の Sky ambient ライティングカラー |
unity_AmbientSky | fixed4 | gradient と ambient のライティング場合の Equator ambient ライティングカラー |
unity_AmbientGround | fixed4 | gradient と ambient のライティング場合の Ground Ambient ライティングカラー |
UNITY_LIGHTMODEL_AMBIENT | fixed4 | Ambient ライティングカラー (gradient のライティング場合の sky カラー)。旧変数。 |
unity_FogColor | fixed4 | フォグカラー |
unity_FogParams | float4 | フォグ計算のためのパラメーター: (density / sqrt(ln(2))、density / ln(2)、–1/(end-start)、end/(end-start))。x は Exp2 fog モード用、y は Exp モード用、z と w は Linear モード用。 |
Name | Type | Value |
unity_LODFade | float4 | LOD グループを使用する際の細分化したレベルの fade。x は fade (0..1)、y は16 レベルに量子化された fade、z と w は不使用。 |