AABBの交差判定

AABBの交差判定にplucker座標系のを用いるものを使うように変更した。 すこし速くなったようだ。リリース版だとあまり分からないが、デバッグ版だとだいぶ違う。ただし、シーンにおけるAABB交差判定の割合はあまり多くないので、気休めかもしれない。多分、…

インスタンスシステム2

昨日の続き。微妙に修正。

インスタンスシステム

アルマジロを並べる。インスタンスシステムの実験。うむ。いい感じ。

classic fastest method --> Tomas Moller's method

以前にもポリゴンとレイとの交差について考えた*1。いろいろ試してみたけど、最近ではいわゆる[classic fastest method]と呼ばれている手法を使っている。classicというから、歴史は古いのだろう。この方法は数学的にとてもすっきり導出できる。インデックス…

ファイルマッピングによるレンダリング

メモリを増設して合計1.5Gになったのでxyzrgb_dragon(asian dragon)をレンダリングした。 環境:CPU pentium4 2.4GHz RAM 1536MB モデル:7219045頂点 3609600三角形 レンダリング:1200*1200 一時レイのみ 1点光源 レイトレーシングシャドウ レンダリン…

自作レンダラ

ここしばらくはここを更新するのを意識的にやめていた。 なんでか。今作ってる自作レンダラが、せめて少しでも見られる画像を作られるようになるまではと思って。去年度までに作っていたレンダラが、フォトンマップ(最後フォトンを集めるとこにパストレして…

三角形の交差判定

3Dプログラミングにおいて三角形(ポリゴン)の交差判定は重要である。このルーチンの品質・速度は全体のパフォーマンスに大きく影響する。 三角形の交差判定でよく使われるのが以下の手法だと思う。 よく教科書に載っている手法(平面に交差→三角形の内部判…

値返ししよう。

小さな算術クラスは値返ししようというお話。 以前(といっても1年半以上前だが)僕はconst参照を使ってET(Expression Template)を実装しようと試みたことがある。 const参照ならコピーのコストが無いので、これがさらに最適化すればETが実装できるはずだと…

copy_n

copy_n()という関数は標準にはない*1。fill_nはあるのに。なんでないのか?その理由は良くわかってない。 copy_nの存在価値はあるか?あるとしたら最適化の考慮のためだろう。 copy_nは条件次第で最適化により高速な関数memmoveまたはmemcpyに置き換える。 …

CRTP (Curiously Recurring Template Pattern)の使い方

CRTPというC++で使われるテクニックがある。これは自分自身をテンプレートパラメータとしたテンプレートから派生してクラスを定義するものだ。これはこちらのページに詳しいが、今回はCRTPのもっとも便利だと思われる使い方を示してみようと思う。 CRTPを具…

allocator考察

標準コンテナは初期値を持たないコンストラクタはどうしてるかというお話。たとえばstd::vectorでいえばvector()やvector(size)なんか。そのとき内部型をTとすると、T()を呼び出す。ということはintやdoubleなんかも必ず0になる。しかしおもしろいことがひと…

ゲーム脳の講演に行ってきた。

今日は医学博士・森昭雄氏の講演(ゲーム脳)に行ってきた。場所は越谷のサンシティ小ホール。新越谷駅をおりてすぐのダイエー横にある。時間はきっかり2時から始まった。大体100人くらいは来ていたのではないか。席を2つ3つあけて座るくらいであった。…

拡散環境マップ

理論的つじつまがあってきた。 ある値はπ/Nθ·Nφだ。多分。 2π/Nθ·Nφだった。 拡散環境マップをつくる方法 ざっと説明してみる。 ある微小面におけるirradianceの和はその法線との入射角をθ*1とすると、ランバート則に従うのなら以下の式のようになる。 I = ∫…

異なる型の演算

以前異なる型の演算した結果の型をどう推測すべきか疑問にした。http://d.hatena.ne.jp/ototoi/20030604#p3 そこでは解決策としてexpression templateを挙げたのだが、実装してみると、expression templateもその問題に縛られてしまうことが分かった。 昨日…

2点間の距離を近似

次の記事について考えてみた。http://www.flipcode.com/articles/article_fastdistance.shtml この記事はある2点間の距離を近似して求めてしまおうというもの。普通距離は2点をA、Bとすると x = A.x - B.x , y = A.y - B.yとして距離distanceは distance = …