Unity のビルトインのインクルードファイルには、シェーダー用のグローバル変数が含まれています。使用中のオブジェクトの変換行列、ライトパラメーター、現在の時間などです。これらは他の変数と同様に シェーダープログラム で使用しますが、関連するインクルードファイルをインクルードしていれば、宣言する必要はありません。
インクルードファイルの詳細については、ビルトインのインクルードファイル を参照してください。
これらのマトリックスはすべて、float4x4
タイプで、列優先 (column major) です。
名前 | Value |
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 | 現在のワールド行列の逆変換 |
これらの変数は、レンダリング中の カメラ に対応します。例えば、シャドウマップのレンダリング中であれば、シャドウマップの投影に使用されている “仮想カメラ” ではなく、カメラコンポーネントの値を参照します。
名前 | タイプ | Value |
_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 (時間の倍率) でスケールされます。スケールされていない時間にアクセスするためのビルトイン変数はありません。
名前 | タイプ | 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
)
名前 | タイプ | Value |
_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] | ワールドとシャドウのマトリックス。スポットライトには 1 つのマトリックス、ディレクショナルライトのカスケードには最大 4 つのマトリックス。 |
ライティングパスシェーダー内で使用されるディファードシェーディング (すべて UnityDeferredLibrary.cginc で宣言されます)。
名前 | タイプ | Value |
_LightColor | float4 | ライトの色 |
unity_WorldToLight | float4x4 | ワールドとライトの配列。クッキーと減衰テクスチャをサンプリングするのに使用されます。 |
unity_WorldToShadow | float4x4[4] | ワールドとシャドウのマトリックス。スポットライトには 1 つのマトリックス、ディレクショナルライトのカスケードには最大 4 つのマトリックス。 |
球面調和関数の相互作用 (アンビエントライトとライトプローブにより使用される) は、ForwardBase
と Deferred
パスタイプに設定されます。それらは 3 次元の球面調和関数を含み、ワールド空間の法線によって評価されます (UnityCG.cginc の ShadeSH9
を参照)。
変数はすべて half4 型であり、unity_SHAr
や類似した名前が設定されています。
Vertex Lit レンダリングパス詳細 (Vertex
パスタイプ)
Up to 8 lights are set up for a Vertex
pass type; always sorted starting from the brightest one. So if you want
to render objects affected by two lights at once, you can just take first two entries in the arrays. If there are fewer than eight
lights affecting the object, the rest will have their color set to black.
名前 | タイプ | Value |
unity_LightColor | half4[8] | ライトの色 |
unity_LightPosition | float4[8] | ビュー空間ライト位置。ディレクショナルライトは (-direction,0)、ポイント/スポットライトは (position,1)。 |
unity_LightAtten | half4[8] | ライトの減衰ファクター。x は cos(spotAngle/2)、または、スポットライト以外については –1 です。y は 1/cos(spotAngle/4)、または、スポットライト以外については 1 です。z は 2次減衰です。w はライト範囲の平方です。 |
unity_SpotDirection | float4[8] | ビュー空間スポットライト位置。スポットライト以外は、(0,0,1,0)。 |
名前 | タイプ | Value |
unity_Lightmap | Texture2D | ライトマップの情報を含みます。 |
unity_LightmapST | float4[8] | UV 情報を、ライトマップテクスチャをサンプリングするための正しい範囲にスケールし変換します。 |
名前 | タイプ | Value |
unity_AmbientSky | fixed4 | グラデーションのアンビエントライトの場合のスカイアンビエントライトのカラー |
unity_AmbientEquator | fixed4 | グラデーションのアンビエントライトの場合の赤道のアンビエントライトのカラー |
unity_AmbientGround | fixed4 | グラデーションのアンビエントライトの場合の地面のアンビエントライトのカラー |
unity_IndirectSpecColor | fixed4 |
スカイボックス を使用している場合、これは Unity が アンビエントプローブ の 球面ハーモニクスデータ の DC 成分を使用して計算したスカイボックスの平均色です。それ例外の場合は黒色です。 |
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 モード用。 |
名前 | タイプ | Value |
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) に設定) に基づきます。 |