love.graphics.isGammaCorrect (Français)

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

Test si le rendu avec correction gamma est supporté et activé. Il peut être activé en réglant t.gammacorrect = true dans love.conf.

Nous les périphériques ne supportent pas le rendu avec correction gamma, auquel cas il sera automatiquement désactivé et cette fonction retournera false (faux). C'est supporté sur les systèmes de bureau qui ont une carte ou processeur graphique capable d'utiliser OpenGL 3 / DirectX 10, et les périphériques iOS qui peuvent utiliser OpenGL ES 3.

Fonction

Synopsis

gammacorrect = love.graphics.isGammaCorrect( )

Arguments

Aucun.

Retourne

boolean (Français) gammacorrect
True (vrai) si le rendu avec correction gamma est supporté et était activé dans love.conf, false (faux) dans les autres cas.

Notes

Lors que le rendu avec correction gamma est activé, de nombreuses fonctions et objets feront automatiquement la conversion de couleur entre les espaces de couleur sRGB et linéaire RGB afin que les mixages et calculs d'ombrage soient mathématiquement correctes (ce qui n'est pas le cas si ça n'est pas activé.)

  • Les Images auront leurs couleurs automatiquement converties de l'espace sRGB à RGB linéaire lorsqu'elles seront tracées (et lorsque leurs pixels seront récupérés par un Shader (ombreur)), à moins que le drapeau linear = true soit réglé lors de la création d'une Image.
  • Tout ce qui est tracé à l'écran sera mixé en RGB linéaire et le résultat sera alors converti en sRGB pour l'affichage.
  • Les Canvas qui utilisent le CanvasFormat (format de toile) « normal » ou « srgb » auront leur contenu mixé en RGB linéaire et le résultat sera conservé dans le canvas en sRGB, lorsqu'ils est tracé. Lorsque le Canvas lui-même est tracé, les couleurs de ses pixels seront convertits de sRGB à RGB linéaire de la même façon que les Images. Conserver les données de pixels des canvas enregistrées en sRGB permet une plus grande précision (moins de motifs) pour les couleurs les plus sombres comparées à « rgba8 ».

Comme la plupart des conversions sont gérées automatiquement, votre propre code n'a pas besoin de s'inquiéter des conversion de couleur entre sRGB et RGB linéaire lorsque le rendu avec correction gamma est activé, à l'exception de quelques cas :

  • Si un maillage avc des attributs de vecteurs personnalisés est utilisé et un de ces attributs à pour but d'être utilisé comme couleur dans un Shader, et l'attribut n'est pas nommé « VertexColor ».
  • Si un Shader utilisé a des variables uniformes / externes ou d'autres variables qui ont pour but d'être utilisées en tant que couleurs, et Shader:sendColor n'est pas utilisé.

Dans tous les cas, love.math.gammaToLinear peut être utilisé pour convertuir des valeurs de couleurs vers RGB linéaire dans le code Lua.

Dans le code d'ombrage, les fonctions suivantes sont disponibles si les conversions manuelles sont nécessaires. Elle ne font les conversion que si le rendu avec correction de couleur est actuellement activé. La définition du préprocesseur d'ombrage LOVE_GAMMA_CORRECT sera configurée comm :

  • float/vec3/vec4 gammaCorrectColor(float/vec3/vec4 color) (performant mais moins précis).
  • float/vec3/vec4 gammaCorrectColorPrecise(float/vec3/vec4 color) (plus lent mais exact, équivalent à love.math.gammaToLinear).
  • float/vec3/vec4 unGammaCorrectColor(float/vec3/vec4 color) (performant mais moins précis).
  • float/vec3/vec4 unGammaCorrectColorPrecise(float/vec3/vec4 color) (plus lent mais précis, équivalent à love.math.linearToGamma).

Vous pouvez en apprendre plus à propos de la correction gamma (en anglais) ici, ici, et ici.

Voir également



Autres langues