2006-11-01から1ヶ月間の記事一覧

メモリバグ解決

8時間かかったのち解決なので興奮気味。今のところフォトンマップを使ったサンプリングの場合Gradient非対応なので、Irradiance CacheのOctreeに直接追加していた訳ですが、球の半径がNaNだった為ににOctreeが際限なく分割されていった結果でした。

Irradiance Cache on amd64

バグ特定。 Translational Gradientの結果式をRotational Gradientに突っ込んでた。メモリ関連のバグだっていう思い込みがまずかった。

メモリバグ

なんかもうMicrosoft C++の最適化バグのせいにしたくなってきましたよ。Debugビルドだと起きないし、GCCだと普通に走るし。orz

RPC technology

http://www.archvision.com/WhatisRPC.cfmMaxwellのforumで盛り上がってたので調べてみた。 ビルボードの進化版?みたいな感じ。こういう方向性はアリだと思う。

勝手に再起動再び

化学のレポートが…

メモリバグ

4MBぐらいの大きなメモリリークは大体取れた。100byteくらいメモリリークがまだ起きるけど、ZThreadのバグみたい。しかしPhoton Mapサンプリングした場合のメモリの挙動は未だにおかしい。 最大で実行時250MBぐらいメモリを確保するんだけど、一体なにをして…

GDBでの例外のデバッグ

gdb

gdb [program]してすぐにcatch throwしてもだめで、一旦b mainしてからrun、catch throw、continueするといい。

amd64対応状況

Irradiance Cacheの挙動がおかしいけどそれ以外はちゃんと動いている模様。主な原因はsizeof(unsigned long)が32bit環境では4、64bit環境では8という違い。体感速度がamd64だとかなり速い。デバッグビルドで最適化オプションなしでx86の1.2倍ぐらい?

amd64対応

8月にやったつもりなんだけど、作業ログみてみるとFreeImageのビルドであきらめてた模様。 ネットワーク関連(独自RPC実装)のコードでバグがうじゃうじゃ出るのでとりあえずそっちを片付けます。

FreeImageをamd64環境でビルド

Valgrindでメモリリーク一掃しようかと思ってLinuxでビルドしてみたらFreeImageでエラーが。エラーは Source/LibPNG/pngconf.hを #ifdef _WIN32 #define PNG_ASSEMBLER_CODE_SUPPORTED #else #undef PNG_ASSEMBLER_CODE_SUPPORTED #define PNG_NO_ASSEMBLER_…

カラーブリーディングの件

Irradiance計算コードにπが足りてなかった。ちゃんと間接光が見えるようになりました。ノイズの方はフォトンマップによるサンプリングを有効にするとメモリリークで落ちるので、未だ検証できず。

ものすごい勢いでメモリリーク

1秒に30MBぐらい。原因を絞込み中。衝突判定のコードに原因があることはわかったんだけど、なかなか見つからない。AccelGridのコードからはよくバグがでてくるなぁ。BVH実装する前にテストを書いたほうがいいかも。

Importance Driven Path Tracing using the Photon Map

実装完了。デバッグまだ。しかしよくよく考えてみるとIrradiance Gradientの計算式はcos-weightサンプリング依存なのよね。 Radiance Cachingの論文に勾配計算が載っていた気がするので後で調べてみる。shinjiさんからアドバイスが。ありがとうございます。 …

EIHDRI的なツール

Light Map Gen LightGen Pluginvia * little things of mine *

Importance Driven Path Tracing using the Photon Map

Henrik Wann Jensen 1995http://citeseer.ist.psu.edu/cache/papers/cs/11756/http:zSzzSzgraphics.lcs.mit.eduzSz~henrikzSzpaperszSzewr6.pdf/jensen95importance.pdfを読む。

PC不調

勝手に再起動してしまう。そして原因不明。追記: マザーボードのねじが一本なかったので、つけてみたら安定した。マザーボードの歪みが原因なんてことはないと思うのだが?

ノイズ問題

だんだん見えてきた。原因は点光源にあるみたい。点光源周辺の拡散面が光源並みの明るさで、しかも二次関数で明るさが変化しているため、cos-weightedではサンプリング数を増やしてもなかなか分散が減らない。(数百本ファイナルギャザーレイを飛ばしても、…

Irradiance Gradient

実装完了。結果がおかしい(カラーブリーディングが一切みえない)のでおかしいなぁと思ったらフォトンマップの出力が異常に小さい。 ノイズの原因もこれかも。 パストレ、フォトンマップ関連のコードを再点検する必要がありそう。

Irradiance Cacheクラスリファクタリング

勾配を解析するのにサンプル列が必要なのでいろいろとリファクタリング。 Rendererクラスへのロジックの流出度を下げた。

Irradiance Gradient

むずかしー。Pixieとかlucilleのソースを参考に計算方法はわかったのですが、式の導出に苦労してます。 というか導出できるのかアレ。Rotationの勾配はまだわかるけど、Translationが…。

Irradiance Gradients

http://radsite.lbl.gov/radiance/papers/erw92/paper.pdfIrradiance Gradientsを計算しないとどうしてもブロック状のノイズが出るみたい?

Irradiance Estimateを準モンテカルロ法で

最初のレイの方向部分のみ。結果は少しマシになっているけど、白い点は残ります。

あとで調べる

OpenGLのテクスチャ関連。やねうらおさん経由 NPOT textures TxRc

続Irradiance Cache

Octree関連のバグは取れたかな。でもIrradiance推定で1000レイとばしてやっても明るすぎる点が残るというのはおかしいと思う。

今日は実験で非常に疲れたので寝ます。

Irradiance Cache実装

コードは書いた。あとはデバッグだ!

Irradiance Cacheサンプル点用のOctree

RenderBitchでは有効範囲を半径とした球が完全にはいるようなOctreeを考えているけれども、Production Rendering本によると子の長さが親の3/4倍になるような余裕を持ったOctreeを構築したほうが有効らしい。

renderBitch作者によるレンダラ実装Tips

http://renderedrealities.net/portfolio/renderBitch.pdf Photon Map用Kd-Treeの作成はすべてのフォトントレースが終わってから。 当たり前?PBR本でもJensen本でもそうなってるよね? Photon Map作成時光源からのサンプルをStratifiedにする。 フォトンマ…

放射照度キャッシュ資料集め

放射照度キャッシュを実装するにあたって資料集め。Radium Software Developmentさんによる概要: http://www.radiumsoftware.com/0410.html#041018オリジナルなWard先生の論文: http://radsite.lbl.gov/radiance/papers/sg88/paper.htmlMaking Radiance an…

renderBitch

Irradiance Cacheない癖にやけにノイズが少ないなぁと思ったらやっぱり実装済みだった。 Cacheなしだとやっぱりこのくらいノイズでるよね。