Unity 2018.4では標準でGPUベイクできるライトマッパーが付属しています。
VRChatのUnityバージョンが2018になるので、自宅ワールドをGPUベイクしてみました。
Unity 2018.4.11f1での記録です。
公式のマニュアルはここ。
https://docs.unity3d.com/2018.4/Documentation/Manual/GPUProgressiveLightmapper.html
GPUベイクの有効化方法
Lightingタブのここを「Progressive GPU (Preview)」に変える
つまづいたところ
オンボードGPUが使われる
使用されているGPUはここに表示される。
Unityが勝手に選んでいるらしい1が、IntelのオンボードGPUが使われる場合は手動でつよつよGPUに変更した方がベイクが速い。
まず、GPUのplatform番号とdevice番号をUnityのEditor.logから調べる必要がある。
Editor.logは %LOCALAPPDATA%\Unity\Editor\Editor.log
にある。
Editor.logを開き、「Listing OpenCL platforms」で検索する。こんな感じでplatformとdeviceの番号が書いてあるので、オンボードではない方の番号を調べる。この例だとplatformもdeviceも0番がNVIDIA。
番号がわかったら、Unityの起動引数に -OpenCL-PlatformAndDeviceIndices <platform番号> <device番号>
を指定する。
UnityHubの場合はここでプロジェクト毎に設定する。
UnityHubを使ってない場合はショートカットの後ろに書けば良いと思う。
一部のライトの影が無い、ライト自体が消えてる、影の付き方が違う
Cast Shadowsをオフにしているメッシュに埋め込んだライトが想定通り動いていなかった。
Progressive GPUではCast Shadowsが強制オンのため、メッシュの影になっていた。
メッシュから外に出すように位置調整して解決。でも影の付き方は少々変わった。
↑ProgressiveライトマッパーによるCPUベイク。ライトスタンドの傘以外の部分をCast Shadowsオフにしている。
↑GPUベイクに切り替えた直後。ライトスタンドに埋め込んだPoint Lightがうまく動いていない。
↑修正後。画像には映っていないが天井の照明も同様に傘の影になったため、間接照明としての影響力を上げるためにIntensityとIndirect Multiplierを上げた。
-
Editorで使われているGPUが選ばれる? ↩