7080 + 1

ゲームプログラミングの記事を書いてます。

【Unity】ポリゴンの裏表で描画を変える

タイトルの通り、シェーダでポリゴンの裏表を判定する方法を紹介します。
ポリゴンがカメラからみて裏か表かで描画の仕方を変えたいとき、2つの方法があります。
他にも方法があれば教えていただければと思います。

・カリングの設定を変えた2つのパスで描画する
・VFACEセマンティクスでif判定して描画を分ける

今回は裏面と表面で色を変えるだけの超シンプルなシェーダにしました。
どちらも得られる結果は同じです。
f:id:atori708:20171112173019g:plain

Gistを初めて使いました。いいですねこれ。

前者は単純にパスを2つ作り、CullのFrontとBackに変えただけのものになります。
後者はパスは一つで、ピクセルシェーダでVFACEを受け取ってif文で色を変えてます。
VFACEは表なら正数,裏なら負数がかえってくるみたいです。

どちらもシェーダの事が分かれば以外と簡単です。(自分はVFACEの存在を知りませんでした。)

問題は重さなのですが、
前者の方法は2回描画するので普通に描画するより重いですし、
後者はif文使っちゃってるので重いと思います。

どちらがいいかは自分にはわかりません。多分毎回if判定走る後者よりも前者のほうが軽い気がします。
この2つの切り替えはそんなに手間ではないのでどちらも試して軽い方採用するのがいいと思います。