サイト改装もひと段落したので、最近ぼちぼち制作を再開しています。
今回は前から実装してみたかった深度法線エッジを実装しました。これはt-potさんの
サイトに詳しい解説が載っていますが、アセンブリコードで書かれているため個人的には
なんだかよく分かりません苦笑。なのでエッジ取得部分は独自の方法での実装です。
それにレンダーターゲット周りも少しだけ工夫してみました。具体的にいうと、法線と
深度を別々のバッファに生成すると、いくらピクセルシェーダをほとんど使っていないから
といっても負荷が多そうな気がしたので、ひとつのバッファにまとめるようにしています。
さて、問題の速度のほうですが。。予想通り、キャラが沢山表示されても常時30FPSが
でるようになりました!!
ただ、この深度法線エッジは頂点シェーダによるエッジと比べていくつか問題もあります。
まずひとつは、エッジがいくつか入らない部分が存在したり、不必要な部分までエッジが
入る可能性があることです。もちろんある程度パラメータで調節可能なのですが、
結構頑張ってみてようやく上の画像の感じなので難しいところです。それともうひとつの
問題は、見え方が画面の解像度によって異なってくるということです。頂点シェーダによる
実装の場合、実際に3次元空間を配慮して線が描画されるのに対し、今回の手法は
スクリーンスペースによる計算なので、任意のピクセル単位の線しか引けないのです。
なかなかにやっかいな深度法線エッジですが、鳥瞰視点の場合だとそれほど問題なく
見られる様子なので、カメラからの距離に応じて使い分けるようにしようかなと思います。
そうそう、この日誌にブログパーツをいくつかつけてみました。軽めのもので便利なものを
選んでみたのですが、環境によっては重くなって見づらいかもしれないですね;