【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 ); }
【Unity】死ぬ気でSetPassCallsを節約する
Cluster,Inc. Advent Calendar 2018、3日目の記事です。
モバイルやVR開発、Mac向けの開発などで、親の仇のようにSetPassCallsを節約したくなることはあると思います。 そういったときに、どこに気をつけて最適化していくと劇的な効果を得られるかについて解説していきます。
もちろん品質とのトレードオフにはなるので、そこはゲームに合わせて調整してください。 また、SetPassCallsではなくOverDrawやメモリ使用量などがボトルネックになっていることも多いので、重いときには単純にSetPassCallsを減らせば良い、というわけではないという点に注意してください。
今回の犠牲者はこちらのアセットとなります!
ちなみに、今回使ったUnityは2019.1.0a10で、PostEffectが動かなかったためあらかじめ削除してあります。
続きを読む