Unity のビルトインのインクルードファイルには、シェーダー用のグローバル変数が含まれています。使用中のオブジェクトの変換行列、ライトパラメーター、現在の時間などです。これらは他の変数と同様に シェーダープログラム で使用しますが、関連するインクルードファイルをインクルードしていれば、宣言する必要はありません。
インクルードファイルの詳細については、ビルトインのインクルードファイル を参照してください。
これらのマトリックスはすべて、float4x4
タイプで、列優先 (column major) です。
名前 | 値 |
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 | 現在のワールド行列の逆変換 |
これらの変数は、レンダリング中の カメラ に対応します。例えば、シャドウマップのレンダリング中であれば、シャドウマップの投影に使用されている “仮想カメラ” ではなく、カメラコンポーネントの値を参照します。
名前 | タイプ | 値 |
_WorldSpaceCameraPos | float3 | カメラのワールド空間位置 |
_ProjectionParams | float4 |
x は 1.0 または –1.0、反転した射影行列で現在レンダリングしている場合は負の値。y はカメラのニアクリップ面、z はカメラのファークリップ面、w は 1/ファークリップ面 です。 |
_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 の順番です。 |
時間は秒単位で計測され、プロジェクトの Time 設定 にある Time multiplier (時間の倍率) でスケールされます。スケールされていない時間にアクセスするためのビルトイン変数はありません。
名前 | タイプ | 値 |
_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
)
名前 | タイプ | 値 |
_LightColor0 (UnityLightingCommon.cginc で宣言されています) | fixed4 | ライトの色 |
_WorldSpaceLightPos0 | float4 | ディレクショナルライト: (ワールド空間方向のxyz, 0)、他のライト: (ワールド空間位置のxyz, 1) |
unity_WorldToLight (AutoLight.cginc で宣言されています) | float4x4 | ワールドとライトの配列。クッキーと減衰テクスチャをサンプリングするのに使用されます。 |
unity_4LightPosX0, unity_4LightPosY0, unity_4LightPosZ0 | float4 | (ForwardBase パスのみ) 重要でない最初の 4つのポイントライトのワールド空間位置。 |
unity_4LightAtten0 | float4 | (ForwardBase パスのみ) 重要でない最初の 4つのポイントライトの Attenuation ファクター。 |
unity_LightColor | half4[4] | (ForwardBase パスのみ) 重要でない最初の 4つのポイントライトの色 |
unity_WorldToShadow | float4x4[4] | World-to-shadow matrices. One matrix for Spot Lights, up to four for directional light cascades. |
ライティングパス シェーダー内で使用される、 Deferred シェーディングと Deferred ライティング(すべて UnityDeferredLibrary.cginc) 内で宣言される)
名前 | タイプ | 値 |
_LightColor | float4 | ライトの色 |
unity_WorldToLight | float4x4 | ワールドとライトの配列。クッキーと減衰テクスチャをサンプリングするのに使用されます。 |
unity_WorldToShadow | float4x4[4] | World-to-shadow matrices. One matrix for Spot Lights, up to four for directional light cascades. |
球面調和関数の相互作用 (アンビエントライトとライトプローブにより使用される) は、ForwardBase
、PrePassFinal
、Deferred
いずれかのタイプのパス向けに設定されます。
それらは 3次元の球面調和関数を含み、ワールド空間の法線ベクトルによって評価されます (UnityCG.cgincの ShadeSH9
を参照)。
変数はすべて、half4 型で、unity_SHAr
や似た名前を持っています。
Vertex Lit レンダリングパス詳細 (Vertex
パスタイプ)
1つの Vertex
パスタイプに、8 ライトまで設定できます。常に、最も明るいものから順番になっています。
そのため、2つのライトから同時に影響を受けるオブジェクトをレンダリングする場合は、配列の最初の 2つを取得します。
オブジェクトに影響するライトが 8つより少ない場合は、残りのライトの色を黒に設定します。
名前 | タイプ | 値 |
unity_LightColor | half4[8] | ライトの色 |
unity_LightPosition | float4[8] | View-space light positions. (-direction,0) for directional lights; (position,1) for Point or Spot Lights. |
unity_LightAtten | half4[8] | Light attenuation factors. x is cos(spotAngle/2) or –1 for non-Spot Lights; y is 1/cos(spotAngle/4) or 1 for non-Spot Lights; z is quadratic attenuation; w is squared light range. |
unity_SpotDirection | float4[8] | View-space Spot Lights positions; (0,0,1,0) for non-Spot Lights. |
名前 | タイプ | 値 |
unity_Lightmap | Texture2D | ライトマップの情報を含みます。 |
unity_LightmapST | float4[8] | UV 情報を、ライトマップテクスチャをサンプリングするための正しい範囲にスケールし変換します。 |
名前 | タイプ | 値 |
unity_AmbientSky | fixed4 | グラデーションのアンビエントライトの場合のスカイアンビエントライトのカラー |
unity_AmbientEquator | fixed4 | グラデーションのアンビエントライトの場合の赤道のアンビエントライトのカラー |
unity_AmbientGround | fixed4 | グラデーションのアンビエントライトの場合の地面のアンビエントライトのカラー |
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 fog モード用、y は Exp モード用、z と w は Linear モード用。 |
名前 | タイプ | 値 |
unity_LODFade | float4 | LOD グループ を使用する場合の LOD フェード。x は fade (0..1)、y は16 レベルに数値化された fade、z と w は不使用。 |
_TextureSampleAdd | float4 | UI 専用に Unity によって自動的に設定されます。使用するテククチャが Alpha8 型 (値は (1,1,1,0) に設定) か、そうでないか (値は (0,0,0,0) に設定) に基づきます。 |