屈折効果をUnityで! Part2
こんばんは、カイです
前の話
プレーヤーの後ろに特に見えますが、水面のものを屈折しまうことがあります。これを解決するため、Maskを作ります。
簡単に言うと、水面と水面でない部分を分けます。
(以下は私のやり方で、すべての状況で応用できると保証しません)
まず、fragment シェーダーのアウトプットはfloat4ですが、そのa(アルファー)を変更します。0.5にしました。(特に0.5にこだわりはないが、水以外に存在しないaを付けます)
そして、確認のためカメラにアルファーをrgbaに変換させると、
水の部分が一目瞭然です。
これをGrabPassの前のPassでやると、GrabTextureのaをチェックすれば、変換されたuvの色のaが0.5であれば、もとの色を使います。
よくなりました。
(追加)
水は角度が大きいほど水面が白く見えます。これはfresnel効果です。
clamp(dot (i.normal, i.viewD)*_Thresholdみたいなことをします。簡単ですね。
以上でした!ちなみにキャラに歯を作ったら、可愛いと自慢していたのでここに置きます
またのご来店をお待ちしております~!
Posted on: 2015年9月14日, by : chokopan