love.math.linearToGamma (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 linéaire (RVB) vers l'espace gamma (sRVB). C'est utilisa lorsque des valeurs de couleurs linéaires RVB sont stockées dans une image, car l'espace de couleur linéaire RVB a moins de précision pour les couleurs sombres que sRVB, ce qui peut engendrer des bandes de couleurs lors de tracés.

En général, les couleurs choisies en fonction de leur apparence à l'écran sont déjà dans l'espace gamma et ne devraient pas être converties deux fois. Les couleurs calculées en utilisant les mathématiques sont souvent dans une espace linéaire RVB.

Vous pouvez en lire d'avantage à propos du rendu avec correction gamma ici, ici, et ici (tout en anglais).

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

O.png Le rendu avec correction gamma est un sujet avancé, et il est assez facile de mélanger par erreur les espaces de couleur. Si vous n'est pas sûr d'en avoir besoin, il vaudrait mieux éviter de l'utiliser.  


Fonction

Synopsis

cr, cg, cb = love.math.linearToGamma( lr, lg, lb )

Arguments

number (Français) lr
Canal rouge de la couleur linéaire RVB à convertir.
number (Français) lg
Canal vert de la couleur linéaire RVB à convertir.
number (Français) lb
Canal bleu de la couleur linéaire RVB à convertir.

Retourne

number (Français) cr
Canal rouge de la couleur converti dans l'espace sRVB gamma.
number (Français) cg
Canal vert de la couleur converti dans l'espace sRVB gamma.
number (Français) cb
Canal bleu de la couleur converti dans l'espace sRVB gamma.

Notes

Une valeur alpha peut être passée à la fonction comme quatrième argument, mais elle sera retournée inchangée puisque le canal alpha est toujours linéaire.

Fonction

Synopsis

cr, cg, cb = love.math.linearToGamma( color )

Arguments

table (Français) color
Table comportant les canaux rouge, vert et bleu de la couleur linéaire RVB à convertir.

Retourne

number (Français) cr
Canal rouge de la couleur converti dans l'espace sRVB gamma.
number (Français) cg
Canal vert de la couleur converti dans l'espace sRVB gamma.
number (Français) cb
Canal bleu de la couleur converti dans l'espace sRVB gamma.

Fonction

Synopsis

c = love.math.linearToGamma( lc )

Arguments

number (Français) lc
Valeur d'un canal de couleur dans l'espace linéaire RVB à convertir.

Retourne

number (Français) c
Valeur du canal de couleur dans l'espace sRVB gamma.

Exemples

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

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 RVB avec son canal alpha, pour l'utilisation avec le mode de mixage ('alpha', 'premultiplied').
-- La multiplication 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