Alpha prémultiplié, oui ou non?


10

Dois-je utiliser l'alpha prémultiplié? En lisant l' article de Tom Forsyth, il semble que ce soit un nobrainer. L'alpha prémultiplié (mélange additif AKA) est supérieur dans tous les sens.
Cependant, l'alpha prémultiplié semble avoir un inconvénient majeur, il n'est pas bien pris en charge avec les outils.

Avez-vous / avez-vous utilisé de l'alpha prémultiplié?

Comment l'outil est-il pris en charge?

En particulier, je ne pense pas que gimp éditera bien les images alpha prémultipliées. Existe-t-il des plugins Gimp pour exporter l'alpha prémultiplié? Que diriez-vous d'un outil externe?


Je suis exactement dans la même position que vous - je veux l'utiliser partout, mais je ne sais pas avec quelle facilité je peux modifier mes actifs avec si j'ai besoin de développer des outils supplémentaires pour cela.
Kylotan

Réponses:


4

J'utilise actuellement XNA 3.1 avec alpha prémultiplié (le support natif Alpha prémultiplié a été ajouté en 4.0).

Surtout, cela me fait gagner du temps en passant et en m'assurant que les zones transparentes de mes images ont les bonnes couleurs. Je porte également sur Silverlight, qui effectue la prémultiplication par défaut.

XNA a un pipeline de contenu qui rend l' ajout de prétraitement alpha prémultiplié super facile.

Ce lien contient le code pour effectuer la conversion. Pour chaque pixel:

c.R = (byte)(c.R * c.A / 255);
c.G = (byte)(c.G * c.A / 255);
c.B = (byte)(c.B * c.A / 255);

Il y a beaucoup à dire pour avoir un pipeline de contenu. Si vous n'utilisez pas XNA, mais utilisez Visual Studio, vous pouvez en créer un vous-même . Tout autre IDE / processus de construction devrait également être capable.

Et enfin, si vous n'avez pas d'étape de traitement de contenu dans votre build (et donc vous n'avez probablement pas beaucoup de contenu de toute façon), vous pouvez tout aussi facilement effectuer la prémultiplication lors de l'exécution lorsque vous chargez vos textures. Cela ajoutera un facteur constant à votre temps de chargement de texture.

(Si l'implication n'était pas claire: vous ne devriez probablement pas éditer des images alpha prémultipliées. Exportez-les prémultipliées si vous le pouvez, ou mieux encore prétraitez-les.)


Merci. Il faut que l'alpha prémultiplié soit suffisamment pris en charge dans XNA (ou le sera bientôt). Je suis toujours à la recherche d'outils non XNA pour créer mon pipeline.
deft_code

3

S'il vous arrive d'utiliser XNA, il y a beaucoup de support pour l'alpha pré-multiplié. Habituellement, la conversion se fait dans le pipeline de contenu, mais rien ne vous empêche de le faire vous-même.


1

J'utilise l'alpha prémultiplié par défaut dans mon moteur (l'artiste peut forcer la non prémultipliée dans le fichier de définition de matériau, si cela est nécessaire pour un effet spécial quelconque)

Les outils, comme vous l'avez remarqué, ne gèrent pas bien l'alpha prémultiplié - l'artiste peut définir la couleur et les canaux alpha de manière totalement indépendante. J'ai configuré les choses pour que mon artiste puisse créer les images de texture avec un alpha non prémul (ce qui semble être plus facile pour le cerveau de l'artiste), et l'outil qui convertit au format de texture du moteur multiplie l'alpha par défaut. Il y a un commutateur pour que non prémultiplié puisse être généré s'il est absolument nécessaire.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.