
BakeryのDirectional ModeでMonoSHを使う方法を書きます。従来(SH,RNM)よりメモリ消費少なく高品質なライトベイク結果が得られます。MonoSHを使うにはBakery1.9+にする必要があります。
解説
Unityのライトマップベイクでも、GPUライトベイクアセットであるBakeryにもディレクショナルモードという設定があります。
平たく言うとディレクショナルモードだとライトマップに方向性の情報を持たせられるのでノーマルマップ(と疑似的なスペキュラ)がちゃんと効くようになってディテールが増します。しかし、その分負荷も増します。

Bakeryのディレクショナルモードは方式がいくつかあって、高品質なのはSHです。しかし、ライトマップをHDR1枚+xyz各方向LDR3枚=4枚出力するためメモリ消費が大きいのがネックです。BakeryのGitHub1.9+版で追加されたmonoSHはHDR1枚+LDR1枚(xyzの方向情報をグレースケールとしてRGB各チャンネルに格納して1枚にまとめる)になるので、SHより軽量(Unityのディレクショナルモードと比べて半分)でなおかつ、SHとほぼ同じ品質が得られます。
I knew for a long time that I can do it, but today I actually implemented and tested it.
What if we make SH L1 lightmaps grayscale but still sample them using the non-linear Geomerics method instead of using the weird half-lambert solution for directional maps that Unity uses? pic.twitter.com/XoQn9OSVLc— Mr F (@guycalledfrank) July 30, 2022
また、MaterialPropertyBlocksが必要ないため、VRChatでアップロードするときにVRC Bakery Adapterが不必要で手間が省けます。
注意
・ライトベイクするマテリアルのシェーダーがmonoSHに対応している必要があって、Filamented Standard Shader(gitlab版最新版、Booth版は非対応)か、BakeryのStandard Shaderは対応しています。ライトベイクしないものはMonoSHの設定は要りません。
・モデルのテクスチャ、特にノーマルマップとラフネスマップをちゃんと作ってる場合でないと十全に効果を発揮しないので、それらがない場合は導入しないほうが負荷やベイク時間減らせてよいかもしれません。
Bakery ver.1.9+を導入する
Bakery公式のマニュアル:https://geom.io/bakery/wiki/index.php?title=Github_access
必要なもの
- Bakery – GPU Lightmapper
- nVidiaのGPU(Bakeryに必要)
- GitHubのアカウント
GitHubのアカウント作成
GitHubでアカウントを作成します(アカウントない場合)。やり方は省略。
Invoice Numberを調べる
Unity Asset Storeを開きます。
右端のアカウントのアイコンから、Order Historyを開きます。

BakeryのInvoice Numberをコピーしておきます。どれがBakeryなのかは買った時期と値段で判断してください。View Order Detailでどれか判別します。

もしくはUnity Asset Storeから届いたメールに添付してあるpdfの請求書番号がInvoice Numberなのでコピーします。Humble Bundleで買った場合はvoucher codeが番号になります。
GitHubのアクセス権を得る
以下のページにアクセスします。
- Invoice number:にUnity Asset Storeで取得したBakeryのInvoice Numberを入力します。
- Github username:にGitHubのIDを入力します。

Submitを押して、手順通り進めるとBakeryのGitHubリポジトリにアクセスできるようになります。
Bakeryのアップデートパッチを導入する
Unity Hubで導入したいプロジェクトを開きます。Bakeryを導入していない場合は、Package Managerから導入してください。
メニューのBakery->Utilities->Check For Patchesを開きます。

- Lightmapper invoice:にBakeryのInvoice Numberを入力します。
- RTPreview invoice:は空欄でOKです。
- Github username:にGitHubのIDを入力します。

Checkを押すとダウンロードが始まるので待ちます。
アップデートが完了したらEditorの再起動を求められるので、一旦プロジェクトを閉じて開き直します。
以上でBakery 1.9+の導入は終了です。
MonoSHに設定する
BakeryのWindowを開いて、Directional modeのプルダウンからMono SHを選びます。

ライトベイクするマテリアルをBakery StandardかFilamented Standard Shader(Gitlab最新版)に変更します。
Bakery Standardの場合はForward Rendering OptionsにあるEnable Mono SHにチェックを入れます。

Filamentedの場合はLightmap OptionsのBakery ModeをMonoSHにする。

あとは通常通りBakeryでベイクしてください。
余談
ゴーストクラブのCGWorld配信かなにかでSH使ってると言ってて、宍戸あくろ個展はmonoSHだと会場手掛けたtanittaさんが言ってて、Elsol2の会場にmonoSH使っていた。