Les techniques de rendu de texte des processeurs graphiques.

La capacité des processeurs graphiques à effectuer des calculs mathématiques complexes en parallèle a révolutionné le domaine de l’infographie, en permettant d’afficher un texte de qualité supérieure de façon rapide et fidèle.

Le rendu du texte est une composante importante du design des interfaces utilisateurs graphiques (GUI) et des supports numériques. Face à la demande croissante de graphismes, d’animations et de rendu en temps réel de qualité supérieure, l’utilisation des processeurs graphiques pour l’affichage du texte est aujourd’hui une solution populaire.

La capacité des processeurs graphiques à effectuer des calculs mathématiques complexes en parallèle a révolutionné le domaine de l’infographie, en permettant d’afficher un texte de qualité supérieure de façon rapide et fidèle. Cette série d’articles s’intéresse aux différentes techniques de rendu de texte avec un processeur graphique, notamment l’utilisation de bibliothèques spécialisées, de shaders et d’algorithmes avancés. Nous passerons en revue les avantages et les difficultés liés à l’utilisation d’un processeur graphique pour le rendu de texte, et fournirons des exemples d’applications concrètes de ces techniques. Que vous soyez développeur, designer ou simplement curieux des dernières tendances en infographie, cette série d’articles vous apportera un éclairage utile sur le monde du rendu de texte par processeur graphique.

Les avantages d’un processeur graphique pour le rendu de texte.

La performance.

L’utilisation d’un processeur graphique pour le rendu de texte offre de bien meilleures performances qu’une unité centrale, et permet d’obtenir des applications souvent plus rapides et plus réactives, et d’améliorer l’expérience utilisateur. Autre élément important à prendre en considération : le fait de décharger l’unité centrale d’une partie du rendu de texte (vers le processeur graphique) permet de libérer la bande passante de l’unité centrale et potentiellement la mémoire vive, alors disponible pour d’autres fonctionnalités de l’application.

Autres avantages.

  • De nombreux processeurs graphiques disposent d’une mémoire dédiée distincte de la mémoire utilisée par l’unité centrale. Cette mémoire sert généralement au stockage et à l’accès aux données de texture, qui contiennent le texte affiché. Cette mémoire distincte du processeur graphique permet un accès facile et efficace aux données, réduisant la latence du rendu du texte et améliorant les performances globales.
  • De nombreux processeurs graphiques offrent une tessellation matérielle, qui implique de décomposer les formes complexes comme les contours des glyphes en triangles, plus faciles à traiter pour le processeur graphique.
  • Beaucoup prennent aussi en charge l’accélération matérielle qui cible certains calculs graphiques spécifiques tels que le rendu de texte.
  • Les processeurs graphiques sont conçus pour un traitement en parallèle, tandis que les unités centrales sont optimisées pour un traitement en série. Cela signifie que le processeur graphique peut diviser une tâche de rendu complexe en plus petites tâches exécutées en parallèle.

Techniques de rendu de texte avec un processeur graphique.

Tirer profit des avantages offerts par un processeur graphique en matière de rendu de texte peut permettre d’améliorer considérablement les performances, la qualité et la fidélité du texte dans les applications graphiques. Il existe en outre plusieurs techniques différentes qui peuvent permettre d’utiliser un processeur graphique pour le rendu de texte. Cet article s’intéresse à la technique de rendu des glyphes et placage de texture. Les suivants présenteront et étudieront d’autres techniques.

Rendu des glyphes et placage de texture.

Considéré comme l’une des toutes premières techniques de rendu de texte des processeurs graphiques, le placage de texture et rendu des glyphes est un procédé en deux étapes. Mais avant de les décrire plus en détail, il est important de bien comprendre ce qu’est le processus de placage de texture.

Les textures, généralement des images bitmap, sont des composants importants des processeurs graphiques modernes. Elles sont souvent appliquées à un plan arbitraire d’un modèle donné, pour offrir aux utilisateurs une expérience plus réaliste. Il peut s’agir de simples couleurs, ou de motifs extrêmement détaillés, par exemple pour les traits du visage.

Dans l’exemple ci-après, la texture est une image détaillée d’un mur de briques, plaqué sur un plan de base en 2D. Le placage de texture permet de plaquer l’image du mur de brique sur le plan en 2D, créant ainsi un mur de brique visuellement réaliste, qui pourra être placé dans une scène pour un effet plus réaliste.

