レンダラ
画像をレンダリングするための手法についてレンダラ は手法を実装することで画像を生成するため、フレームワークの中で最も重要な部分です。
現在、幾つかのモンテカルロ手法ベースのレンダリング技法を比較やテスト用に提供しています。
ほとんどのレンダリング手法はマルチコアプロセッサを用いることで並列化されるようになっています。
レンダラはシーンファイルの中のrenderer
部分で指定します。
renderer:
type: <renderer_type>
params:
<parameters_for_renderer>
...
一般的なパラメータ
並列化
全てのレンダラ技法で幾つかのパラメータは共通で用いられます。 レンダラの並列化に関しては、以下のパラメータを全てのレンダラに対して用います。
num_threads
- 並列化のためのスレッドの数を指定します。
- もし
num_threads
<= 0の場合、(# of logical cores) + num_threads
数のスレッドが計算に用いられます。 また、もしnum_threads
= -1 で 実際のコア数が 8の場合,実際に計算に用いられるコア数は8+(-1)=7になります。
- もし
- デフォルトの値は 0 です。
- 並列化のためのスレッドの数を指定します。
grain_size
- 並列化のサイズを指定できます。
- デフォルト値: 10000
progress_update_interval
- プログレスバーのアップグレード(秒)の間隔を決定します。
- デフォルト値: 100000
品質の制御
レンダラの質を決定するパラメータ群を紹介します。
ほとんどのレンダリング手法はランダム性を用いたものなため、レンダリングの質はどれだけ計算に時間をかけたのかに依存します。 より多くの時間をかければ、その分、レンダリングの質が良くなります。 しかしながら、レンダリング時間の正しい尺度はないので、ユーザーは適切な計算時間をユーザが要求する質に合うように制御する必要があります。
num_samples
: レンダリングに使うサンプル数を定義します。render_time
: レンダリングを何秒行うかを決定します。
この二つは独占的なパラメータなので、
num_sample
と render_time
を同時に使用する事はできません。
レンダリング手法
Path tracing(パストレーシング)
タイプ
pt
: 光源の直接的なサンプリングは行いません (next event estimationと呼ばれています)ptdirect
: 光源を直接サンプリングします。
説明
このレンダラの実装はKajiyaらのパストレーシングをベースに作られています。 パストレーシングは最も基礎的なモンテカルロ法を基にしたレンダリング手法です。 センサーから出たレイが光源に到達するまでレイトレースを行う手法です。
Light tracing(ライトトレーシング)
タイプ
lt
: センサーの直接的なサンプリングは行いません (主にデバッグ用に用いられます)ltdirect
: センサーを直接サンプリングします。- ピンホールカメラを用いたシーンでは
lt
は真っ黒な画像しか生成しません。ピンホールとレイが交差することがないためです。
- ピンホールカメラを用いたシーンでは
説明
パストレーシングと違い、光源から出たレイをセンサーに到達するまでの光路を計算します。 2つのバージョンを実装していて、交差点からセンサーのサンプリングを直接行うものと行わないものです。
Bidirectional path tracing(双方向パストレーシング)
タイプ
bdpt
説明
双方向パストレーシングは光源とセンサー両方からのパスをトレースする手法です。 いくつもの異なる交差点を繋げたパスを結合することで光路計算を効率よく行うことができます。