Attention: Here be dragons
This is the latest
(unstable) version of this documentation, which may document features
not available in or compatible with released stable versions of Godot.
Checking the stable version of the documentation...
Anticrénelage 2D
Voir aussi
Godot supporte également l'anticrénelage dans le rendu 3D. Ceci est couvert sur la page 3D antialiasing.
Introduction
En raison de leur résolution limitée, les scènes rendues en 2D peuvent présenter des artefacts de crénelage. Ces artefacts se manifestent généralement sous la forme d'un effet "escalier" sur les bords des géométries, et sont particulièrement visibles lors de l'utilisation de nœuds tels que Line2D, Polygon2D ou TextureProgressBar. Dessin personnalisé en 2D peut également générer des artefacts de crénelage pour les méthodes ne prenant pas en charge l'anticrénelage.
Dans l'exemple ci-dessous, vous pouvez remarquer que les coins ont une apparence pixelisée :

L'image est agrandie par un facteur de 2× avec un filtrage par plus proche voisin afin de rendre le crénelage plus visible.
Pour remédier à cela, Godot propose plusieurs méthodes pour activer l'anticrénelage lors du rendu en 2D.
Propriété d'anticrénelage dans les Line2D et le dessin personnalisé
C'est une méthode recommandée, puisqu'elle a moins d'impact sur la performance dans la plupart des cas.
Line2D dispose d'une propriété Antialiased que vous pouvez activer dans l'inspecteur. De plus, plusieurs méthodes pour Dessin personnalisé en 2D prennent en charge un paramètre optionnel antialiased
, qui peut être défini sur true
lors de l'appel de la fonction.
Ces méthodes n'exigent pas que le MSAA soit activé, ce qui rend leur coût de performance nominal faible. En d'autres termes, il n'y a aucun coût supplémentaire permanent lorsque aucune géométrie anticrénelée n'est dessinée.
Les désavantages de ces méthodes d'anticrénelage est qu'elles fonctionnent en générant une géométrie supplémentaire. Si vous générez une géométrie 2D complexe qui est mise à jour chaque trame, cela peut être un bottleneck. En outre, Polygon2D, TextureProgressBar, et plusieurs méthodes de dessin personnalisées ne disposent pas d'une propriété "antialiased". Pour ces nœuds, vous pouvez utiliser de l'anticrénelage 2D multi-échantillon à la place.
Anticrénelage multi-échantillon (MSAA)
This is only available in the Forward+ and Mobile renderers, not the Compatibility renderer.
Avant d'activer la MSAA en 2D, il est important de comprendre sur quoi la MSAA fonctionnera. La MSAA en 2D suit des restrictions similaires à la 3D. Bien qu'elle n'introduise aucun flou, sa portée d'application est limitée. Les principales applications de la MSAA 2D sont :
Les bords des géométries, telles que des lignes ou de polygones.
Les bords des sprites uniquement pour les pixels touchant un des bords de la texture. Cela fonctionne à la fois avec le filtrage linéaire et le filtrage par plus proche voisin. Les bords des sprites créés à l'aide de la transparence dans l'image ne sont pas affectés par le MSAA.
The downside of MSAA is that it only operates on edges. This is because MSAA increases the number of coverage samples, but not the number of color samples. However, since the number of color samples did not increase, fragment shaders are still run for each pixel only once. As a result, MSAA will not affect the following kinds of aliasing in any way:
Aliasing within nearest-neighbor filtered textures (pixel art).
Crénelage causé par des shaders 2D personnalisés.
Crénelage spéculaire lors de l'utilisation d'une Light2D.
Aliasing in font rendering.
MSAA can be enabled in the Project Settings by changing the value of the Rendering > Anti Aliasing > Quality > MSAA 2D setting. It's important to change the value of the MSAA 2D setting and not MSAA 3D, as these are entirely separate settings.
Comparaison entre aucun anticrénelage (à gauche) et différents niveaux de MSAA (à droite). Le coin supérieur gauche contient un nœud Line2D, le coin supérieur droit contient 2 nœuds TextureProgress. Le bas contient des sprites de pixel art, dont 4 touchant les bords (arrière-plan vert) et 4 d'entre eux ne touchant pas les bords (logo Godot) :


