Comme l'a dit TheBuzzSaw, cela dépend de beaucoup de choses, y compris les implémentations des graphiques tramés par rapport aux graphiques vectoriels.
Voici quelques méthodes graphiques vectorielles hautes performances qui sont rendues à l'aide de méthodes de tramage traditionnelles.
Loop et Blinn montrent comment rendre une courbe de Bézier quadratique de graphiques vectoriels en rendant un seul triangle et en utilisant les coordonnées de texture dans un pixel shader pour dire si un pixel est au-dessus ou en dessous de la courbe:
http: //www.msr-waypoint. net / en-us / um / people / cloop / LoopBlinn05.pdf
L'idée de base est que vous définissez les positions de vos coins triangulaires comme étant les 3 positions des points de contrôle et que vous définissez les coordonnées de texture à chaque coin à (0,0), (0,5,0) et (1,1) respectivement. Dans votre shader, si la coordonnée de texture interpolée (x * xy) est <0, le pixel est sous la courbe, sinon il est au-dessus de la courbe.
Vous pouvez voir une fausse implémentation de celui-ci sur shadertoy ici:
https://www.shadertoy.com/view/4tj3Dy
En ce qui concerne la deuxième méthode, voici une méthode de Valve, où les distances à une forme sont stockées dans une texture, au lieu de données de pixels, permettant de dessiner des graphiques vectoriels en utilisant l'échantillonnage de texture. Le décodage est si simple qu'il pourrait être implémenté même sur du matériel à fonction fixe en utilisant uniquement un test alpha!
http://www.valvesoftware.com/publications/2007/SIGGRAPH2007_AlphaTestedMagnification.pdf
Pour vous donner une idée de l'efficacité de la deuxième technique, cette image de moustache 1024x768 a été générée à partir d'une image source 64x32 qui avait un canal de couleur unique! (alias 2 Ko non compressé)
J'ai également écrit quelques trucs à ce sujet sur mon blog:
http://blog.demofox.org/2014/06/30/distance-field-textures/
Voici quelques exemples de code OpenCL pour montrer à quel point c'est simple:
float alpha = read_imagef(tex3dIn, g_textureSampler, textureCoords).w;
float3 color = (alpha < 0.5f) ? (float3)(1.0f) : (float3)(0.0f);
Ces deux techniques sont super rapides et brouillent un peu la ligne entre les graphiques vectoriels et tramés. Ils sont rendus à l'aide de techniques de pixellisation, mais ont des propriétés de zoom / mise à l'échelle comme les techniques de graphiques vectoriels.