ガンマ2.2とsRGBの違い
ver.20
ガンマ2.2とsRGBはともにカラースペース(色空間)の調整で使用されます。
より現実に近いフォトリアルなレンダリングを行うためのリニアワークフローではこの調整は必須です。
「カラーマネジメントとは ?」「ガンマとは ?」もご参照くださいませ。
ガンマ2.2とsRGBはともに似たような色空間になりますが、異なるものです。
リニア(ガンマ1.0)からガンマ2.2に変換する場合は、それぞれのR/G/B要素を0.0-1.0としたときに以下の計算を行います。
float value = RGB値のいずれか
value = pow(value, 1.0 / 2.2);
※ powは累乗の計算を行う関数です。
sRGBは1つの式では表現できません。リニアからsRGBに変換する計算は以下のようになります。
float value = RGB値のいずれか
if (value <= 0.0031308) value = value * 12.92;
else value = pow(value, 1.0 / 2.4) * 1.055 - 0.055;
参考 : https://en.wikipedia.org/wiki/SRGB
sRGBでは線形と曲線式の組み合わせになります。
このガンマ2.2とsRGBをグラフで表現すると以下のようになります(0.0-1.0の範囲)。
横軸がリニアとしての入力値、縦軸が変換後の出力値です。
ほぼ同じになっています。
値が小さい範囲に注目すると以下のようになります(0.0-0.1の範囲)。
同一ではないのを確認できます。