RenderMan勉強中 ~なんとなくざっくり~

電車の中やら家やらで、Advanced RenderMan眺めてます。
読むってほど読んでないので眺めてます。
本読むだけでは大枠ぐらいしか理解できんなぁ。

とりあえずなんとなくざっくりの流れはつかみました。
いきなりシェーダの勉強!とかやるのもいいけど、
何か覚える時に重要なのは全体像の把握であって、細かいテクは後でいいやというのが持論。
僕も大人になったもんです。うんうん。


以前はREYESもレイトレースも良くわかってなくて混同してみてたんですが、
今になってみてみたらずいぶん違うんですねREYESってやつは。確かに複雑。

REYESのアルゴリズム自体かなり当時のプロダクション事情に沿った作りというか、
何でもレンダリングしてやるぜ!という気合を感じました。
当時CGで映画とかまるで使われてなかったような頃に良くこんなものが作れたなと恐ろしく思います。
つーかしかも良くこんなものにレイトレ混ぜ込んだな。無理だろ。
レンダラ開発というのはやはりものすごい英知の結晶なんだなという気がしました。恐ろしい。

とりあえずこの本のRSL周り以外の読みたいところはざっくり読んだのであとは実際に使いながらだなと思います。
一応RIBを何種類かぼやっと眺めてみて、その後にRSLを書いてみようと思います。何書くかな。

本読んでて知らなかったというか気になったことを一応メモしときます。
メモなんで読まなくてもいいですが、もし読んだ方で、間違いに気づいた方いれば
是非とも容赦なく突っ込んでくださいませ。お願いします。

 
・グリッドは単純にmicropolygonを格納するためのもの。
  Option “limits” “gridsize” 32
 という感じで1グリッドあたりの最大micropolygonサイズを決められる。
 最適化されたグリッドサイズは
  bucket size / shading rate となる。
 たとえばbucket size 16、shading rate 1なら 16×16/1 で
 256が最適なグリッドサイズとなる。
 バケットサイズと同様に、大きくすればメモリ食うし小さくしすぎたら効率悪いんだろうと予想。

・バケットもグリッドも、基本的にはデフォルトの16×16 & 256で問題は無いらしい。
 もちろんその限りで無い場合も多々ある。

・ディスプレイスメントシェーダの実行の為、シェーディングを終わらせてから再度カリングを行う。
 最後の最後までディスプレイスメントシェーダ実行後のポイントの位置を考慮しなくてよいので便利(?)
 ただしその分無駄なシェーディングポイントが発生してしまうので、
 オクルージョンカリングなどでこれを極力回避するようになっている。

・MBやDOFは1回しかシェーディングを行わない。
 その結果を確率的サンプリング(?)などを用い、MBやDOFに利用する。
 →こいつはもうちょい詳しく見とく。

・自前シェーダや、その他ジオメトリに与えるパラメータはDeclareする必要がある。
 PやCsなど一般的なパラメータはシステムが定義済みなので使用可能ということらしい。

・透明物を扱うとオクルージョンカリングが効かないから使用メモリ増大。

・DelayedReadArchiveはバケットの中に対象のバウンディングボックスが入ったら読み込み、終わったら解放する。
 毎度それをやるのでメモリ効率は非常に良いし安定しているが、レンダリング時間は増大する。

・lightsource宣言の次の文字列はライトシェーダの名前。spotlightとかそういうの。
 その次の数字はライトの識別子。後から同じナンバーのを定義すると上書きされるっぽい。

「RenderMan勉強中 ~なんとなくざっくり~」への2件のフィードバック

  1. RSLの恐ろしいところは,簡単であるが故に酷いコードを量産できる所なんです.例えばなぜuniformやvaryingといったキーワードが定義されているのか,理由を知っていてちゃんと使えないと,もの凄く遅いシェーダになったりするんです.

    そういう事を気にし始めると,結局自分が今使っているレンダラはどのように画像をレンダするのか,という仕組みの部分まで知る必要があるし,知るべきだと思います.(これはRenderManに限りませんけどね)

    引き続き,頑張ってください.

  2. >ますおさん
    そうですね、、なんとなく適当に書いててはアレなシェーダが量産されるばっかりというのは納得です。
    仕組みわかってないと最適化なんか出来ないですし、そういうことが出来る人間じゃないと重宝されないでしょうし、、、道は険しい。。。
    道に迷ったら助けてください・・・!!

コメントを残す

メールアドレスが公開されることはありません。