私はレンダリングに OpenGL を使用しています。線形値をデフォルトのフレームバッファに (ガンマ補正なしで) 書き込むと、モニタ上で線形に表示されます。これは、ガンマ補正について私が知っていると思っていたすべてに反します (ここで説明されているように: http://gamedevelopment.tutsplus.com/articles/gamma-correction-and-why-it-matters--gamedev-14466 )。ガンマ補正がなければ、モニターによって中間色が非線形に暗くなることが予想されます。
しかし、これが私が実際に見ているものです。最初はガンマ補正なし、次にガンマ補正あり:
これは、ガンマ補正なしのフラグメント シェーダーです (フルスクリーン クワッドでデフォルトのフレーム バッファーに描画されます)。これにより、左側の線形イメージが得られます。
out vec4 fsOut0;
void main( void )
{
// split the screen into 10 discrete color bands
float yResolution = 768.0;
int intVal = int(gl_FragCoord.y / yResolution * 10.0);
fsOut0.rgb = vec3( float(intVal) / 10.0 );
fsOut0.a = 1.0;
}
ガンマ補正が追加されたシェーダー (線形空間から sRGB まで) は次のとおりです。これにより、右側の線形よりも明るい画像が得られます。
out vec4 fsOut0;
void main( void )
{
// split the screen into 10 discrete color bands
float yResolution = 768.0;
int intVal = int(gl_FragCoord.y / yResolution * 10.0);
fsOut0.rgb = vec3( float(intVal) / 10.0 );
// gamma correction
fsOut0.rgb = pow( fsOut0.rgb, vec3(1.0/2.2) );
fsOut0.a = 1.0;
}
色が線形かどうかは、見ただけで検証し、Photoshop のカラー ピッカーを使用して、カラー バンド間の RGB 値の違いを調べています。線形に見える画像の場合、各色の違いは (ほとんど) 一定です。
また、sRGB 対応のデフォルト フレームバッファをリクエストしてみました。この場合、ガンマ補正なしで線形値を書き込むと、2 番目のイメージ (非線形) のように見えます。
私は何を間違っていますか?それとも、私の 2 台のモニターの両方が正しく調整されておらず、Photoshop が線形空間で色を選択していない可能性がありますか? それとも、私の「非線形」画像は実際には正しい線形結果ですが、私の目には線形に見えませんか?
私の質問はこれの複製のようなものです:現代のコンピューター/モニターで最終的な色出力をガンマ補正する必要がありますか ?回答者よりも知識の少ない人のために完全に説明されています。