Debugging DirectX 11 shaders with Visual Studio
パーティクルシステム(Shuriken)

ShaderLab 定義済みの値

Unityはたくさんの定義済みの値をシェーダで用意しています。例えば,現在のオブジェクトの変換行列,時間,等。

他のプロパティと同じようにShaderLabで使用するのみで,唯一の違いはどこかで宣言する必要がなく,すでに“定義済み”です。

Programmable Shaders で使用する場合は UnityCG.cginc file をインクルードする必要があります。.

変換

Name Type Value
UNITY_MATRIX_MVP float4x4 現在のモデル*ビュー*射影行列(model*view*projection)
UNITY_MATRIX_MV float4x4 現在のモデル * ビュー行列。
UNITY_MATRIX_V float4x4 現在のビュー行列。
UNITY_MATRIX_P float4x4 現在の投影行列
UNITY_MATRIX_VP float4x4 現在のビュー行列*射影行列
UNITY_MATRIX_T_MV float4x4 モデル * ビュー行列の転置行列
UNITY_MATRIX_IT_MV float4x4 モデル * ビュー行列の逆行列の転置行列
UNITY_MATRIX_TEXTURE0 - UNITY_MATRIX_TEXTURE3 float4x4 テクスチャ変換行列
_Object2World float4x4 現在のモデルマトリックス
_World2Object float4x4 現在のワールド行列の逆
_WorldSpaceCameraPos float3 カメラのワールド空間位置
unity_Scale float4 xyz コンポーネントを使用せず,w が均一に拡大・縮小するスケールを保持しています

ライティング

シンプルなShadelabでは,次のプロパティにアクセスするには末尾に0を付与,すなわちライトのModel×LightColorは_ModelLightColor0 となります。Cgシェーダでは,ひとつの要素をもった配列としてアクセスできるため,Cgでの相当する表現は_ModelLightColor[0] です。

Name Type Value
_ModelLightColor float4 マテリアルのModel×Light color。
_SpecularLightColor float4 マテリアルのSpecular×Light color。
_ObjectSpaceLightPos float4 オブジェクト座標系でのライトの位置。_w_コンポーネントが 0 の場合は指向性ライト,1 の場合はその他のライト。
_Light2World float4x4 ライトからワールド座標系の行列。
_World2Light float4x4 ワールドからライト座標系の行列。
_Object2Light float4x4 オブジェクトからライト座標系の行列。

その他,様々

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)
_ProjectionParams float4 x は 1.0 または –1.0,反転した射影行列で現在レンダリングしている場合は負の値。 y はカメラに近い平面,zはカメラの遠い平面,wは 1/FarPlaneです
_ScreenParams float4 xはピクセルの現在のレンダーターゲット幅。yはピクセルの現在のレンダーターゲット高さ,zは 1.0 + 1.0/width,wは 1.0 + 1.0/height
Debugging DirectX 11 shaders with Visual Studio
パーティクルシステム(Shuriken)