2 votes

Pourquoi le texte a-t-il l'air si mauvais dans les moteurs de jeux ?

Je vais choisir Godot car c'est ce que j'utilise ces derniers temps, mais j'ai vu les mêmes problèmes (ou du moins des problèmes similaires) sur Unity également.

Lorsque j'ajoute du texte dans mon univers de jeu (par exemple, en ajoutant du texte à un bouton de l'interface utilisateur pour donner un exemple concret), le texte est flou par défaut. Je dois faire très attention à choisir une taille exacte pour chaque police, puis à la mettre à l'échelle pour qu'elle soit facilement lisible. Cela contraste avec, par exemple, Notepad ou même un terminal de console, où je peux choisir n'importe quelle police à n'importe quelle taille et tout sera beau.

Je suppose que cela a à voir avec le tramage ou une autre hypothèse fondamentale du moteur, mais cela semble être un problème qui a été résolu il y a longtemps. Qu'est-ce qui m'échappe ? Pourquoi l'affichage du texte est-il si difficile ?

2voto

Adrian McCarthy Points 17018

Le texte est difficile parce que beaucoup de détails importants ont à peu près la même taille que les pixels. Par exemple, la largeur des traits qui composent une lettre peut (idéalement) être un peu inférieure à la largeur d'un pixel ou un peu supérieure. Souvent, la position d'une lettre se situe à mi-chemin entre deux pixels, et il est difficile d'obtenir un résultat aussi bon que celui de la même lettre placée directement sur un pixel. Le texte comporte beaucoup de bords nets et très contrastés. Ces bords tranchants représentent des fréquences spatiales extrêmement élevées qui n'apparaissent normalement pas dans les images naturelles. Les algorithmes utilisés par les moteurs graphiques pour mettre à l'échelle les textures fonctionnent mieux pour les images "naturelles", comme les photographies, qui ont des fréquences spatiales beaucoup plus faibles (et même dans ce cas, elles nécessitent généralement un certain anticrénelage).

Certains formats d'image incluent une "intention de rendu" pour distinguer ces catégories afin que le moteur graphique puisse basculer les algorithmes vers ceux qui sont les mieux adaptés au type d'image. Mais ce type de fonctionnalité est plus courant dans un moteur 2D que dans un moteur de jeu 3D.

Le texte a une bonne apparence en 2D parce que les moteurs graphiques 2D ont beaucoup de code spécialisé pour rendre le texte correctement sur une grille de pixels. L'indication des polices, le lissage des polices et le rendu sous-pixel sont quelques-unes des technologies utilisées par les moteurs 2D. Les moteurs 3D disposent de technologies similaires, mais elles ne sont généralement pas optimisées pour le texte.

Si vous voulez une plongée profonde dans les problèmes (et les solutions) pour bien rendre le texte, La tragédie du raster est une ressource incroyablement complète.

Pour que le texte ait une bonne apparence dans les moteurs 3D, il existe des techniques de shader personnalisées qui peuvent être utiles, comme les cartes MIP pré-filtrées ou les champs de distance signée.

D'une manière générale, si vous prévoyez de simplement coller une texture textuelle sur un quadrant, vous souhaitez que la résolution de cette texture soit au moins aussi grande que la surface de l'écran sur lequel elle sera projetée. Vous pouvez également expérimenter des paramètres d'anticrénelage différents pour les textures textuelles de ceux que vous utiliseriez pour les autres textures de votre jeu.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X