色空間

Unity には2種類の色空間を扱うワークフローが実装されている。モダンなアプリケーションを実装する場合は、基本的にリニア色空間に基づくワークフローが推奨される。

ワークフロー
  • ガンマ色空間/ガンマワークフロー
  • リニア色空間/リニアワークフロー

ドキュメント:

色空間 | Unity マニュアル [公式]

概要

参考:

リニアワークフロー入門/簡単な説明とその意義 | LIGHT11

設定

メニューから「Edit > Project Settings」を開き、「Player > Other Settings > Rendering > Color Space」を設定する。

色空間 (Color Space)
  • Gamma ガンマ
  • Linear リニア

ドキュメント:

リニアのワークフローとガンマのワークフロー | Unity マニュアル [公式]

参考:

結局 Linear と Gamma どっちにしたらいいのかを考えてみた | てんちょーの技術日誌

リアルなレンダリングをする場合のチェック項目 | Shade3D チュートリアル

ガンマテクスチャを使う

ドキュメント:

リニアレンダリングを使ったガンマテクスチャ | Unity マニュアル [公式]

参考:

結局 Linear と Gamma どっちにしたらいいのかを考えてみた | てんちょーの技術日誌

リニアテクスチャを使う

ドキュメント:

リニアテクスチャの使用 | Unity マニュアル [公式]

リニアワークフロー

シェーダーにおいてライティングをリニア色空間で計算し、ディスプレイへの出力時にガンマ補正を適用する。

参考:

色空間設定がガンマでもリニアでも同じ計算結果を示すシェーダを書く方法 | LIGHT11

リニアワークフローにおいてシェーダで扱う値が実際にどう変換されるのか検証する | LIGHT11

物理ベースレンダリング リニアワークフロー編 #1 | Cygames Engineers’ Blog

物理ベースレンダリング リニアワークフロー編 #2 | Cygames Engineers’ Blog

色アニメーション

参考:

フェードアニメーションの色の歪みについて考えてみる | かもそば

Color

ドキュメント:

UnityEngine.Color | Unity スクリプトリファレンス [公式]

変換 (色相/彩度/明度)

ドキュメント:

Color.RGBToHSV | Unity スクリプトリファレンス [公式]

Color.HSVToRGB | Unity スクリプトリファレンス [公式]

補間 (Lerp)

ドキュメント:

Color.Lerp | Unity スクリプトリファレンス [公式]

Color-LerpUnclamped | Unity スクリプトリファレンス [公式]

シェーダーにおける扱い

コード:

SRGBToLinear – Colors.hlsl at 32c3155 · Unity-Technologies/PostProcessing – GitHub

LinearToSRGB – Colors.hlsl at 32c3155 · Unity-Technologies/PostProcessing – GitHub

参考:

シェーダにおいて値をリニアと sRGB の間で相互に変換する関数 | LIGHT11

色空間設定がガンマでもリニアでも同じ計算結果を示すシェーダを書く方法 | LIGHT11

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA