Unity-Lighting

レンダーパイプライン

Builtin
今までのUnity

URP(Universal Render Pipeline)
Builtinと同質な表現だが、より最適化されている、拡張性も向上。まだ制限もあるがBultinとの機能のパリティが進んでいく。Surfaceシェーダーが使えなくなったが、Shader graphが使える。

HDRP(High Definition Render Pipeline)
より現実のカメラに近い表現。光量もLumenや色温度など物理パラメータを指定、Volumetricsなどの表現が可能。

ポストプロセス

URP, HDRPは Volumeを追加後、カメラのPost Processingを ONに

ライトマッピング

Generate Lightmap UVs

UV2にライトマップ用のUVを作成
https://docs.unity3d.com/jp/460/Manual/LightmappingUV.html
Hard Angle = 180 で全エッジスムーズ、人工物は 88(デフォルト値)

プログレッシブライトマッパー

https://unity3d.com/jp/how-to/progressive-lightmapper-optimization-tips

LightingMode

・影に関する設定
Baked Indirect:間接光のみベイク(ShadowDistance以上のShadowは描画されない)
Shadowmask: 静的および動的ゲームオブジェクトからの重なるシャドウを自動的に合成
※QualityでDistance Shadowmaskを設定することができる:Shadow Distance に達するまでリアルタイムの影を使用し、それを超える場合はベイクした影を使用する。
Subtractive: 動的なシャドウと静的なシャドウを合成するために使用する情報を破棄 (合成されず静的な影の上に動的な影が落ちるので不自然だが軽い)

Scene Viewで Baked LightMapを選ぶとライトマップの状態が確認できます。

Directional Mode

https://docs.unity3d.com/ja/2019.2/Manual/LightmappingDirectional.html
Non-Directional: 光が純粋に拡散すると仮定 ( 法線 ・ スペキュラー は考慮せず)
Directional: 入射光に関する詳しいデータを使用 (高負荷)

解像度に関して

Lightmap Resolution: 1 unit ごとの解像度
Lightmap Size:ライトマップテクスチャのサイズ

Mesh Renderer
Scale in Lightmap:Resolutionの倍率

※Object size in lightmap has reached the max atlas size
指定解像度だと1枚に収まらないので勝手に縮小される(一つのオブジェクトに使用されるライトマップは1枚)
→嫌ならLight Map Sizeを上げる

UVの境界が目立ってしまう場合は、ライトマップの継ぎ目の縫合もできる
https://docs.unity3d.com/ja/current/Manual/Lightmapping-SeamStitching.html

アンビエントオクルージョン

基本的にはAmbient Occlusionの強度はIndirectで設定
Directは「暗いところを暗く」
http://nn-hokuson.hatenablog.com/entry/2017/03/06/194048

https://blogs.unity3d.com/jp/2019/11/13/sherman-behind-the-screens-how-to-create-cinema-quality-lighting-in-unity/

オクルージョンマップ

より細かいオクルージョンはモデルのテクスチャとして用意する
テクスチャのGチャンネルが参照される
HDRP
Mask-Map
https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition@7.1/manual/Mask-Map-and-Detail-Map.html
URP, Standard
Occlusion-Map に テクスチャを設定(Mask-Mapと同一でよい)

リフレクションプローブ

スペキュラー成分に影響。範囲を指定。個別にBakeもできる。