光源

ライト

PRManのRISでのライティングは、Geometric Area Light(幾何形状面光源)により行ないます。PRMan 18でのGeometric Area Lightの導入により、RIS用の環境が設定され、 サンプル管理をレンダラーに譲渡し、シェーダの実行を限定することで、効率性が向上したといえます。

Geometric Area Lightには(発光エフェクト用の)任意のジオメトリを指定することができますが、 根本的には一般的な光源を模倣するように意図されています。平行光源、環境光源、平面、円盤、球などの光源を使用することができます。

Specialized Light Geometry(特別な幾何形状光源)

PRManには、基本のGeometric Lightが一式実装されています。 これらの特別な形状 - envsphere, distantlight, rectlight, spherelight(特に最後の2つ)は、 任意のジオメトリ(つまり、ライトのBxdfが付加された標準ジオメトリックプリミティブ)よりも優れたサンプルの挙動ができます。尚、これらを最適化するために、spherelightでは、光源のジオメトリ上で、すべてのスケール変換を均一にする必要があります。

images/lighting/lightTypes_env.jpg

envsphere

images/lighting/lightTypes_distant.jpg

distantlight

images/lighting/lightTypes_rect.jpg

rectlight

images/lighting/lightTypes_sphere.jpg

spherelight

Light Localization(光源のローカライゼーション)

複数の光源があるシーンでは、光源をサンプリングする相対頻度に関して行なう決定が、画像の収束速度を決める上で極めて重要になります。シェードがかかる指定したポイントに対して取得する光源のサンプル数は、主にインテグレータのnumLightSamplesパラメータにより決まります。これらのサンプルは、使用可能な光源間に影響します。emit() コールに対して、指定されたプラスのfixedsamplecount値を持っている光源は単独で処理され、これらのサンプルは、''numLightSamples''に追加されます。これについての詳細は、光源サンプリングを参照してください。

ローカライゼーションは、fixedsamplecountを指定しない光源に対して、レンダラーが光源サンプルを選択するという方法による一連のスキームです。PRMan 19では、3つのモードが使用可能で、追加のモードはPRMan 20で使用できるようになります。尚、mode 0以外のモードでは、光源のfixedsamplecountのプロパティが無効になるため、以下に説明するように、他のすべての光源と同じように扱われることになります。

ローカライゼーションのデフォルトは、RISではmode 0で、REYESではmode 1です。以下のribの行により、別のスキームを選択することができます。

Option "shading" "int directlightinglocalizedsampling" [n]

ここで、nは以下の値のいずれかになります:

0の値はローカライゼーションを無効にし、1の値はREYESレンダリングで使用されるデフォルトを意味しますが、 このモードは、私たちがテストを行なったほとんどのRISのシーンで非常に処理が重くなることがわかりました。 2はサポート外です。 3の値は新しいモードを有効にします。 私たちのテストでは、時間とレンダーの精度間のバランスがもっとも良くなりました。

有効の場合、ローカライゼーションは、ライトに存在している固定サンプルカウント設定を上書きして、無視します。

  • 0: RISでのデフォルト値。mode 0はグローバルスキームで、光源の選択は、シェードポイントのいずれのプロパティにも左右されません。例えば、mode 0の実行は高速になります。しかしながら、mode 0では、無限(環境/遠隔)光源およびローカル光源の相対的影響を決めることができません。その代わりに、サンプルは2つのタイプのグループ間で均等に分割されます。これらの各グループ内でのサンプルの配分は、そのグループ内の光源の相対的な強さに応じて行なわれます。等角サンプリングが有効になった(equiangularWeightが0以外)ボリューム内でのサンプルのシェーディングについては、0以外のモードは、まだサポートされていないため、これらのポイントの場合、自動的にmode 0が選択されます。
  • 1: REYESでのデフォルト値。mode 1は、対象となるシェードポイントに対して、すべての光源の相対的な重要度を計算します。光源の強さのほか、距離および方向も考慮に入れます。この計算では、速度に負荷がかかります。この負荷は、シェードポイントに対して取得したすべての光源サンプルにわたって、平均に分けられます。REYESでは、通常、シェードポイント毎に多数の光源サンプルがあるため、この方法はうまく機能します。RISでは、numLightSamplesが小さいため、この方法は、通常 - 常にではありませんが - 処理が重くなります。
  • 3.mode 3は、mode 1と同様、対象となるシェードポイントに対して、すべての光源の相対的な重要度を計算します。この計算は、mode 1での計算より簡単で速く行なわれるため、このモードは、光源のサンプル数が一般的に少ないRISでの使用により適しています。ほとんどすべてのテスト事例で、mode 3は、同じレンダリング時間の場合、mode 0よりも優れた画像を生成しました。しかし、わずかなライティングのシーンでは、mode 0の方が高精度の画像を高速に生成できるという点が、mode 3の負荷になります。従って、デフォルトではこのモードを有効化していません。
  • 4.mode 4は、PRMan 20.0で導入され、RISでのみ使用することができます。シェードポイントに対して光源の相対的な重要度を計算するのではなく、空間の球形領域に対して計算を行ない、結果はキャッシュされます(mode 1およびmode 3では、使用後すぐに結果が破棄されるため、この点が異なります)。後続のシェードポイントは、光源の重要度を受け取る球形領域から、最近接の球形領域を選択します。このキャッシュが意味するのは、メモリのオーバーヘッドだけでなく、mode 3での光源の重要度の計算を加速化するということです。さらに、mode 4は、発見的問題解決手法を使用しています。この手法により、シェーディングの結果がレンダーの進行中にシステムへフィードバックされ、個々の光源がキャッシュの球形に対して、隠れているか、または見えているかを考慮に入れたり、サーフェスのbxdf反応を考慮に入れたりすることができます。この後者の機能は、他の光源よりも遠くにある1個の光源が、サーフェスからの反射方向の近くに存在するため、大きな影響を与えている光沢のあるサーフェスで役に立ちます。穏やかなライティングから複雑性の高いライティングのあるシーンでテストを行なった結果、同じ回数のレンダーで、精度に関しては、mode 0およびmode 3よりもmode 4が優れていることがわかりました。シンプルなオクルージョンの稀な事例では、mode 3がより有益であり、基本的なライティングの事例では、mode 0が最も良くなることがあります。

尚、mode 2は、廃止された試験モードのため、使用しないでください。
ローカライゼーションのスキームにより、光源に割り当てられる重要度は、光源毎の乗数により修正することができます。これは、光源のemit() コールに対するimportanceパラメータで実行します。

シェードポイントでの光源の影響は、シャッターの開放時間で計算され、光源とシェードポイント間の相対的な動きは、現段階では考慮に入れません。 非常に稀な状況で、画像の乱れが起こることがあります。 その場合、シャッターが開いている間、光源は、シェードポイントで見えないものとして誤って見なされます。 このような状況の現在の対応策は、オプションを'0'に設定して、ローカライゼーションを無効にすることです。

Shaders(シェーダ)

PRManには、基本の光源シェーダ、ビルトイン一式が入っています:

Camera Visible Lights(カメラで見える光源)

光源がカメラで見えるようにすることは可能ですが、Bxdfも指定する必要があります。 PxrLightEmissionBxdfにより、光源シェーダで指定されたライティング値を自動的に放射にマッピングして表示することができます。 これは、レンダラーのライティングデータベースと通信して行ないます。