背景のモデルを全部Skyboxで描画してしまうアプローチについてです。
「遠距離にあるモデル=小さく・大量に描画」な訳ですが、もし背景が動かない場合は非常に勿体ないような印象を受けます。というのも
- ライトマップ焼くときに背景は別で焼ける
(手前の微調整が楽) - オブジェクトが多いとゲームの初期化のコストが高い
(テクスチャのロードとどっちが安いかと言われると、範囲次第) - LODとか面倒くさい
で、もう面倒だから背景をCubemapにしてしまおう…と。
手前のキャラや家はモデル、背景の壁はCubemapです。
一応IBLパワーにより、ある程度の光源整合性は取れてる感じです。
背景をCubemapにする手抜きな方法
Cubemapを作る方法についてはCamera.RenderToCubemapて機能もあるし環境マッピングで絵作り - テラシュールブログもある訳ですが、面倒くさいのでReflection Probeで作っちゃいます。
まずは適当な背景を作ります。
あとは単純、カメラにReflectionProbeをくっつけて、ReflectionProbeをBake(非Auto)するだけです。
ただそのままだと解像度が荒いので、Resolutionを512とか1024にすると良いかもしれません。
すると、シーンと同名のフォルダに「ReflectionProbe-*」が作成されます。片方は大抵の場合はProcedural Skyboxから作った環境マップです。
で、これをテキトウなフォルダにコピーしてGlassy Reflectionのチェックを外します。そうしないと、何かボケた絵になります。
(Skyboxが何か解像度が低い感じの絵になる場合は、大体これのせいです)
Materialを作成しSkybox>Cubemapシェーダーを設定、
Cubemapに先ほどコピーしたreflectionprobe-*を設定します。
あとは作ったマテリアルをSceneビューへドラッグ&ドロップすればSkyboxが更新され先ほど撮影したCubemapが背景になります。
一度設定した後に更新するのは面倒くさいので、手抜きします。
ReflectionProbeのTypeをCustomに設定し、Cubemapに先ほどコピーしたCubemapを設定すると、Bakeした際の更新先が設定したCubemapになり、毎回Cubemapを作成→コピー→設定更新とかしなくても良くなります。
基本的に「接触する可能性のあるモデル」に使うと簡単に絵が破たんしますが、もう少し遠距離の背景には使えなくもないかな…といった感じで。