# Rendu de polices GPU avec Slug : Dilatation dynamique et licence MIT
L'algorithme Slug, développé en 2016, permet le rendu direct de polices et de graphiques vectoriels à partir de courbes de Bézier sur GPU, sans atlases de textures. Au cours de la dernière décennie, il a évolué avec une amélioration clé — la dilatation dynamique — et son brevet est désormais ouvert à une utilisation gratuite sous licence MIT.
Évolution de l'algorithme Slug
Slug relève le défi du rendu de texte en temps réel fiable, rapide et de haute qualité. La fiabilité signifie l'absence de pixels manquants ou d'artefacts, les performances maintiennent un FPS stable même sur des consoles de 2016, et la qualité offre des courbes fluides et des bords nets à toute échelle ou perspective.
Depuis sa publication dans JCGT en 2017, le code a connu plusieurs raffinements :
- Suppression de l'optimisation de division en bandes, qui accélérait les grands glyphes mais causait une divergence des shaders et doublait le volume de données.
- Abandon du suréchantillonnage adaptatif, ses avantages n'étant perceptibles que sur du texte à peine lisible, tandis que la dilatation gère efficacement l'aliasing aux petites tailles.
- Refonte complète du rendu d'émojis multicolores : remplacement des boucles de pixel shader par des glyphes indépendants avec leurs propres polygones de délimitation, simplifiant le code et boostant les performances.
Ces changements ont rationalisé le pixel shader, réduit l'usage des données et amélioré l'efficacité globale du rendu.
Dilatation dynamique : Optimisation automatique
Avant la dilatation dynamique, les utilisateurs devaient définir manuellement un décalage fixe pour étendre les polygones de délimitation des glyphes. Cela provoquait des artefacts d'aliasing aux petites tailles et gaspillait des ressources GPU aux grandes tailles. La dilatation dynamique corrige les deux en calculant automatiquement le décalage optimal dans le vertex shader, en se basant sur la matrice model-view-projection (MVP) et les dimensions de la fenêtre de vue.
Le calcul garantit que les centres de pixels partiellement couverts tombent à l'intérieur du polygone pour une rasterisation correcte, sans remplissage excessif. La formule dérive d'une expansion de demi-pixel dans l'espace de la fenêtre de vue et se résout comme une équation quadratique :
d = (s³t + s²√(u² + v²)) / (u² + v² - s²t²)
où s = m₃₀p_x + m₃₁p_y + m₃₃, t = m₃₀n̂_x + m₃₁n̂_y, et u et v sont des dérivées issues des paramètres MVP et de la normale. Le signe "+" donne le décalage vers l'extérieur le long de la normale unitaire.
Pour préserver la taille originale du glyphe, les coordonnées d'échantillonnage sur la surface mipmappée sont ajustées à l'aide de la matrice jacobienne 2×2 inverse, transformant le décalage dans l'espace objet.
Libération du brevet et licensing
En 2019, l'auteur a breveté l'algorithme Slug, mais il est désormais libéré pour une utilisation sans restriction sous licence MIT. Les développeurs peuvent l'intégrer dans leurs projets sans obstacles légaux. Slug a déjà été licencié par des entreprises comme Activision, Adobe et Ubisoft pour des jeux vidéo, de la visualisation scientifique, du CAO et plus encore, prouvant sa valeur en conditions réelles.
Points clés
- Slug rend les polices et graphiques vectoriels directement sur GPU à partir de courbes de Bézier, offrant fiabilité, vitesse et qualité optimale.
- La dilatation dynamique optimise automatiquement l'expansion des polygones de délimitation, éliminant artefacts et gaspillage de ressources.
- L'algorithme a évolué : suppression de la division en bandes et du suréchantillonnage, simplification du rendu d'émojis.
- Le brevet de Slug est désormais sous licence MIT pour une utilisation gratuite dans des projets commerciaux et open source.
- Il est éprouvé dans le gaming, la visualisation scientifique, la CAO et au-delà.
— Editorial Team
Aucun commentaire pour le moment.