「逆転置行列」の版間の差分
Administrator (トーク | 投稿記録) |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| (同じ利用者による、間の1版が非表示) | |||
| 6行目: | 6行目: | ||
主に頂点データの[[法線]]を[[ワールド座標変換]]する際に使用されます。 | 主に頂点データの[[法線]]を[[ワールド座標変換]]する際に使用されます。 | ||
以下の例では[[メモリアライメント]] | 以下の例では[[メモリアライメント]]の調整が面倒なのでfloat4の法線とfloat4x4の[[ワールド座標]]の逆転置行列を使用しています。 | ||
<source lang="c"> | <source lang="c"> | ||
float4 normalModelSpace = float4(vin.Normal, 0.0); | float4 normalModelSpace = float4(vin.Normal, 0.0); | ||
| 12行目: | 12行目: | ||
</source> | </source> | ||
[[category: 行列]] | |||
[[category: 3DCG]] | [[category: 3DCG]] | ||
2024年8月21日 (水) 05:40時点における最新版
逆転置行列(inverse transpose)とは、ある行列を逆行列にし、さらに転置行列にしたものです。
float4x4 worldInverseTranspose = transpose(inverse(wolrd));
主に頂点データの法線をワールド座標変換する際に使用されます。 以下の例ではメモリアライメントの調整が面倒なのでfloat4の法線とfloat4x4のワールド座標の逆転置行列を使用しています。
float4 normalModelSpace = float4(vin.Normal, 0.0);
float3 normalWorldSpace = normalize((normalModelSpace * params.WorldInverseTranspose).xyz);