love.math.gammaToLinear (Français)

Disponible depuis LÖVE 0.9.1
Ce-tte function n'est pas supporté-e par des versions plus anciennes.

Convertit une couleur de l'espace gamma (sRGB) vers l'espace linéaire (RGB). Ceci est utile lors de l'utilisation de rendu avec correction gamma où vous devez alors effectuer des calculs en RGB linéaire dans les quelques cas où LÖVE ne gère pas automatiquement la conversion.

Vous pouvez en apprendre d'avantage sur le rendu avec correction gamma (en anglais) ici, ici, et ici.

Dans les versions antérieures à 11.0, les valeurs des composantes de couleur étaient situées dans la plage allant de 0 à 255 au lieu de 0 à 1.

O.png Le rendu correct gamma est un sujet avancé et il est assez facile de se mélanger dans les espaces de couleurs. Si vous n'êtes pas sûr de savoir si vous en avez besoin, vous devriez probablement l'éviter.  


Fonction

Synopsis

lr, lg, lb = love.math.gammaToLinear( r, g, b )

Arguments

number (Français) r
Le canal rouge de la couleur sRGB à convertir.
number (Français) g
Le canal vert de la couleur sRGB à convertir.
number (Français) b
Le canal bleu de la couleur sRGB à convertir.

Retourne

number (Français) lr
Le canal rouge de la couleur convertie dans l'espace linéaire RGB.
number (Français) lg
Le canal vert de la couleur convertie dans l'espace linéaire RGB.
number (Français) lb
Le canal bleu de la couleur convertie dans l'espace linéaire RGB.

Notes

Une valeur alpha (utilisée pour la transparence) peut être passée à la fonction comme quatrième argument, mais elle sera retournée inchangée parce que l'alpha est toujours linéaire.

Fonction

Synopsis

lr, lg, lb = love.math.gammaToLinear( color )

Arguments

table (Français) color
Un tableau comportant les canaux rouge, vert et bleu de la couleur sRGB à convertir.

Retourne

number (Français) lr
le canal rouge de la couleur convertie dans l'espace linéaire RGB.
number (Français) lg
le canal vert de la couleur convertie dans l'espace linéaire RGB.
number (Français) lb
le canal bleu de la couleur convertie dans l'espace linéaire RGB.

Fonction

Synopsis

lc = love.math.gammaToLinear( c )

Arguments

number (Français) c
La valeur d'un canal de couleur dans l'zspace sRGB à convertir.

Retourne

number (Français) lc
La valeur du canal de couleur dans l'espace linéaire RGB.

Exemples

Pré-multiplie l'alpha d'une image avec ses couleurs RGB dans l'espace linéaire RGB

local function PremultiplyLinearPixel(x, y, r, g, b, a)
   r = r * a
   g = g * a
   b = b * a
   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
   g = g * a
   b = b * a
   r, g, b = love.math.linearToGamma(r, g, b)
   return r, g, b, a
end

-- Charge une image et pré-multiplie ses valeurs RGB avec son alpha, afin de l'utiliser avec le mode de mixage ('alpha', 'premultiplied').
-- La multiplication prise en compte correctement pour l'espace de couleur de l'image.
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")

Voir également


Autres langues