お詫び

いまさら気がついたのですが、lucille 開発ノートと、SBR 2004 のページが、 sourceforge.net の Perl のバージョンが変わったのか、 更新しようとするとエラーが出るようになっていました。 いろいろ調べてみましたが、どうにも原因がわかりません。 そのため、SBR 2004 は閲覧用に残すとして、 lucille 開発ノートは内容を RenderNote(wiki) のほうへ移管して、ページを閉じようと思います。 lucille 開発ノートに二点質問をいただいていたのですが、最近まったく見ていなくて気がつきませんでした。 ごめんなさい。回答は以下の通りです。 Q. 準モンテカルロのところが画像見れないですけど。 A. 画像のバックアップはあるのですが、リンクが絶対リンクのため、直すのが億劫になっていています、、、 準モンテカルロについては、幾人の方からご質問のメールをいただいています。 結構興味をもたれる方が多いようです。 準モンテカルロについては、時間を見つけて、 http://lucille.atso-net.jp/wiki/index.php?%C4%E3%BF%A9%A4%A4%B0%E3%A4%A4%CE%CC%CE%F3 のページに、リンク切れの画像も含めて、まとめていきたいと思います。 Q. MQOtoRIBのリンクが切れています。もう公開しないのですか。 A. 作成していただいた作者の方のページでもう公開していないようです。 lucille のソースコードツリーには、昔私が書いた MQOoRIB のコード http://lucille.atso-net.jp/svn/lucille/tools/mqo2rib/ もあるのですが、もう古いのであまり役にたたないかもしれません。 最近はクロスプラットフォームの blender のほうに惹かれていますので、 blender のエクスポータを書くほうがプライオリティが高くなっています。 とはいえ、mqo も人気がありますので、 lucille が安定してきて 気が向いたら書くかもしれません。

wavelet noise and modified noise 1

ことしは、SIGGRAPH 2005 ではエイリアシングを低減する wavelet noise が、 Graphics Hardware 2005 では GPU での実装に適した modified noise for evaluation on graphics hardware が提案されました。 wavelet noise は低周波数を含まなく、 かつ完全に帯域制限(周波数があるレンジ内にある)されたノイズを生成することができます。 このノイズ関数を用いることで、エイリアシング問題が緩和されます。 Pixar の PhotoRealistic RenderMan では、これからはノイズ関数の実装には この wavelet noise が用いられるとのことです。 Olano’s mofied noise は、2D テクスチャから 3D ノイズを生成でき、またハッシュのルックアップを 必要としないため、GPU での処理に適しています。 これからの GPU 上でのシェーダによるノイズの生成には、 このノイズ生成手法が用いられていくでしょう。 今年はノイズの当たり年といってもよいかもしれません。 ノイズは Perlin ノイズ使っとけばいいんじゃない? と思っていましたが、今回これら二編の論文を通じて、 レンダラ書きとして、もっとノイズに関して学ぶ必要があると痛感しました。 Texturing andContinue reading “wavelet noise and modified noise 1”

pthread + gcc + sse 問題解決

以前、linux + gcc にて SSE と pthread を同時に使うと、 スレッド関数内での SSE ローカル変数が 16 byte アラインされないという問題 http://lucille.sourceforge.net/blog/archives/000308.html がありましたが、これは実際には glibc のバグで、最新の glibc では fix されています。 たぶん bug ID 723 のバグです。 http://sources.redhat.com/bugzilla/show_bug.cgi?id=723 glibc 2.3 系では修正されているようです。 ためしに glibc 2.3.2 の環境で再度テストプログラムを実行してみましたが、 ちゃんと 16 byte アラインされていました。問題なさそうです。 SSE 演算に使うローカル変数は全部動的確保かスタティック領域に 作るように書き直さないといけないのかなー、めんどうだなー、と 思っていたのですが、時が解決してくれました。 SSE と pthread(実際には clone() or linuxthread) を同時に使う場合は、 glibc 2.3 以上を使うほうがよさそうです。 最近ついにデュアルコアのプロセッサが市場に出回りはじめました。 これからのパソコンのトレンドである多数コアプロセッサContinue reading “pthread + gcc + sse 問題解決”

lucille の方向性

長期取材旅行では、数多くのレンダラ野郎と出会いました。 やはり「レンダラ野郎同士は惹かれあう」というのは本当だったのか… とりあえず、世の中では結構なひとたちが(オフラインの)レンダラ野郎を欲している ことがわかりました。 レンダラを書いていれば、とりあえず 10 年は食いっぱぐれる心配はなさそうです。 レンダラ野郎たちからのご助言をいただき、 これからの lucille の方向性を考えてまとめてみました。 – レンダラ側– モーションブラー – アンチエイリアシング(マルチサンプリング) – ERPT などの大域照明 – メモリに入らないようなシーン(やテクスチャ)を扱えるようにするためのメモリ管理機構(MMU) – 空間データ構造 – シェーダ側 – 任意の Du, Dv 関数の実装 モーションブラー モーションブラーは、特にプロダクションにおいては必須の機能です。 やはりモーションブラーがないと使い物にならないとのこと(プロダクションにおいては) レイトレベースのレンダラで分散レイトレなどではなく、効率よくモーションブラー を実現する手法はまだまだ open な問題だと思います。 たとえば 1 フレーム内で画面の端から端まで移動する物体でも きれいに効率的にモーションブラーがかかるなど。 なにかひらめかないかなぁ… アンチエイリアシング(マルチサンプリング) これはとくにピクセルジャギーを減らすためのアンチエイリアシング(マルチ/スーパーサンプリング)と、 シェーダのアンチエイリアシングになります。 やはりプロダクションのものはよく出来ているだけあって、物体のふちなどの ジャギーもまったく見えません。 結局のところ、シェーダアンチエイリアシングを除くと、 一次レイがヒットする(つまりカメラから直接見える)物体のふちの ジャギーが一番目に付く要素であるので、これらのアンチエイリアシングには、 一次処理はスキャンラインなどでジオメトリックにアンチエイリアシングする のが結果画像が一番きれいに出そうです。 もちろんスキャンライン + 2Continue reading “lucille の方向性”