色空間
Unity には2種類の色空間を扱うワークフローが実装されている。モダンなアプリケーションを実装する場合は、基本的にリニア色空間に基づくワークフローが推奨される。
ワークフロー
- ガンマ色空間/ガンマワークフロー
- リニア色空間/リニアワークフロー
ドキュメント:
概要
参考:
リニアワークフロー入門/簡単な説明とその意義 | 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
参考: