Version: 2023.2
言語: 日本語
ビルトインシェーダーヘルパー機能
シェーダーのデータ型と精度

ビルトインのシェーダー変数

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 (パスタイプ ForwardBaseForwardAdd )

名前 タイプ 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 つのマトリックス。

球面調和関数の相互作用 (アンビエントライトとライトプローブにより使用される) は、ForwardBaseDeferred パスタイプに設定されます。それらは 3 次元の球面調和関数を含み、ワールド空間の法線によって評価されます (UnityCG.cgincShadeSH9 を参照)。 変数はすべて 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 モード用、zw は Linear モード用。

その他

名前 タイプ Value
unity_LODFade float4 LOD グループ を使用する場合の LOD フェード。x は fade (0..1)、y は16 レベルに数値化された fade、zw は不使用。
_TextureSampleAdd float4 UI 専用に Unity によって自動的に設定されます。使用するテククチャが Alpha8 型 (値は (1,1,1,0) に設定) か、そうでないか (値は (0,0,0,0) に設定) に基づきます。
ビルトインシェーダーヘルパー機能
シェーダーのデータ型と精度