ガンマ色空間・リニア色空間の理解まとめ
・ガンマ空間はディスプレイが出力する色だけど、その出力する色は物理的に正しくない
・リニア空間は物理的に正しい色が計算できる空間
・なので物理的に正しい色を計算をしたいときは、「ガンマ空間(最初の状態がこれ) → リニア空間 → ガンマ空間」のように補正する必要がある。リニア空間になっている間に物理ベースレンダリングとかの色を計算する。最終的に出力されるのはガンマ空間なので最後にガンマ補正をする必要がある
・ ガンマ空間からリニア空間への補正(リニア補正)はシェーダーで「pow(color, 2.2)」をする
・リニア空間からガンマ空間への補正(ガンマ補正)はシェーダーで「pow(color, 1/2.2)」をする
・Unityではリニア空間ならシェーダーで計算した値はリニア空間の値として扱われてGPU側でガンマ空間に補正する。ガンマ空間なら値はガンマ空間の値として扱われてGPUでの補正も実行されない
・カラーの値を0.5とするとリニア補正は「pow(0.5, 2.2) ≒ 0.25」で元の値より小さく(暗く)なる
・カラーの値を0.5とするとガンマ補正は「pow(0.5, 1.0/2.2) ≒ 0.73」で元の値より大きく(明るく)なる