Bedroom demo: ArchViz with SSRR in Unity ( Unity 5.3 の SSR )



About light probe cage for large dynamic objects

This was rather straightforward, but it also brought up the need for lightprobe cages.
We made a temporary solution of our own for this scene,
and at the same time elevated the need to our R&D team. 
The feature is now in development to go properly into Unity.

Lightprobe cages allow for transferring lighting information to large dynamic objects,
or in cases where baked lightmaps cannot be use.

We use them for a number of objects in our scene: blankets on the bed, rug on the floor, etc.

light probe cage の考察?

  • 上の Unity の記事は SSR がメイントピックですが, light probe cage という「大きな動的なオブジェクト向けのライトプロープの使い方」の話もちらっと出ていて興味深かったので考察してみます.
  • ( 現世代機だと Per pixel で拾いにいってしまうことも多いですが, ) 動的なオブジェクトには位置座標を元に, ライトプローブを 1 個だけサンプルして利用する場合があります.
  • だた大きな動的なオブジェクトではジオメトリとサンプルした地点からの距離が離れているほど, ずれが生じることになります.
  • そこで この Lightprobe cages というのを導入したみたいです. 恐らく, 動的なオブジェクトでもライトプローブを複数サンプルしてライティングできるようになっているのだと思います.
  • ちょっと実装を予想してみます.
    • 動的なオブジェクトを覆うグリッドを割り当ててそれに 3D テクスチャを対応付けます.
    • グリッドの分割数に応じて生じたサンプル点の位置座標でライトプローブを拾って, 3D テクスチャ(グリッドと同じ解像度)に値をコピーします.
    • 動的なオブジェクトの位置座標を 3D テクスチャに対してマッピングして, 3D テクスチャのトライリニア補間で取得したライトプローブの値を使ったライティングをします.
  • これも予想になりますが(汗), Unity は Per Pixel を使わない何か理由があったから この機能を追加したのかな? と思いました.