love.graphics.isGammaCorrect (日本語)

LÖVE 0.10.0 から使用可能
この関数は以前のバージョンでは非対応です。

ガンマ補正表示の対応状況および有効かどうかを取得します。これは love.conft.gammacorrect = true を設定することで有効化できます。

すべてのデバイスがガンマ補正表示に対応しているわけではありません。非対応の場合は自動的に無効化を行い本関数では false を返します。この機能はデスクトップ・システムでは OpenGL 3 / DirectX 10 に対応したグラフィックスカード、および OpenGL ES 3 を利用できる iOS デバイスで対応しています。

関数

概要

gammacorrect = love.graphics.isGammaCorrect( )

引数

なし。

返値

boolean gammacorrect
true ならばガンマ補正表示に対応しており love.conf で有効になっていますが、それ以外は false です。

注釈

ガンマ補正表示の有効時は、多くの関数とオブジェクトで混合色シェーダー演算に対する数学上は正しい sRGB および 線形 RGB 間での自動色変換を行います (有効ではない場合)。

  • linear = true フラグを設定せずに Image を作成する場合は、 Image の描画時 (および Shader にあるピクセルを取得する場合) に sRGB から線形 RGB へ色を自動変換します。
  • 画面に描画されものすべては線形 RGB で混交が行われるため、その結果として画面で表示する場合は sRGB へ変換されます。
  • "normal" または"srgb" CanvasFormat を使用する Canvas では線形 RGB 混合された内容を有するため、その結果は描画時に sRGB で Canvas を記録します。 Canvas 自体を描画する時はピクセルの色は Image と同じ方法で sRGB から線形 RGB へ変換されます。Canvas のピクセルデータは sRGB は "rgba8"との深い暗色による比較に対して記録されるようにするためにより高い精度を考慮をしてください。

ガンマ補正表示有効時は二つの例外を除いて、ほとんどの変換は自動処理されるため、自分で書いたコードでは sRGB および 線形 RGB の色返還に関して心配する必要はありません:

  • カスタム頂点属性を有している Mesh を使用しており、属性のうち一つは Shader で色に対して使用されることは示されているものの、属性名が "VertexColor" ではない場合。
  • uniform / extern 変数またはその他の変数を有している Shader が色に対して使用されることが示されているものの、 Shader:sendColor で使用されない場合。

両方の場合において、 love.math.gammaToLinear は Lua コードで色値を線形 RGB へ変換するために使用できます。または、シェーダー関数 gammaCorrectColor (または必要であれば unGammaCorrectColor) をシェーダーのコード内で使用できます。これらのシェーダー関数はガンマ補正表示が実際に有効な場合"のみ"変換を行います。その場合はシェーダープリプロセッサ定義として LOVE_GAMMA_CORRECT が設定されます。

ガンマ補正表示に関する詳細は ここ, ここ, さらに ここをお読みください。

関連



そのほかの言語