私のレンダラーでは、マルチサンプリングされた FBO でアンチエイリアス処理されたシーンを生成します。このシーンは、カラー アタッチメントがテクスチャである FBO にブリットされます。テクスチャは、フレーム バッファへのレンダリング中に読み取られます。
ガンマ補正の結果が得られるように更新したいと思います。sRGB フレームバッファーを使用する利点は、非線形の sRGB 値をフレームバッファーに直接保存することで、色の精度をいくらか向上できることです。
私がよくわからないのは、これを取得するためにどのような変更を加える必要があるか、およびさまざまな設定によって何が変更されているかです。
拡張 ARB_framebuffer_sRGBは、sRGB フレームバッファーを使用した読み取りとブレンド操作を処理しているようです。私の状況では、sRGB 表現タイプを指定するテクスチャを使用する必要があります。つまり、拡張子EXT_texture_sRGBを使用することになります。線形テクスチャ フォーマットを使用すると、sRGB 変換が無効になります。
編集:しかし、私はこれを見ました:
3) sRGB フレームバッファの更新とブレンディングをサポートする機能は、フレームバッファの属性にする必要がありますか?
解決済み: はい。sRGB ブレンディングを有効にできるというのは、一部のピクセル形式 (ほとんどの場合、RGB8 と RGBA8 のみ) の機能である必要があります。
これにより、既存の RGB8 および RGBA8 ピクセル形式を sRGB ブレンディングをサポートするものとして簡単にマークし、そのような形式の sRGB 更新およびブレンディングの機能を提供する実装が可能になります。
テクスチャのピクセル形式に何を指定すればよいかわかりません。
さて、レンダバッファはどうですか? ARB_framebuffer_sRGB doc には、レンダーバッファーについては何も言及されていません。sRGB フォーマットで使用glRenderbufferStorageMultisample
できるので、sRGB ストレージ対応のブレンディングを取得できますか?
また、の内部フォーマットを指定する場合のGL_SRGB_ALPHA
との違いは何ですか?GL_SRGB8_ALPHA8
glTexImage2D