楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル

log

2010.11.04 C++:深度法線エッジ

ファイル 308-1.jpg

サイト改装もひと段落したので、最近ぼちぼち制作を再開しています。

今回は前から実装してみたかった深度法線エッジを実装しました。これはt-potさんの
サイトに詳しい解説が載っていますが、アセンブリコードで書かれているため個人的には
なんだかよく分かりません苦笑。なのでエッジ取得部分は独自の方法での実装です。

それにレンダーターゲット周りも少しだけ工夫してみました。具体的にいうと、法線と
深度を別々のバッファに生成すると、いくらピクセルシェーダをほとんど使っていないから
といっても負荷が多そうな気がしたので、ひとつのバッファにまとめるようにしています。
さて、問題の速度のほうですが。。予想通り、キャラが沢山表示されても常時30FPSが
でるようになりました!!

ただ、この深度法線エッジは頂点シェーダによるエッジと比べていくつか問題もあります。
まずひとつは、エッジがいくつか入らない部分が存在したり、不必要な部分までエッジが
入る可能性があることです。もちろんある程度パラメータで調節可能なのですが、
結構頑張ってみてようやく上の画像の感じなので難しいところです。それともうひとつの
問題は、見え方が画面の解像度によって異なってくるということです。頂点シェーダによる
実装の場合、実際に3次元空間を配慮して線が描画されるのに対し、今回の手法は
スクリーンスペースによる計算なので、任意のピクセル単位の線しか引けないのです。

なかなかにやっかいな深度法線エッジですが、鳥瞰視点の場合だとそれほど問題なく
見られる様子なので、カメラからの距離に応じて使い分けるようにしようかなと思います。

そうそう、この日誌にブログパーツをいくつかつけてみました。軽めのもので便利なものを
選んでみたのですが、環境によっては重くなって見づらいかもしれないですね;

comment

たけなか 2010.11.04-22:10 Edit

色々考えてみると、頂点テクスチャを使えば頂点シェーダによるエッジでも
頂点シェーダ負荷を抑えて処理を高速化できるのではと、ふと思いました。

頂点テクスチャはGeForce6以降のGPUしか対応していないこともあり
今まで実装を見合わせていたのですが、調べてみるとマルチレンダー
ターゲットもGeForce6以降のGPUしか対応していない様子なので
だったら頂点テクスチャもいいかなという気持ちになってきました笑。

たけなか 2010.11.06-00:31 Edit

infoseekライトがなくなりましたね…。移転のことばかり考えていましたが、
よくよく考えてみると他のinfoseekユーザのサイトも無くなったということで。。

何気にお気に入りのサイトがいくつか見れなくなって寂しいものがありますね。
イラストサイトとか、BBXのサイトとか、見れなくなって残念だなあ。