Il n'y a vraiment aucun bon moyen de le faire de manière analytique efficace pour tous les cas d'angle. La plupart ou tous les moteurs de rendu 2D commerciaux qui tentent de faire un calcul de couverture analytique font des erreurs prévisibles que les méthodes de multi-échantillonnage ne font pas.
Un problème typique est deux formes qui se chevauchent et partagent le même bord. La situation courante est que les canaux alpha se résument à un bord alpha trop épais qui aliase légèrement. Ou si les formes sont de couleurs différentes, le système confond la couleur de l'arrière-plan. C'est extrêmement ennuyeux.
Image 1 : Le moteur de rendu confond la couverture et crée un mince contour blanc là où aucun contour ne devrait être.
La deuxième couverture parfaite revient au filtrage de boîtes. Nous pouvons certainement faire mieux. Étant donné qu'il y a tellement de cas d'angle spéciaux qui nécessiteraient des opérations booléennes sur les formes pour bien faire, le super échantillonnage est toujours supérieur. En fait, les estimations de couverture peuvent être utilisées pour concentrer l'échantillonnage là où il est le plus probable.
La situation pourrait être simplifiée en polygones à des niveaux inférieurs aux pixels, puis la solution analytique discrète pourrait être résolue. Mais cela au détriment de la flexibilité. Par exemple, il n'est pas hors de question que les futurs systèmes vectoriels puissent vouloir permettre des lignes floues de largeur variable qui posent un problème pour les solutions analytiques, comme le font d'autres objets de couleurs variables.
Comment le faire analytiquement
Image 2 : Supposons que vous ayez cette scène, vue éclatée à droite
Maintenant, vous ne pouvez pas simplement faire cela analytiquement, chaque pièce séparément, puis fusionner les données. Parce qu'il en résulte des données erronées. Voir le mélange alpha laisserait le bleu briller à travers les lacunes si vous le faisiez.
Vous devez donc diviser la scène afin que chaque forme élimine ce qui est sous l'autre:
Image 3 : Vous devez couper les surfaces sous-jacentes.
Maintenant, si tout est opaque, tout est simple. il suffit de calculer l'aire de chaque pièce et de la multiplier par la couleur et de les additionner. Maintenant, vous pouvez utiliser quelque chose comme ça .
Tout cela se décompose si vos formes individuelles ne sont pas opaques bien sûr, mais même cela peut être fait à un certain niveau.
Rappelles toi:
- Le calcul AA doit être effectué dans un espace colorimétrique linéaire et reconverti pour utiliser l'espace.