逆転置行列
2023年12月22日 (金) 04:44時点におけるAdministrator (トーク | 投稿記録)による版
逆転置行列(inverse transpose)とは、ある行列を逆行列にし、さらに転置行列にしたものです。
float4x4 worldInverseTranspose = transpose(inverse(wolrd));
主に頂点データの法線をワールド座標変換する際に使用されます。 以下の例ではメモリアライメントの調整が面倒なのでfloat4の法線とfloat4x4のワールド座標の逆転置行列を使用しています。
float4 normalModelSpace = float4(vin.Normal, 0.0);
float3 normalWorldSpace = normalize((normalModelSpace * params.WorldInverseTranspose).xyz);