ライトプローブテクスチャを見ると、ぼやけた環境マップのように見えます。
2つの違いは何ですか、光プローブはどのように作られていますか、それがぼやけていることの利点は何ですか?
ライトプローブテクスチャを見ると、ぼやけた環境マップのように見えます。
2つの違いは何ですか、光プローブはどのように作られていますか、それがぼやけていることの利点は何ですか?
回答:
私が知っている「光プローブ」には、2つの異なる一般的な意味があります。両方とも、シーン内の1つのポイントの周りの光を表します。つまり、小さなサイズに縮小してそのポイントに立った場合に、周囲のあらゆる方向に見えるものを表します。
1つの意味は、ポイントの周りの光の球面調和表現です。 球面調和関数は、球面領域で定義された関数のコレクションです。これは、赤道周辺で、球体の極から極へと一定の回数だけ振動する正弦波に似ています。
球面調和関数を使用して、いくつかの球面調和関数(通常は4(線形、1次、または1バンドSH)または9( 2次、2次、または2バンドSHと呼ばれます)。スケーリング係数を保存するだけでよいため、これは非常にコンパクトです。たとえば、RGBデータを使用する2次SHの場合、プローブごとに必要な値は9 * 3 = 27のみです。そのため、SHは非常にコンパクトですが、必然的に非常に柔らかくぼやけた点の周囲の光を表現します。これは拡散照明に適しており、おそらく粗度の高い鏡面反射です。
SimonのTech Blogからのこのスクリーンショットは、シーン全体に配置されたSHライトプローブの配列を示しており、それぞれがその時点で受け取った間接照明を示しています。
「ライトプローブ」の現在一般的なもう1つの意味は、さまざまなレベルの粗さの鏡面反射照明に使用できるように、ミップレベルが異なる範囲に事前にぼかしられた環境キューブマップです。Seb Lagardeのブログのこの画像は、基本的な考え方を示しています。
高解像度のミップ(左に向かって)は、詳細な反射画像が必要な高度に研磨された表面に使用されます。右に行くほど、低解像度のミップレベルはますますぼやけ、粗い表面からの反射に使用されます。シェーダーでは、このキューブマップをサンプリングするときに、材料の粗さに基づいて要求されたミップレベルを計算し、トライリニアフィルタリングハードウェアを利用できます。
これらのタイプのライトプローブは両方とも、間接照明を近似するためにリアルタイムグラフィックスで使用されます。直接照明はリアルタイムで計算できますが(エリアライトの場合は少なくとも近似できます)、通常、間接照明はその複雑さと計算オーバーヘッドのためにオフラインの前処理でベイク処理されます。
従来、ベイク処理の結果はライトマップになりますが、ライトマップは静的ジオメトリの拡散照明に対してのみ機能し、さらに多くのメモリを占有します。SHライトプローブの束をベイク処理すると(非常にコンパクトであるため、それらの多くを購入できます)、さらにキューブマップライトプローブがまばらに散らばり、静的オブジェクトと動的オブジェクトの両方でまともな拡散反射光と間接反射光を得ることができます。彼らは今日のゲームで人気のあるオプションです。