PxrPathTracer

PxrPathTracer

images/intPathTracer.png

これは、RISシステムのコアとなる最終品質のインテグレータです。 フォワードパストレーシングアルゴリズムを実行し、屋外でのスペキュラーの多いシーンの処理に優れています。 アルゴリズムの簡潔さにより、概して使いやすく、実行しやすいインテグレータです。 欠点としては、特に重要なコースティクスイルミネーションのあるシーンでは、収束の速度が落ちる点などが挙げられます(詳細は、以下のclampLuminanceallowCausticsのパラメータを参照)。

直接イルミネーションでは、PxrPathTracerは、ライトの数 vs. Bxdf直接イルミネーションサンプルを決定するために、numLightSamplesnumBxdfSamplesのパラメータの値を見ます。 その結果、生成された直接イルミネーション寄与は、多重な重要度サンプリングにより結合されます。

間接イルミネーションでは、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
sampleModeBxdfに設定した場合、 このパラメータは、カメラのヒットポイントごとに発生する間接レイの合計数を制御します。 sampleModemanualに設定すると、 このパラメータの値は無視されます。 デフォルトは1です。
numDiffuseSamples
sampleModemanualに設定した場合、 カメラのヒットポイント毎に発生する間接ディフューズレイの数を制御します。 sampleModeBxdfに設定すると、このパラメータの値は無視されます。 デフォルトは1です。
numSpecularSamples
sampleModemanualに設定した場合、 カメラのヒットポイント毎に発生する間接スペキュラー/光沢レイの数を制御します。 sampleModeBxdfに設定すると、このパラメータの値は無視されます。 デフォルトは1です。
numSubsurfaceSamples
sampleModemanualに設定した場合、 カメラのヒットポイント毎に発生するサブサーフェスレイの数を制御します。 sampleModeBxdfに設定すると、このパラメータの値は無視されます。 デフォルトは1です。
numRefractionSamples
sampleModemanualに設定した場合、 カメラのヒットポイント毎に発生する屈折/透過のレイの数を制御します。 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(オフ)です。