Difference between revisions of "love.math.gammaToLinear (日本語)"
(Created page with "{{newin (日本語)|0.9.1|091|type=関数}} ガンマ空間 (sRGB) から線形空間 (RGB) へ色変換します。これはlove.graphics.isGammaCorrect (日本語)|ガ...") |
m |
||
Line 2: | Line 2: | ||
ガンマ空間 (sRGB) から線形空間 (RGB) へ色変換します。これは[[love.graphics.isGammaCorrect (日本語)|ガンマ補正表示]]を行う場合、および LÖVE が線形 RGB を自動変換処理しない場合に計算をする必要がある場合に有用です。 | ガンマ空間 (sRGB) から線形空間 (RGB) へ色変換します。これは[[love.graphics.isGammaCorrect (日本語)|ガンマ補正表示]]を行う場合、および LÖVE が線形 RGB を自動変換処理しない場合に計算をする必要がある場合に有用です。 | ||
− | ガンマ補正表示に関する詳細は [ | + | ガンマ補正表示に関する詳細は [https://developer.nvidia.com/gpugems/GPUGems3/gpugems3_ch24.html ここ]、 [http://filmicgames.com/archives/299 ここ]、さらに[http://renderwonk.com/blog/index.php/archive/adventures-with-gamma-correct-rendering/ ここ] にあります。 |
{{notice|ガンマ補正表示は高度な話題であり色空間に関してたやすく混乱してしまいます。これが必要か不明であれば、避けたいと思っても構いません。}} | {{notice|ガンマ補正表示は高度な話題であり色空間に関してたやすく混乱してしまいます。これが必要か不明であれば、避けたいと思っても構いません。}} |
Revision as of 03:42, 26 August 2017
LÖVE 0.9.1 から使用可能 |
この関数は以前のバージョンでは非対応です。 |
ガンマ空間 (sRGB) から線形空間 (RGB) へ色変換します。これはガンマ補正表示を行う場合、および LÖVE が線形 RGB を自動変換処理しない場合に計算をする必要がある場合に有用です。
ガンマ補正表示に関する詳細は ここ、 ここ、さらにここ にあります。
ガンマ補正表示は高度な話題であり色空間に関してたやすく混乱してしまいます。これが必要か不明であれば、避けたいと思っても構いません。 |
Contents
関数
概要
lr, lg, lb = love.math.gammaToLinear( r, g, b )
引数
返値
number lr
- 線形 RGB 空間へ変換された色の赤チャンネル。
number lg
- 線形 RGB 空間へ変換された色の緑チャンネル。
number lb
- 線形 RGB 空間へ変換された色の青チャンネル。
注釈
透過値は第四引数として関数へ渡すことができますが、透過は常に線形であるため無変更で返されます。
関数
概要
lr, lg, lb = love.math.gammaToLinear( color )
引数
table color
- 変換したい sRGB 色における赤、青、および青チャンネルの配列。
返値
number lr
- 線形 RGB 空間へ変換された色の赤チャンネル。
number lg
- 線形 RGB 空間へ変換された色の緑チャンネル。
number lb
- 線形 RGB 空間へ変換された色の青チャンネル。
関数
概要
lc = love.math.gammaToLinear( c )
引数
number c
- 変換したい sRGB 空間における色チャンネルの値。
返値
number lc
- 線形 RGB 空間における色チャンネルの値。
用例
彩色された円を使用してガンマ補正表示を行います
local function PremultiplyLinearPixel(x, y, r, g, b, a)
r = r * a / 255
g = g * a / 255
b = b * a / 255
return r, g, b, a
end
local function PremultiplyGammaPixel(x, y, r, g, b, a)
r, g, b = love.math.gammaToLinear(r, g, b)
r = r * a / 255
g = g * a / 255
b = b * a / 255
r, g, b = love.math.linearToGamma(r, g, b)
return r, g, b, a
end
-- 画像を読み込んで ('alpha', 'premultiplied') 混合方式を使用するために RGB 値の 透過に事前へ乗算を行います。
-- 画像の色空間に対して乗算にて正確に計算します。
function NewPremultipliedImage(filepath, flags)
local imagedata = love.image.newImageData(filepath)
local mapfunction = (flags and flags.linear) and PremultiplyLinearPixel or PremultiplyGammaPixel
imagedata:mapPixel(mapfunction)
return love.graphics.newImage(imagedata, flags)
end
image = NewPremultipliedImage("pig.png")
関連
そのほかの言語
Dansk –
Deutsch –
English –
Español –
Français –
Indonesia –
Italiano –
Lietuviškai –
Magyar –
Nederlands –
Polski –
Português –
Română –
Slovenský –
Suomi –
Svenska –
Türkçe –
Česky –
Ελληνικά –
Български –
Русский –
Српски –
Українська –
עברית –
ไทย –
日本語 –
正體中文 –
简体中文 –
Tiếng Việt –
한국어
More info