Unity のビルトインインクルードファイルには、現在のオブジェクトの変換などのシェーダーのグローバル変数が含まれています。これらは他の変数と同様にシェーダープログラムで使用しますが、関連するインクルードファイルをインクルードしていれば、宣言する必要はありません。
インクルードファイルの詳細については、ビルトインのインクルードファイルを参照してください。
これらのマトリックスはすべて、float4x4 タイプであり、列優先です。
| 名前 | 値 |
|---|---|
| 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/FarPlane。 |
|
ScreenParams ||float4 | x はカメラのターゲットテクスチャの幅 (ピクセル単位)、y はカメラのターゲットテクスチャの高さ (ピクセル単位)、 z は 1.0 + 1.0/幅、w は 1.0 + 1.0/高さ。|
|ZBufferParams |
float4 | Z バッファ値 をリニア化するために使用。 | |
x |
UNITY_REVERSED_Z が 1 に設定されている場合は 1-far/near または -1+far/near。UNITY_REVERSED_Z の詳細については、プラットフォーム機能に基づく分岐
|
||
y |
far/near、または UNITY_REVERSED_Z が 1 に設定されている場合は 1 を参照してください。UNITY_REVERSED_Z の詳細については、プラットフォーム機能に基づく枝を参照 |
||
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 乗数でスケールされます。スケールされていない時間にアクセスするためのビルトイン変数はありません。
| 名前 | タイプ | 値 |
|---|---|---|
| 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 タグに基づいて、異なる方法でシェーダーに渡されます。
フォワードレンダリング (ForwardBase およびForwardAdd のパスの種類):
| 名前 | タイプ | 値 |
|---|---|---|
| LightColor0 (UnityLightingCommon.cginc で宣言されています) | fixed4 | ライトの色 | | WorldSpaceLightPos0 | float4 | ディレクショナルライト: (ワールド空間の向き、0)。その他のライト: (ワールド空間の位置、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 内で宣言されます)
| 名前 | タイプ | 値 |
|---|---|---|
| _LightColor | float4 | ライトの色 |
| unity_WorldToLight | float4x4 | ワールドとライトの行列。クッキーと減衰テクスチャをサンプリングするのに使用されます。 |
| unity_WorldToShadow | float4x4[4] | ワールドとシャドウの行列。スポットライトには 1 つの行列、ディレクショナルライトのカスケードには最高 4 つの行列。 |
球面調和係数 (アンビエントおよびライトプローブによって使用される) は、ForwardBase および Deferred のパスタイプに対して設定されます。それらは 3 次元の球面調和関数を含み、ワールド空間の法線ベクトルによって評価されます (UnityCG.cginc の ShadeSH9 を参照)。変数はすべて、half4 型であり、unity_SHAr や類似した名前が設定されています。
頂点ライティングレンダリング (Vertex パスタイプ):
1 つの Vertex パスタイプに、最大 8 つのライトを設定できます。常に最も明るいものから順にソートされます。そのため、2 つのライトから同時に影響を受けるオブジェクトをレンダリングする場合は、配列の最初の 2 つのエントリーを取得するだけで行えます。オブジェクトに影響するライトが 8つより少ない場合は、残りのライトの色を黒に設定します。
| 名前 | タイプ | 値 |
|---|---|---|
| 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) |
| 名前 | タイプ | 値 |
|---|---|---|
| unity_Lightmap | Texture2D | ライトマップの情報を含みます。 |
| unity_LightmapST | float4[8] | UV 情報を、ライトマップテクスチャをサンプリングするための正しい範囲にスケールし変換します。 |
| 名前 | タイプ | 値 |
|---|---|---|
| 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 モード用。 |
##各種
| 名前 | タイプ | 値 |
|---|---|---|
| unity_LODFade | float4 | LOD グループを使用する場合の LOD フェード。x はフェード (0..1)、y は 16 レベルに数値化されたフェード、z と w は不使用。 |
| _TextureSampleAdd | float4 | UI 専用に Unity によって自動的に設定されます。使用するテクスチャが Alpha8 型 (値は (1,1,1,0) に設定) か、そうでないか (値は (0,0,0,0) に設定) に基づきます。 |