674 バイト追加,
2023年12月22日 (金) 04:44 '''逆転置行列'''(inverse transpose)とは、ある[[行列]]を[[逆行列]]にし、さらに[[転置行列]]にしたものです。
<source lang="c">
float4x4 worldInverseTranspose = transpose(inverse(wolrd));
</source>
主に頂点データの[[法線]]を[[ワールド座標変換]]する際に使用されます。
以下の例では[[メモリアライメント]]の調整が面倒なのでfloat4の法線とfloat4x4の逆転置行列を使用しています。
<source lang="c">
float4 normalModelSpace = float4(vin.Normal, 0.0);
float3 normalWorldSpace = normalize((normalModelSpace * params.WorldInverseTranspose).xyz);
</source>
[[category: 3DCG]]