ライトマップ - 指向性のモード
マテリアルプロパティーと 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, and PlayStation 4. The Other Settings panel in the Player settings has a Lightmap Encoding option for these platforms, which controls the encoding/compression of the lightmaps.

High Quality を選択すると HDR ライトマップが適用されますが、 Normal Quality では RGBM エンコードが使用されます。

Lighting ウィンドウでライトマップの Compression が使用されている場合、ライトマップは BC6H 圧縮形式で圧縮されます。

高品質 (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 PVRTC RGB - 4 bpp
tvOS dLDR ASTC 4x4 block RGB - 8 bpp
Android* dLDR ETC1 RGB - 4 bpp
Samsung TV dLDR ETC1 RGB - 4 bpp
Nintendo 3DS dLDR ETC1 RGB - 4 bpp
Nintendo 3DS dLDR ETC1 RGB - 4 bpp
  • ターゲットが Android の場合は、Build Settings のデフォルトテクスチャ形式を DXT1、PVRTC、ATC、ETC2、ASTC のいずれかにオーバーライドします。 デフォルトの形式は ETC です。

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

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

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

関連項目


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