屈折効果をUnityで! Part1
こんばんは、カイです。初めての投稿です。
先週京アニのアニメ見て、水の効果に惚れました。
(甘ブリです)
そこで、水の効果を作らないかとED先輩に相談しようとしたら、みんなラッキー☆に夢中していつの間にか合宿終わりましたorz
結局はこのページを参考に作りました。英語なんですが。
>> http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter19.html
具体的の流れは以下です
1.透過しても透明じゃない?!
オブジェクトを透明にするのはいいが、屈折は得られません。透過した画像(光)を編集する必要があります。なので、
GrabPass という特別なPassを使いました。
Unity Docsで検査すると出てきますが、GrabPass{“GrabTexture”}はGrabTextureに今の画面を保存する。そして、普通のMVPでなく、Screen Spaceでuv検査をし、Tex2D(GrabTexture, i.uv2)をすればいいです。
透明シェーダーと同じですね
2.仮屈折
屈折の計算をすると無駄に計算量が増えるので、ごまかせるぐらい近似なものを作ります。
まず、水のテクスチャを用意。
位置での明暗により、GrabTextureのuvをずらせばいいです。
中略
こんな感じになりました。
しかし、水面の上にあるのに、映されるところがあります。解決方法はPart2で!
Posted on: 2015年9月14日, by : chokopan