PixelFormat (Français)

Disponible depuis LÖVE 11.0
Cet enum remplace CanvasFormat et CompressedImageFormat.

Formats de pixels pour Textures, ImageData, et CompressedImageData.

Formats de couleur normaux

Constantes

Nom Composantes Bits par pixel Étendue Utilisable avec les Canvas Utilisable avec les ImageData Note(s)
normal 4 32 [0, 1] Oui Alias pour rgba8, ou srgba8 Si le rendu avec correction gamma est activé.
r8 1 8 [0, 1] Oui 11.3
rg8 2 16 [0, 1] Oui 11.3
rgba8 4 32 [0, 1] Oui Oui
srgba8 4 32 [0, 1] Oui Version avec correction gamma de rgba8.
r16 1 16 [0, 1] 11.3
rg16 2 32 [0, 1] 11.3
rgba16 4 64 [0, 1] Oui
r16f 1 16 [-65504, +65504]* Oui 11.3
rg16f 2 32 [-65504, +65504]* Oui 11.3
rgba16f 4 64 [-65504, +65504]* Oui Oui
r32f 1 32 [-3.4028235e38, 3.4028235e38]* Oui 11.3
rg32f 2 64 [-3.4028235e38, 3.4028235e38]* Oui 11.3
rgba32f 4 128 [-3.4028235e38, 3.4028235e38]* Oui Oui
rgba4 4 16 [0, 1] Oui 11.3
rgb5a1 4 16 [0, 1] Oui 11.3
rgb565 3 16 [0, 1] Oui 11.3
rgb10a2 4 32 [0, 1] Oui 11.3
rg11b10f 3 32 [0, 65024]** Oui 11.3

* -infini et +infini sont également des valeurs valides.
** +infini est également une valeur valide.

Format de Profondeur / stencil

Tous les formats de pixel de profondeur et stencil ne sont utilisables que dans les Canvas.