Le placage de texture peut également être utilisé pour le rendu des glyphes qui composent un mot ou une phrase. Ceux-ci peuvent ensuite être plaqués sur un plan arbitraire ou même un objet 3D. Le processus est similaire à celui appliqué pour le mur de brique, à ceci près qu’une texture différente est appliquée pour chaque glyphe requis dans l’application.

Étape 1 : Rendu des glyphes.

Pour plaquer la texture d’un seul glyphe sur une surface arbitraire, ce glyphe doit être disponible comme texture. Cela signifie qu’il doit être affiché en tant qu’image, et disponible pour le processeur graphique pendant la phase de placage de la texture. Les premiers systèmes qui utilisaient cette technique effectuaient un pré-rendu des glyphes nécessaires dans un atlas de glyphes, c’est-à-dire une section de la mémoire du processeur graphique où sont stockées toutes les images de glyphes. L’image ci-dessous est un exemple d’atlas de glyphes, composé d’un nombre aléatoire de caractères pré-affichés dans une police et une taille spécifiques, puis stockés dans la mémoire du processeur graphique.

Étape 2 : Placage de texture.

Une fois tous les glyphes nécessaires pour l’application pré-affichés et stockés dans l’atlas de glyphes du processeur graphique, la prochaine étape consiste à plaquer la texture des glyphes requis sur des plans arbitraires, et à aligner ces derniers pour que les glyphes forment des mots. Cette étape est identique à l’exemple du mur de brique donné plus tôt, si ce n’est qu’il faut également positionner les glyphes individuels pour former des mots, et parfois des phrases, ce qui rajoute de la complexité.

Une fois la texture des glyphes d’un mot donné plaquée, les glyphes peuvent être positionnés correctement sur la scène.

Éléments à prendre en compte.

Étant donné que les glyphes sont pré-affichés avec cette technique, cette option est très rapide, et elle est très largement utilisée dans les applications où le texte est connu à l’avance. La technique présente cependant plusieurs inconvénients qu’il faut prendre en compte lors du rendu des glyphes et du placage de texture.

  • Pour utiliser cette technique, tous les glyphes nécessaires doivent être pré-affichés dans l’atlas de glyphes, et ce dernier doit être inclus dans le build de l’application. Et selon le jeu de caractères et la taille de rendu des glyphes, cela peut avoir un impact important sur la taille globale de l’application. Par exemple, si l’application prend en charge plusieurs langues, le jeu de caractères peut être important, et l’atlas de glyphes occupera davantage de mémoire pour stocker tous les glyphes. Il existe des exemples plus complexes d’atlas de glyphes chargés de façon dynamique, que nous aborderons peut-être dans un prochain article.
  • Il faut également prendre en compte le nombre de styles de polices pris en charge par l’application. Chaque style de police (regular, bold, italic) utilisé dans l’application devra faire l’objet d’un pré-rendu et être stocké, ce qui augmente la taille de l’atlas de glyphes nécessaire. La plupart des experts de l’expérience utilisateur diraient certainement que l’utilisation de la typographie dans une interface utilisateur est essentielle, et n’est généralement pas limitée à un style. Dans certaines situations, l’interface utilisateur gagnerait à utiliser un texte en gras ou condensé, ou même à utiliser plusieurs graisses de texte. Le fait est que l’interface utilisateur peut être compromise si elle est limitée à un seul style de police.
  • Les glyphes peuvent se créneler dans certaines applications, et leurs bords lisses se denteler ou se pixeliser selon que le texte est ancré dans une scène ou non. Cet effet est généralement considéré comme indésirable. Le pré-rendu des glyphes à des résolutions plus élevées permet de minimiser cet effet, mais peut aussi produire des textures de glyphes plus grandes, qui occupent alors davantage de mémoire dans l’atlas de glyphes. Certaines techniques plus avancées, telles que les champs de distance, peuvent permettre d’introduire des fonctions anti-crénelage, afin de limiter le crénelage. Nous les aborderons peut-être dans de prochains articles.

À suivre.

Contrairement à la technique de rendu des glyphes et placage de texture, le rendu du champ de distance représente la distance entre chaque pixel d’un glyphe et son bord le plus proche. Cette technique offre une netteté et une qualité de rendu globale améliorées qui restent stables lorsque le texte est agrandi et déformé dans différents environnements en 3D. Elle fait l’objet du prochain article de cette série.