ライトマップ - 指向性のモード
マテリアルプロパティーと GI システム

ライトマップ - 技術的な情報

Unity は、ターゲットプラットフォームやライティングウィンドウの圧縮設定によって、異なる圧縮やエンコードスキームでライトマップを格納します。

エンコードスキーム

Unity プロジェクトでは必要に応じて、2 つのテクニックを使ってベイクしたライトの強度範囲を低ダイナミックレンジのテクスチャにエンコードできます。

  • RGBM エンコード。 RGBM エンコードは、RGB チャンネルにカラーを、アルファチャンネルに乗数 (M) を保存します。 RGBM ライトマップの範囲は、リニア空間では 0〜34.49 (52.2)、ガンマ空間では 0〜5 です。

  • ダブルローダイナミックレンジ (dLDR) エンコーディング。 dLDR エンコードは、[0、2] の範囲を [0、1] に単純にマッピングすることによって、モバイルプラットフォーム上で使用されます。 2 の値を上回る焼成された光強度がクランプされる。デコード値は、ガンマ空間を使用する場合はライトマップテクスチャの値に 2 を掛けて計算し、リニア空間を使用する場合は 4.59482 (22.2) を掛けて計算します。プラットフォームの中には、ライトマップを dLDR として保存するものもあります。なぜなら、RGBM を使用するとハードウェア圧縮によって 見ためを悪くするアーティファクトが生成される場合があるからです。

リニアカラースペースを使用すると、ライトマップテクスチャは sRGB とマークされ、シェーダーが使用する最終値 (サンプリングおよびデコード後) はリニア色空間になります。ガンマ色空間を使用する場合、最終値はガンマ色空間になります。

注意: エンコードを使用すると、ライトマップ (GPU テクスチャメモリ) に格納された値は常にガンマ色空間になります。

UnityCG.cginc シェーダーのインクルードファイルの Decode Lightmap シェーダー関数は、値がシェーダーのライトマップテクスチャから読み取られた後のライトマップ値のデコードを処理します。

HDR ライトマップサポート

HDR lightmaps can be used on PC, Mac & Linux Standalone, Xbox One, PlayStation 4, iOS, tvOS and Android. The Other Settings panel in the Player settings has a Lightmap Encoding option for these platforms, which controls the encoding/compression of the lightmaps.

Choosing High Quality will enable HDR lightmap support, whereas Normal Quality will switch to using RGBM encoding. Low Quality will switch to dLDR encoding on mobile platforms, on other platforms it is equivalent to Normal Quality.

When lightmap Compression is enabled in the Lighting Window, the lightmaps will be compressed using the BC6H compression format on desktop and console platforms. For mobile platforms, Unity selects the HDR format according to the table below.

高品質 (BC6H) ライトマップの利点

  • HDR ライトマップは、ライトマップ値をエンコードするためにエンコードスキームを使用しないため、サポート範囲は、0 〜 65504 の16 ビット浮動小数点テクスチャ形式によって制限されるだけです。

  • BC6H 形式の品質は、DXT5 + RGBM 形式のエンコードよりも優れており、RGBM エンコードに発生するカラーバンディングによるアーティファクトを生成しません。

  • HDR ライトマップをサンプリングする必要があるシェーダーは、サンプリングされた値をデコードする必要がないため、ALU の命令がいくらか短くなります。

  • BC6H 形式は、DXT5 と同じ GPU メモリ要件です。

ターゲットプラットフォームごとのエンコードスキームとそのテクスチャ圧縮形式のリストは以下の通りです。

ターゲットプラットフォーム エンコード 圧縮 - サイズ (ビット毎ピクセル)
スタンドアロン (PC, Mac, Linux) RGBM / HDR DXT5 / BC6H - 8 bpp
Xbox One RGBM / HDR DXT5 / BC6H - 8 bpp
PlayStation4 RGBM / HDR DXT5 / BC6H - 8 bpp
WebGL 1.0 / 2.0 RGBM DXT5 - 8 bpp
iOS dLDR / RGBM / HDR PVRTC RGB - 4 bpp / ETC2 RGBA - 8 bpp / RGB9E5 - 32 bpp
tvOS dLDR / RGBM / HDR ASTC - 3.56 bpp / ASTC - 3.56 bpp / RGB9E5 - 32 bpp
Android* dLDR / RGBM / HDR ETC1 RGB - 4 bpp / ETC2 RGBA - 8 bpp / ASTC HDR - 3.56 bpp

*If the target is Android then you can override the default texture compression format from the Build Settings to one of the following formats: DXT1, PVRTC, ETC2, ASTC. The default format is ETC for RGB textures and ETC2 for RGBA textures.

事前計算されたリアルタイムグローバルイルミネーション (GI)

GI システムへの入力の範囲とエンコードは出力と異なります。表面アルベドは、ガンマ空間で 8 ビット符号なし整数型の RGB であり、放射はリニア空間で 16 ビット浮動小数点型の RGB です。メタパスを使用してカスタム入力を行う方法については、 メタパス のドキュメントを参照してください。

放射の出力テクスチャは、RGB9E5 共有指数の浮動小数点型 (グラフィックハードウェアがサポートする場合)、またはフォールバックとしては 範囲が 5 の RGBM を使用して保存されます。 RGB9E5 ライトマップの範囲は [0, 65408] です。RGB9E5 形式の詳細については、 Khronos.org: EXT_texture_shared_exponent を参照してください。

関連項目


ライトマップ - 指向性のモード
マテリアルプロパティーと GI システム