Ils sont non-lisibles par défaut, et les Canvas avec un format de profondeur/stencil crée avec le drapeau « lisible » peuvent seulement accéder aux valeurs de profondeur de leurs pixels dans les shaders (les valeurs de stencil ne sont pas lisibles quoi qu'il en soit).

Constantes

Nom Bits par pixel À de la profondeur à un stencil Note(s)
stencil8 8 Oui
depth16 16 Oui
depth24 24 Oui
depth32f 32 Oui
depth24stencil8 32 Oui Oui
depth32fstencil8 40 Oui Oui

Formats compressés

Tous les formats de pixels compressés ne sont utilisable que dans les Images via CompressedImageData (textures compressées).

Unlike regular color formats, these stay compressed in RAM and VRAM. This is good for saving memory space as well as improving performance, since the graphics card will be able to keep more of the image's pixels in its fast-access cache when drawing it.

Constantes (GPU pour bureau)

Nom Composants Bits par pixel Étendue Note(s)
DXT1 3 4 [0, 1] Applicable aux images totalement opaques sur les système de bureau.
DXT3 4 8 [0, 1] Smooth variations in opacity do not mix well with this format. DXT1 or DXT5 is generally better in every situation.
DXT5 4 8 [0, 1] Recommandé pour les images avec opacité variable sur les systèmes de bureau.
BC4 1 4 [0, 1] Également connue comme 3Dc+ ou ATI1. Stock uniquement le canal rouge.
BC4s 1 4 [-1, 1] Moins de précision que BC4 mais autorise des nombres négatifs.
BC5 2 8 [0, 1] Également connue comme 3Dc ou ATI2. Souvent utilisé pour les cartes de normales sur les systèmes de bureau.
BC5s 2 8 [-1, 1] Moins de précision que BC5 mais autorise des nombres négatifs. Souvent utilisé pour les cartes de normales sur les systèmes de bureau.
BC6h 3 8 [0, +infini] Stock les données RVB dans des nombres à virgule flottante demi-prcision. Adapté pour les images HDR sur les systèmes de bureau.
BC6hs 3 8 [-infini, +infini] Moins de précision que BC6h mais autorise des nombres négatifs.
BC7 4 8 [0, 1] Très bon pour représenter les images opaques et transparentes, mais requiert un GPU compatible DX11 / OpenGL 4.

Constantes (GPU pour mobile)

Nom Composants Bits par pixel Étendue Note(s)
ETC1 3 4 [0, 1] Adapté pour les images complètements opaques sur les périphériques Android plus anciens.
ETC2rgb 3 4 [0, 1] Adapté pour les images complètements opaques sur les périphériques mobiles plus récents
ETC2rgba 4 8 [0, 1] Recommandé pour les images à opacité variable sur les périphériques mobiles plus récents.
ETC2rgba1 4 4 [0, 1] Variante RVBA du format ETC2, où les pixels sont soit complétement transparents, soit complétement opaques.
EACr 1 4 [0, 1] Stock juste le canal rouge.
EACrs 1 4 [-1, 1] Moins de précision que EACr met permet des nombres négatifs.
EACrg 2 8 [0, 1] Stock les canaux rouge et vert.
EACrgs 2 8 [-1, 1] Moins de précision que EACrg mais permet des nombres négatifs.
PVR1rgb2 3 2 [0, 1] Les images utilisant ce format doivent être carrées et leur taille doit être une puissance de 2.
PVR1rgb4 3 4 [0, 1] Les images utilisant ce format doivent être carrées et leur taille doit être une puissance de 2.
PVR1rgba2 4 2 [0, 1] Les images utilisant ce format doivent être carrées et leur taille doit être une puissance de 2.
PVR1rgba4 4 4 [0, 1] Les images utilisant ce format doivent être carrées et leur taille doit être une puissance de 2.
ASTC4x4 4 8 [0, 1]
ASTC5x4 4 6.4 [0, 1]
ASTC5x5 4 5.12 [0, 1]
ASTC6x5 4 4.27 [0, 1]
ASTC6x6 4 3.56 [0, 1]
ASTC8x5 4 3.2 [0, 1]
ASTC8x6 4 2.67 [0, 1]
ASTC8x8 4 2 [0, 1]
ASTC10x5 4 2.56 [0, 1]
ASTC10x6 4 2.13 [0, 1]
ASTC10x8 4 1.6 [0, 1]
ASTC10x10 4 1.28 [0, 1]
ASTC12x10 4 1.07 [0, 1]
ASTC12x12 4 0.89 [0, 1]

Notes

Tous les formats ne sont pas supportés dans les Images et Canvas love.graphics sur tous les systèmes, bien que les formats d'images compressées DXT ont un support proche de 100 % sur les systèmes d’exploitation de bureau.

Les formats BC4 et BC5 sont supportés sur les systèmes de bureau avec des pilotes et matériel capable d'utiliser DirectX 10 / OpenGL 3. Les formats BC6H et BC7 ne sont supportés que sur les systèmes de bureau avec matériel capable d'utiliser DirectX 11 / OpenGL 4 et des pilotes très récents. macOS ne supporte pas du tout BC6H ou BC7 actuellement.

ETC1 est supporté par la majorité des périphériques Android, ainsi que les iPhone 5s et plus récents.

Les formats ETC2 et EAC sont supportés par les iPhone 5s et plus récents, tout les périphériques Android compatibles OpenGL ES 3 et les GPU compatibles OpenGL 4.3.

Les formats PVR1 sont supportés par tous les périphériques iOS, ainsi qu'un petit nombre de périphériques Android qui ont des GPU PowerVR.

ASTC est supporté par les périphériques mobiles récents (e.g. iPhone 6 et plus récents), périphériques Android qui comportent un GPU Adreno 4xx (ou supérieur), ainsi que les GPU intégrés d'Intel Skylake (et plus récents). Il existe une grande variété de variantes qui permettent de prendre celui le plus compressé qui n'a pas d'effets visible de compression, pour une texture donnée.

Utilisez love.graphics.getCanvasFormats et love.graphics.getImageFormats pour vérifier le support du Canvas et Image check respectivement :

local supportedformats = love.graphics.getImageFormats()

if not supportedformats["DXT5"] then
    -- Ne peut pas charger CompressedImageData avec le format DXT5 dans les images !
    -- Sur certains systèmes Linux avec pilotes Mesa, l'utilisateur aura besoin d'installer un paquet "libtxc-dxtn" parce que les formats DXT (aka S3TC) comportent des brevets.
    -- Support pour les formats DXT sur touts les autres pilotes de bureau est quasiment garanti.
end

if not supportedformats["BC5"] then
    -- Ne peut charger CompressedImageData avec le format BC5 dans les images !
    -- L'utilisateur n'a probablement pas de carte vidéo capable d'utiliser ce format.
end

Voir également


Autres langues