逆転置行列

提供: MonoBook
ナビゲーションに移動 検索に移動

逆転置行列(inverse transpose)とは、ある行列逆行列にし、さらに転置行列にしたものです。

 float4x4 worldInverseTranspose = transpose(inverse(wolrd));

主に頂点データの法線ワールド座標変換する際に使用されます。 以下の例ではメモリアライメントの調整が面倒なのでfloat4の法線とfloat4x4のワールド座標の逆転置行列を使用しています。

 float4 normalModelSpace = float4(vin.Normal, 0.0);
 float3 normalWorldSpace = normalize((normalModelSpace * params.WorldInverseTranspose).xyz);