【Unity】dynamic voxel-based global illuminationを実現する SEGI
今回はUnityでdynamic voxel-based global illuminationを実現する、SEGIというアセットを試してみました。
今回試したSEGIは、他のものと同様に事前ベイク無しにGIを実現出来るみたいです。
実際に適当に試したのがコチラ。
全てのオブジェクトはダイナミックで、ベイクは行っていません。
また、こんな感じの表現も出来るみたいです。
目次
voxel-based global illumination
voxel-based global illuminationは、CryEngine3やLumberyardで紹介されているGI表現の一種みたいです。詳しいことは調べてません。
基本的に間接光のような光をトレースしなければいけない処理は重いので、多くの場合ライトを事前にベイクしたり、計算するにしても高速で実現できるように事前のデータを用意(ベイク)します。
試してみた
実際に試してみました。
プロジェクトの設定
まずはプロジェクトにSEGIをインポートします。
Githubで公開されているプロジェクトをZipで保存&解凍し、中身を自身のプロジェクトにぶち込めばOKです。
フォルダパスはAssets/SEGIです。
後はマニュアルを見ながらプロジェクトの設定です。
カラースペースをLinearに設定にします。
シーンの設定
まずRendering PathはDeferredにセットします。
Unityのライトベイク機能は全部殺します。
カメラにSEGIコンポーネントを追加します。
後はDirectional LightをSunに登録します。
ボクセルの粒度
ボクセルが上手い感じに出来ない時は、Voxel Spaceの数を減らすとかすると良いかもしれません。範囲が減りピクセル辺り高い解像度が得られます。
同時にFollow TransformでGIを求める対象を設定したり。
感想
普通にベイクした物とくらべて重かったりノイズが発生してたりしますが、ベイクなしでもソコソコ綺麗に絵が出るのは中々に面白いです。
関連
こちらはベイクすることが前提のライティング手順です。