どうやら仕事でIBL担当になりました.
IBL担当ってなんだよって事ですが,要はHDRIがあるから,ちゃんとプロダクションでIBLが使えるようにしろって事みたいです.今までのは無視でイチから整備しろと.
とりあえずPRManでサポートされているenvironment mapのimportance samplingを試してみましたが,これがなかなか厳しい. プロダクションレベルのジオメトリで許容する品質にしようと思うと,時間がかかり過ぎてとても使えません.keyとfillが分けられないのも辛い.
つー事で,しょうがないから自前でどうにかしようと思います.目標は満足できる品質内での高速化と利便性です.いくつかアイディアはありますが,果たしてどこまで上手く行くか.
何はともあれ,まずはHDRIのサンプリングです.最近はIBLと無縁だったので,少しリサーチしてみましたが,今は便利なツールがあるんですねー.
こういうの使ってもいいんですが,光源を別で生成しなきゃいけないのはパイプライン的によろしくない.変更も面倒になります.やっぱり光源のサンプルはon the flyでやってくれるのが理想なので,自前のlight shaderを書く事にします.
サンプリング方法は色々とあるようですが,やっぱりオラァな人がベタ褒めしてるこれとかでやってみましょうかね.
Recursive Wang Tiles for Real-Time Blue Noise
HDRIをcosine-lobeとspecular kernelでconvolutionしておく事も考えましたが,これもやはり変更が面倒な点でパイプラインに易しくないので,まずは全てレンダリング中に解決してしまう方法を試そうと思います.
久しぶりにまともなR&Dが出来そうで楽しみです.

4 Comments
うーん,R&D楽しそうですね.
ところで,その論文中で提案されているimportance samplingの
方法は,あまりIBLには向いていないと思います.特にサンプリング数が
少ない場合や,変化が激しいデータに対しての品質が,他のIBLに特化した
方法と比べてあまり良くないようです.Blue Noiseな点群を生成するところまでは
良さげなんですけどね…
Beeさん,コメント有難うございます.
R&Dと言っても自分の範疇は応用が殆んどなので,pure R&Dとは言えないかも知れません.
ふむ,Recursive Wang TilesはHDRIのimportance samplingには向きませんか.
せっかくなのでPenrose TilesとかVoronoiの奴も試して比較してみましょうかね.時間があればですけど.
情報有難うございました.
RWT は、少なくともサンプル点を生成したのち、 EIHDRI のようにボロノイ図なりを作ってサンプル点の周りの輝度平均を求めるようにしないとダメでしょうね。
個人的には IBL のサンプリングは VEM が最強だと思います。
http://www.mpi-inf.mpg.de/resources/hdr/vem/
プログレッシブにサンプルを生成可能、ポッピングなし(FIR, IIR フィルタリング)、前計算の必要なし、高速、と文句のつけどころがありません。実装もそれほど難しくはないので、シェーダに組み込むのも容易でしょう。
syoyoさん,どうもです.
VEMですか,これは知りませんでした.
この論文そのものはリアルタイム向けに書かれているようですね.
うちらの環境だと,フレーム単位の前処理があっても問題ないし,
生成も15秒位までならlighting作業に支障はないと思います.
HDRIも動いてませんから,時間軸でのフィルタも必要なさそうです.
それでもサンプリングの部分は使えるでしょうか?
Halton sequence + Lloyd’s relaxationと書かれていますが,
自分は知らない方法です.
後でちゃんと読んでみます.情報有難うございました.