PxrPathTracer
PxrPathTracer
これは、RISシステムのコアとなる最終品質のインテグレータです。 フォワードパストレーシングアルゴリズムを実行し、屋外でのスペキュラーの多いシーンの処理に優れています。 アルゴリズムの簡潔さにより、概して使いやすく、実行しやすいインテグレータです。 欠点としては、特に重要なコースティクスイルミネーションのあるシーンでは、収束の速度が落ちる点などが挙げられます(詳細は、以下のclampLuminanceとallowCausticsのパラメータを参照)。
直接イルミネーションでは、PxrPathTracerは、ライトの数 vs. Bxdf直接イルミネーションサンプルを決定するために、numLightSamplesとnumBxdfSamplesのパラメータの値を見ます。 その結果、生成された直接イルミネーション寄与は、多重な重要度サンプリングにより結合されます。
間接イルミネーションでは、PxrPathTracerの場合、sampleModeパラメータが、ディフューズ、光沢/スペキュラー、サブサーフェス、屈折/透過のBxdfローブ(分布領域)間でどのように間接レイカウントを分配するかについての手法を制御します。
sampleModeパラメータを"bxdf"(デフォルト)の値に設定した場合、 各カメラのヒットポイントで発生する間接イルミネーションレイの数がnumIndirectSamplesパラメータの値により制御され、 各カメラのヒットポイントでBxdfを実行することで、Bxdfのディフューズ vs. 光沢 vs. スペキュラーのローブ(分布領域)からサンプリングされる間接レイを発生させる確率を制御します (つまり、Bxdfは、 間接のディフューズ vs. 光沢 vs. スペキュラーのレイが各カメラのヒットポイントから発生する数を制御します)。
sampleModeパラメータを"manual"の値に設定した場合、 numIndirectSamplesパラメータの値は無視され、ユーザーは、Bxdfのローブ毎に間接レイの合計数を手動で制御する必要があります。 特に、sampleModeを"manual"に設定して、numDiffuseSamplesパラメータが各カメラのヒットポイントで発生する間接ディフューズレイの数を明示的に制御する場合、numSpecularSamplesパラメータは、各カメラのヒットポイントで作成される間接ディフューズ/スペキュラーのレイの数を制御し、 numSubsurfaceSamplesパラメータの値により、各カメラのヒットポイントから始まるサブサーフェスレイの数が決定します。 そして、numRefractionSamplesパラメータの値は、各カメラのヒットポイントで作成される屈折/透過のレイの数と同じです。
このインテグレータは、以下のように最大レイデプスを制御します:
- maxPathLengthパラメータは、このインテグレータの最大レイデプスでの絶対上限です。
- "trace:maxdiffusedepth"と"trace:maxspeculardepth"のアトリビュートは、間接ディフューズレイと間接スペキュラー/光沢レイの最大レイデプスをそれぞれ制御します。
ボリュームのシングルスキャッタリングは、このインテグレータでサポートされています: つまり、関与媒体によるパスはいずれも、そのパスに沿って入射するライトのボリューム統合を実行します。 ボリュームから新しいパスは発生しません(よって、マルチスキャッタリングはボリュームに対して発生しません)。
パラメータ
- maxPathLength
- 最大レイデプスの絶対上限を制御します。 このパラメータの1の値は、直接イルミネーションのみを許容し、4の値はグローバルイルミネーションのバウンスを3回まで許可します。 デフォルトは10です。
- sampleMode
- ディフューズ vs. 光沢 vs. スペキュラーのBxdfローブ間で、どのように間接レイカウントを分配するかについての手法を制御します。 このパラメータの有効値は"bxdf"または"manual"です。 "sampleMode"を"bxdf"に設定した場合、 Bxdfは、各カメラのヒットポイントで発生する間接レイの数をディフューズ vs. 光沢 vs. スペキュラーのローブ間でバランスをとる必要があり、 各カメラのヒットポイントで発生する間接レイの合計数は、numIndirectSamplesパラメータにより制御されます。 "sampleMode"を"manual"に設定した場合、 ユーザーは、numDiffuseSamples, numSpecularSamples, numSubsurfaceSamples, numRefractionSamplesのパラメータにより、 各カメラのヒットポイントでBxdfローブ毎に発生する間接レイの数を明確に指定する必要があります。 デフォルトは"bxdf"です。
- numLightSamples
- カメラのヒットポイント毎の直接イルミネーションに対するライトサンプル数を制御します。 デフォルトは1です。
- numBxdfSamples
- カメラのヒットポイント毎の直接イルミネーションに対するBxdfサンプル数を制御します。 デフォルトは1です。
- numIndirectSamples
- sampleModeをBxdfに設定した場合、 このパラメータは、カメラのヒットポイントごとに発生する間接レイの合計数を制御します。 sampleModeをmanualに設定すると、 このパラメータの値は無視されます。 デフォルトは1です。
- numDiffuseSamples
- sampleModeをmanualに設定した場合、 カメラのヒットポイント毎に発生する間接ディフューズレイの数を制御します。 sampleModeをBxdfに設定すると、このパラメータの値は無視されます。 デフォルトは1です。
- numSpecularSamples
- sampleModeをmanualに設定した場合、 カメラのヒットポイント毎に発生する間接スペキュラー/光沢レイの数を制御します。 sampleModeをBxdfに設定すると、このパラメータの値は無視されます。 デフォルトは1です。
- numSubsurfaceSamples
- sampleModeをmanualに設定した場合、 カメラのヒットポイント毎に発生するサブサーフェスレイの数を制御します。 sampleModeをBxdfに設定すると、このパラメータの値は無視されます。 デフォルトは1です。
- numRefractionSamples
- sampleModeをmanualに設定した場合、 カメラのヒットポイント毎に発生する屈折/透過のレイの数を制御します。 sampleModeを"bxdf"に設定すると、このパラメータの値は無視されます。 デフォルトは1です。
- rouletteDepth
- ロシアンルーレットを実行し始めるレイデプスを制御します。 デフォルトは4です。
- rouletteThreshold
- その値よりも小さい場合にロシアンルーレットを実行し始めるパスのスループットの閾値を制御します。 デフォルトは0.2です。
- clampDepth
- clampLuminanceパラメータの値を指定すると、clampDepthは、レイ毎の輝度に基づいてクランピングを始める時点でのレイデプスを制御します。 例えば、このパラメータを2に設定し、clampLuminanceの値を4に指定すると、 各レイが寄与する輝度は、すべての間接イルミネーションに対してわずか4であり、 直接イルミネーションに影響を及ぼさず、直接イルミネーションのクランピングも実行されません。 デフォルトは2です。
- clampLuminance
- デフォルトでは、PxrPathTracerインテグレータは、各レイ毎に寄与する輝度を、最大限でも10.0にクランプします。 しかし、clampLuminanceパラメータに別の値を指定することで、この挙動を変更することができます。 clampLuminanceパラメータに比較的小さい値(例えば、2から20の間)を指定すると、収束の速度を大幅に上げることができます。 ほとんどの場合、より高度なPxrVCMインテグレータよりもPxrPathTracerでの収束が速くなります。 間接イルミネーションのライトパスが、クランピングにより著しく暗くなる場合がありますが、これが許容範囲である場合もあります。 このパラメータを(例えば1e30のような)かなり大きい数字に設定すると、すべてのクランピングを効率的に無効にすることができます。 デフォルトは10.0です。
- allowCaustics
- コースティクスライトパスからのイルミネーション(つまり、ディフューズサーフェス上のスペキュラーイルミネーション)を許可するか、許可しないかを制御します。 デフォルトは0(オフ)です。