【HLSL】2x2行列、3x3行列の逆行列を計算する
Cluster,Inc. Advent Calendar 2018、11日目の記事です。
概要
HLSLにて、4x4行列の逆行列を計算する処理は見つかったんですが、2x2、3x3が見当たらなかったので書いてみました。
4x4行列はこちら Matrix operations for HLSL · GitHub
2x2行列
float2x2 Invert(float2x2 m) { return 1.0 / determinant(m) * float2x2( m._m11, -m._m01, -m._m10, m._m00 ); }
3x3行列
float3x3 Invert(float3x3 m) { return 1.0 / determinant(m) * float3x3( m._22 * m._33 - m._23 * m._32, -(m._12 * m._33 - m._13 * m._32), m._12 * m._23 - m._13 * m._22, -(m._21 * m._33 - m._23 * m._31), m._11 * m._33 - m._13 * m._31, -(m._11 * m._23 - m._13 * m._21), m._21 * m._32 - m._22 * m._31, -(m._11 * m._32 - m._12 * m._31), m._11 * m._22 - m._12 * m._21 ); }