逆転置行列
逆転置行列(inverse transpose)とは、ある行列を逆行列にし、さらに転置行列にしたものです。
float4x4 worldInverseTranspose = transpose(inverse(wolrd));
主に頂点データの法線をワールド座標変換する際に使用されます。 以下の例ではメモリアライメントの調整が面倒なのでfloat4の法線とfloat4x4のワールド座標の逆転置行列を使用しています。
float4 normalModelSpace = float4(vin.Normal, 0.0);
float3 normalWorldSpace = normalize((normalModelSpace * params.WorldInverseTranspose).xyz);