Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!

log

2010.04.07 C++:フレネル反射!

昨日ふと、手動ミップマップを使うことで水面のフレネル反射が
表現できるんじゃないかなと思いつき、さっそく導入してみることにしました。

結構サクサクっと導入できました!実際に試してみると
カメラの角度によっては結構不自然な感じになってしまいましたが
上からみた感じだとそれなりにそれなりな感じです笑。
動画を録画してみて思いましたが、そういえば”どうぶつの森”の
水面の表現もカメラから水平ラインで反射していたので、
ひょっとしたら同じテクニックで表現しているのかもしれません。

考察としては、あくまで擬似的なものですが手動ミップマップで
表現することで元々のミップマップテクスチャを別のテクスチャと
差し替えているだけなので、コストパフォーマンス0でフレネル反射を
表現できてしまうのが素晴らしいなと思いました。

2010.04.07 C++:今度は視錐台カリング

さっそく視錐台カリングを試してみました。実はまだ視錐台カリングの
ビューポート行列の生成がおかしいのか、視錐台よりも一回り
二回りくらいおおきく判定されているんですが、キャラの描画
スキップ時にスキニング行列の計算もスキップすることでだいたい
平均で60fps近くでるようになりました。というより、前回の
速度の問題はどうやらHDDの容量不足が原因みたいでした。

それと試しにオクルージョンカリングと併用したりもしてみましたが、
カリングできるときは早くなりますが、カリングできないときは
結構遅くなりますね、やっぱり。とりあえず、僕の中では
オクルージョンカリングは諸刃の剣のイメージです。

以下、結論を少しばかりまとめてみます。
・カリングするほどシーンが大きくない場合は、そもそも
 カリング判定処理をしない方が早い。
・シーンが視野より十分に大きい場合は、視錐台カリングで
 Zカリングを検討する。
・FPSゲームのように複雑に入り組んだシーンではさらに
 オクルージョンカリングを行うことでスキップ回数が向上する。

実は自作の算術計算回りも除々にSSE等を利用し始めてます。
早くなっているかどうかはほとんど分からない程度なんですけどね笑。