2006-11-01から1ヶ月間の記事一覧
8時間かかったのち解決なので興奮気味。今のところフォトンマップを使ったサンプリングの場合Gradient非対応なので、Irradiance CacheのOctreeに直接追加していた訳ですが、球の半径がNaNだった為ににOctreeが際限なく分割されていった結果でした。
バグ特定。 Translational Gradientの結果式をRotational Gradientに突っ込んでた。メモリ関連のバグだっていう思い込みがまずかった。
なんかもうMicrosoft C++の最適化バグのせいにしたくなってきましたよ。Debugビルドだと起きないし、GCCだと普通に走るし。orz
http://www.archvision.com/WhatisRPC.cfmMaxwellのforumで盛り上がってたので調べてみた。 ビルボードの進化版?みたいな感じ。こういう方向性はアリだと思う。
化学のレポートが…
4MBぐらいの大きなメモリリークは大体取れた。100byteくらいメモリリークがまだ起きるけど、ZThreadのバグみたい。しかしPhoton Mapサンプリングした場合のメモリの挙動は未だにおかしい。 最大で実行時250MBぐらいメモリを確保するんだけど、一体なにをして…
gdb [program]してすぐにcatch throwしてもだめで、一旦b mainしてからrun、catch throw、continueするといい。
Irradiance Cacheの挙動がおかしいけどそれ以外はちゃんと動いている模様。主な原因はsizeof(unsigned long)が32bit環境では4、64bit環境では8という違い。体感速度がamd64だとかなり速い。デバッグビルドで最適化オプションなしでx86の1.2倍ぐらい?
8月にやったつもりなんだけど、作業ログみてみるとFreeImageのビルドであきらめてた模様。 ネットワーク関連(独自RPC実装)のコードでバグがうじゃうじゃ出るのでとりあえずそっちを片付けます。
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実装する前にテストを書いたほうがいいかも。
実装完了。デバッグまだ。しかしよくよく考えてみるとIrradiance Gradientの計算式はcos-weightサンプリング依存なのよね。 Radiance Cachingの論文に勾配計算が載っていた気がするので後で調べてみる。shinjiさんからアドバイスが。ありがとうございます。 …
Light Map Gen LightGen Pluginvia * little things of mine *
Henrik Wann Jensen 1995http://citeseer.ist.psu.edu/cache/papers/cs/11756/http:zSzzSzgraphics.lcs.mit.eduzSz~henrikzSzpaperszSzewr6.pdf/jensen95importance.pdfを読む。
勝手に再起動してしまう。そして原因不明。追記: マザーボードのねじが一本なかったので、つけてみたら安定した。マザーボードの歪みが原因なんてことはないと思うのだが?
だんだん見えてきた。原因は点光源にあるみたい。点光源周辺の拡散面が光源並みの明るさで、しかも二次関数で明るさが変化しているため、cos-weightedではサンプリング数を増やしてもなかなか分散が減らない。(数百本ファイナルギャザーレイを飛ばしても、…
実装完了。結果がおかしい(カラーブリーディングが一切みえない)のでおかしいなぁと思ったらフォトンマップの出力が異常に小さい。 ノイズの原因もこれかも。 パストレ、フォトンマップ関連のコードを再点検する必要がありそう。
勾配を解析するのにサンプル列が必要なのでいろいろとリファクタリング。 Rendererクラスへのロジックの流出度を下げた。
むずかしー。Pixieとかlucilleのソースを参考に計算方法はわかったのですが、式の導出に苦労してます。 というか導出できるのかアレ。Rotationの勾配はまだわかるけど、Translationが…。
http://radsite.lbl.gov/radiance/papers/erw92/paper.pdfIrradiance Gradientsを計算しないとどうしてもブロック状のノイズが出るみたい?
最初のレイの方向部分のみ。結果は少しマシになっているけど、白い点は残ります。
OpenGLのテクスチャ関連。やねうらおさん経由 NPOT textures TxRc
Octree関連のバグは取れたかな。でもIrradiance推定で1000レイとばしてやっても明るすぎる点が残るというのはおかしいと思う。
今日は実験で非常に疲れたので寝ます。
コードは書いた。あとはデバッグだ!
RenderBitchでは有効範囲を半径とした球が完全にはいるようなOctreeを考えているけれども、Production Rendering本によると子の長さが親の3/4倍になるような余裕を持ったOctreeを構築したほうが有効らしい。
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…
Irradiance Cacheない癖にやけにノイズが少ないなぁと思ったらやっぱり実装済みだった。 Cacheなしだとやっぱりこのくらいノイズでるよね。