Ca risque d'être un peu long, je vais supposer que tu sais ce qu'est l'antialiasing.
Prenons le cas d'un objet opaque ayant un contour un peu complexe, et dont je souhaite faire (via un logiciel qui fait du lancer de rayons) une image comportant de la transparence. Pour un pixel du contour de cet objet, si j'active l'antialiasing, mon logiciel va lancer un certain nombre de rayons, et tester s'ils ont une intersection avec mon objet, ou non.
Si je fais du gif, et que je veux coller mon image sur un fond bleu pur, je vais devoir faire un rendu de mon objet sur un fond bleu pur, et assigner à ce bleu pur la couleur transparente (transparence du format gif = un index de couleur est associé à la transparence totale). Le pixel de mon coutour aura une couleur qui sera en partie liée à cette couleur de fond (bleu pur), en proportion du nombre de rayons qui n'ont pas d'intersection avec l'objet.
C'est fantastique, la vie est belle, j'ai mon image que je peux coller sur fond bleu. L'ennui, c'est que si je la colle sur un fond de couleur différente, c'est un véritable massacre.
Avec un canal alpha, on est en principe en mesure de coder, en plus des canaux Rouge, Vert et Bleu, une valeur de transparence.
Ca revient à dire que pour le pixel de mon contour d'objet, les canaux RVB contiendront l'information relative à la couleur résultant des rayons ayant une intersection avec mon objet, et que le canal alpha stockera l'information relative à la proportion des rayons qui n'ont pas d'intersection avec mon objet.
Bref, je peux coller mon image sur un fond de n'importe quelle couleur, j'aurai un antialiasing, sans la contrainte de devoir dès la génération de mon image savoir sur quelle couleur de fond elle sera collée.
Sur le canal alpha, on a en quelque sorte la silhouette de l'objet, et c'est ce contour "monochrome" qui est antialiasé.
En générant deux images de mon objet, avec l'antialiasing activé, l'une sur fond blanc et l'autre sur fond noir, on devrait être en mesure d'extraire pour chaque pixel, à la fois la couleur et la valeur du canal alpha à enregistrer dans une image au format png.
Ceci ne s'appliquant probablement proprement qu'aux contours d'objets opaques sans trop de réflexions...
Ma question était : vais-je devoir écrire le programme qui fait ça ?