久しぶりにUnityを触ってます。AssetStoreに出しているやつについてユーザーから問い合わせがあったので。
別にそのアセットで使っていたわけじゃないんだけど、そのユーザーにちょっとしたアイデアを試してもらったときに、僕の環境(Mac)と彼の環境(Win, DX11)との間でちょっと動作の違うことがあって、色々苦労した結果(結果だけ)をブログに残しておこうと思う。

何が違ったかというと、シェーダーでプロジェクションマトリクスを使ったときの挙動。僕のところではちゃんと深度値が書きこまれていたのだけど、彼のところでは深度値が間違っていたようで、Zテストが正しく動作しない。何でそんなことが起こったかというと、僕の書いたスクリプトが間違っていたから。

localToWorldMatrixはTransformではなくRendererのを使うというのは前のブログで書いた。でもそれだけではなく、Camera.current.projectionMatrixをそのまま使うのもNGだったのだ!

正しくはこう書かないといけなかった。

Zテストの結果が違うからprojectionMatrixが怪しいとは思っていたんだけど、まさかGLにその関数があったとは・・・。

One thought on “スクリプトでUNITY_MATRIX_MVPを計算する

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Anti Spam Code *