Version: 2018.1
リニアのワークフローとガンマのワークフロー
リニアテクスチャの使用

リニアレンダリングを使ったガンマテクスチャ

Unity エディターを使用すると、リニア色空間同様、従来のガンマ色空間も使用できます。テクスチャ がガンマ色空間にある場合でも、リニア色空間で作業できます。

詳しい情報は、以下のドキュメントを参照してください。

注意 テクスチャがリニア色空間にある場合は、sRGB サンプリングを無効にする必要があります。詳細については、リニアテクスチャ を参照してください。

リニアレンダリングは、レンダリングされたシーンにガンマとは異なる外観を提供します。ガンマ空間でレンダリングしたときに見栄え良く作成したプロジェクトが、リニアレンダリングに変更したときに見栄えが良くなることはほとんどありません。このため、ガンマレンダリングからリニアレンダリングに変更すると、以前と同じくらい見栄え良く見えるようにプロジェクトを調整するのに時間がかかることがあります。ただし、この変更によって最終的により一貫性のある現実的なレンダリングを可能にし、時間を費やす価値がある場合があります。たいていは、テクスチャ、マテリアル、ライトを微調整する必要があります。

ライトマップ

ライトマッパーのライティング計算は、常にリニア空間で行われます (詳細については Lighting ウィンドウ のドキュメントを参照)。ライトマップは常にガンマ空間に格納されます。つまり、ライトマップのテクスチャは、ガンマ色空間でもリニア色空間でも同じということです。

リニア色空間では、テクスチャサンプルは、サンプリングされたときに、ガンマ空間からリニア空間に変換されます。 ガンマ色空間では、変換は必要ありません。したがって、色空間の設定を変更するときにライトマップを再度ベイクする必要があります。これは、Unity のライティングが Auto Baking に設定されていると自動的に行われます (これがデフォルトです)。

ライトマップのインポート

Unity によって作成されたライトマップ EXR ファイルのデータは、リニア空間にあります。インポート時にガンマ空間に変換されます。外部ライトマッパーからライトマップを取り込むときは、テクスチャインポーターTexture TypeLightmap に設定します。この設定によって、インポート時に sRGB サンプリングがバイパスされます。

リニアレンダリングをサポートするプラットフォーム

リニアレンダリングはすべてのプラットフォームでサポートされているわけではありません。リニアレンダリングをサポートするビルドターゲットは以下の通りです。

  • Windows、Mac OS X、Linux (スタンドアロン)
  • Xbox One
  • PlayStation 4
  • Android
  • iOS
  • WebGL

リニアレンダリングがデバイスでサポートされていない場合、ガンマにフォールバックすることはありません。 この場合、プレイヤーは終了します。QualitySettings.activeColorSpace を見て、スクリプトからアクティブな色空間を確認できます。

Android では、リニアレンダリングには少なくとも OpenGL ES 3.0 グラフィックス API と Android 4.3 が必要です。

iOSでは、リニアレンダリングには Metal グラフィックス API が必要です。

WebGL では、リニアレンダリングには最低 WebGL 2.0 グラフィックス API が必要です。

最小限の要件が満たされるまで、プレーヤーをビルドすることはできず、エディターによる警告が表示されます。これは、ユーザーデバイス上で正しくレンダリングされないゲームをデジタルストアに配信してしまうのを防ぐためです。

 Unity エディターは、正しくレンダリングされないゲームをビルドするのを回避します
Unity エディターは、正しくレンダリングされないゲームをビルドするのを回避します

リニア色空間と HDR

HDR (ハイダイナミックレンジ) を使用する場合、レンダリングはリニア空間で実行され浮動小数点バッファになります。このバッファは、バッファにアクセスするたびにガンマ空間への変換とガンマ空間からの変換を必要としない十分な精度を持っています。つまり、リニアモードでレンダリングする場合、使用するフレームバッファはリニア空間に色を格納します。したがって、すべてのブレンディングおよびポストプロセスのエフェクトは、暗示的にリニア空間で実行されます。最終的なバックバッファに書き込まれるときに、ガンマ補正が適用されます。

リニア色空間と非 HDR

HDR を使用していないとき、sRGB 読み込みおよび sRGB 書き込みをサポートする特別なフレームバッファが使用されます (読み取り時にガンマからリニアに変換、書き込み時にリニアからガンマに変換)。このフレームバッファはブレンディングに使用される、またはテクスチャとしてバインドされている場合、値は使用前にリニア空間に変換されます。これらのバッファに書き込む場合、書き込まれる値はリニア空間からガンマ空間に変換されます。リニアモードと非 HDR モードでレンダリングする場合、すべてのポストプロセスエフェクトでソースとターゲットバッファを、sRGB 読み書き可能に作成します。そのため、ポストプロセッシングとポストプロセスブレンディングはリニア空間で行われます。


リニアのワークフローとガンマのワークフロー
リニアテクスチャの使用