Récemment, de nombreuses recherches fantastiques sur le rendu 2D sont apparues. Peter Kobalicek et Fabian Aizerman travaillent sur
Blend2D : c'est l'un des rastériseurs CPU les plus rapides et les plus précis du marché, avec une technologie JIT innovante. Patz Walton de Mozilla a étudié non pas une, mais
trois approches différentes dans Pathfinder , aboutissant à Pathfinder v3. Raf Levien a construit le
pipeline informatique en utilisant la technologie décrite dans un
article scientifique du Ghana avec des collègues sur les textures vectorielles (2014) . Il semble qu'un certain développement de la distance soit marqué par des champs de distance:
Adam Simmons et
Sarah Frisken travaillent indépendamment ici.
On pourrait se demander: pourquoi y a-t-il autant de bruit autour de la 2D? Cela ne peut pas être beaucoup plus difficile que la 3D, non? La 3D est une dimension complètement différente! Ici, nous avons le lancer de rayons en temps réel sur le nez avec un éclairage précis, et vous ne pouvez pas dominer les graphiques 2D simples avec des couleurs unies?
Pour ceux qui ne connaissent pas très bien les détails du GPU moderne, c'est vraiment très surprenant! Mais les graphiques 2D ont de nombreuses limitations uniques qui rendent la tâche extrêmement difficile. De plus, il ne se prête pas à la parallélisation. Faisons une promenade le long du chemin historique qui nous a amenés ici.
Décollage PostScript
Au début, il y avait un traceur. Le premier appareil graphique capable d'interagir avec un ordinateur s'appelait un «
traceur » (traceur): un ou plusieurs stylos pouvant se déplacer sur du papier. Tout fonctionne
selon la commande de pliage vers le bas, puis la tête de dessin se déplace d'une manière unique, éventuellement le long d'une courbe, et la commande de pliage vers le haut est reçue . HP, le fabricant de certains des premiers traceurs, a utilisé une variante BASIC appelée AGL sur l'ordinateur hôte, qui a ensuite envoyé les commandes du traceur dans une autre langue, comme
HP-GL . Dans les années 1970, les terminaux graphiques sont devenus moins chers et plus populaires, à commencer par le
Tektronix 4010 . Il a montré l'image à l'aide d'un CRT, mais ne vous y trompez pas: ce n'est pas un affichage en pixels. Tektronix est issu de l'industrie des oscilloscopes analogiques, et ces machines fonctionnent en
contrôlant le faisceau d'électrons le long d'un chemin spécifique . Ainsi, le Tektronix 4010 n'avait pas de sortie pixel. Au lieu de cela, vous lui avez envoyé des commandes en
mode graphique simple , qui pouvaient tracer des lignes, mais, encore une fois, en mode "plume vers le bas", "plume vers le haut".
Comme dans de nombreux autres domaines, tout a changé l'invention du Xerox PARC. Les chercheurs ont commencé à développer un nouveau type d'imprimante, plus expressif en termes de calcul qu'un traceur. Cette nouvelle imprimante fonctionnait dans un petit langage de programmation Turing-stack empilé similaire à Forth, et elle s'appelait ...
Interpress ! De toute évidence, Xerox ne pouvait pas lui trouver une application digne, alors les inventeurs ont quitté le navire et ont fondé une petite startup appelée Adobe. Ils ont pris Interpress avec eux, et comme ils ont été corrigés et améliorés, cela a changé au-delà de la reconnaissance, alors ils lui ont donné un autre nom: PostScript. En plus du langage de pile doux et complet, le quatrième chapitre de la
référence du langage PostScript original décrit le modèle d'imagerie, qui est presque identique aux interfaces de programmation modernes. L'exemple 4.1 du manuel contient un exemple de code qui peut être traduit presque ligne par ligne en HTML5 <canvas>.
/box { function box() { newpath ctx.beginPath(); 0 0 moveto ctx.moveTo(0, 0); 0 1 lineto ctx.lineTo(0, 1); 1 1 lineto ctx.lineTo(1, 1); 1 0 lineto ctx.lineTo(1, 0); closepath ctx.closePath(); } def } gsave ctx.save(); 72 72 scale ctx.scale(72, 72); box fill box(); ctx.fill(); 2 2 translate ctx.translate(2, 2); box fill box(); ctx.fill(); grestore ctx.restore();
Ce n'est pas un hasard.
Steve Jobs d'Apple a rencontré les ingénieurs d'Interpress lors de sa visite au PARC. Jobs pensait que le secteur de l'imprimerie serait rentable et a essayé d'acheter Adobe à la naissance. Mais Adobe a présenté une contre-offre et a finalement vendu à Apple une licence PostScript de cinq ans. Le troisième pilier du plan de Jobs était de financer une petite startup, Aldus, qui a créé une application WYSIWYG pour créer des documents PostScript. Il s'appelait PageMaker. Au début de 1985, Apple a présenté la première imprimante compatible PostScript, l'Apple LaserWriter. La combinaison de Macintosh, PageMaker et LaserWriter a instantanément bouleversé l'industrie de l'impression, et le nouveau succès "PAO" a renforcé PostScript pour sa place dans l'histoire. Le principal concurrent de Hewlett-Packard a finalement acheté une licence PostScript pour sa série d'imprimantes LaserJet concurrentes. Cela s'est produit en 1991 sous la pression des consommateurs.
PostScript est lentement passé d'un langage de contrôle d'imprimante à un format de fichier. Les programmeurs intelligents ont appris comment les commandes PostScript sont envoyées à l'imprimante - et ont commencé à créer des documents PostScript manuellement en ajoutant des graphiques, des graphiques et des dessins à leurs documents, tandis que PostScript était utilisé pour afficher des graphiques. Il y a une demande de graphiques en dehors de l'imprimante! Adobe l'a remarqué et a rapidement publié le format
PostScript encapsulé , qui n'était rien de plus que quelques commentaires PostScript spécialement formatés avec des métadonnées sur la taille de l'image et des restrictions sur l'utilisation des commandes de l'imprimante, telles que «saut de page». Au cours de la même année 1985, Adobe a commencé à développer Illustrator, une application où les artistes travaillaient au format PostScript encapsulé dans une interface utilisateur pratique. Ensuite, ces fichiers pourraient être transférés vers un traitement de texte qui a créé ... des documents PostScript à envoyer aux imprimantes PostScript. Le monde entier est passé au PostScript, et Adobe ne pourrait pas être plus heureux. Lorsque Microsoft travaillait sur Windows 1.0 et souhaitait créer sa propre API graphique pour les développeurs, l'objectif principal était de le rendre compatible avec les imprimantes existantes afin que les graphiques envoyés aux imprimantes soient aussi simples qu'un écran. Cette API a finalement été publiée sous le nom de
GDI , le composant principal utilisé par tous les ingénieurs lors de la popularité croissante de Windows dans les années 1990. Des générations de programmeurs Windows ont commencé à identifier sans le savoir les graphiques vectoriels 2D avec le modèle d'image PostScript, le sécurisant avec ce statut de facto.
Le seul problème majeur avec PostScript était sa complétude turing: afficher la 86e page d'un document signifie d'abord exécuter le script pour les pages 1-85. Et ça peut être lent. Adobe a découvert cette plainte des utilisateurs et a décidé de créer un nouveau format de document qui ne comportait pas de telles restrictions, il s’appelait «Portable Document Format» ou, en bref, «PDF». Le langage de programmation en a été jeté, mais la technologie graphique est restée la même. Citation des
spécifications PDF, chapitre 2.1, «Modèle d'image» :
Le PDF est basé sur sa capacité à décrire l'apparence de graphiques et de typographie complexes. Cette fonctionnalité est obtenue grâce à l'utilisation du modèle d'image Adobe, la même présentation de haut niveau indépendante du périphérique utilisée dans le langage de description de page PostScript.
Lorsque le consortium W3C a examiné les candidats au langage de balisage des graphiques 2D sur Internet, Adobe a défendu le
PGML basé sur
XML , qui était basé sur le modèle graphique PostScript:
PGML doit inclure un modèle d'image PDF / PostScript pour garantir des graphiques 2D évolutifs qui répondent aux besoins des utilisateurs généraux et des professionnels du graphisme.
Le format
VML concurrent de Microsoft était basé sur GDI, qui, nous le savons, est basé sur PostScript. Les deux propositions concurrentes, qui étaient encore essentiellement PostScript, ont fusionné pour que le W3C adopte la norme des «graphiques vectoriels évolutifs» (SVG) que nous connaissons et aimons aujourd'hui.
Même s'il est vieux, ne prétendons pas que les innovations PostScript apportées à ce monde sont rien de moins qu'un miracle technologique. L'imprimante LaserWriter PostScript d'Apple était deux fois plus puissante que le Macintosh qui la contrôlait, juste pour interpréter le PostScript et rasteriser les chemins vectoriels en points sur le papier. Cela peut sembler excessif, mais si vous avez déjà acheté une imprimante à la mode avec un
laser à l' intérieur, vous ne devriez pas être surpris par un processeur coûteux. Dans sa première incarnation, PostScript a inventé un modèle de visualisation assez sophistiqué avec toutes les fonctionnalités que nous tenons pour acquises aujourd'hui. Quelle est la fonctionnalité la plus puissante et la plus impressionnante? Les polices À cette époque, les polices étaient dessinées à la main avec une règle et un rapporteur et coulées sur film pour l'
impression photochimique . En 1977, Donald Knut a montré au monde entier de quoi était capable son système
METAFONT , qu'il a présenté avec l'éditeur de texte TeX, mais il n'a pas pris racine. Il exigeait que l'utilisateur ait une description mathématique des polices à l'aide de pinceaux et de courbes. La plupart des développeurs de polices ne voulaient pas l'apprendre. Et des virages bizarres avec de petites tailles transformées en gâchis: les imprimantes de cette époque n'avaient pas une résolution suffisante, donc les lettres se brouillaient et se confondaient. PostScript a proposé une nouvelle solution: un algorithme pour «relier» les contours aux grilles plus grossières utilisées par les imprimantes. C'est ce qu'on appelle l'ajustement de la grille. Pour éviter une distorsion trop importante de la géométrie, ils ont permis aux polices de définir des "indices" sur les parties de la géométrie les plus importantes et celles qui devraient être préservées.
Le modèle commercial d'origine d'Adobe était de vendre cette technologie de polices aux développeurs d'imprimantes et de vendre aux éditeurs des polices recréées spéciales avec des astuces supplémentaires, donc Adobe vend toujours ses versions de
Times et
Futura . Soit dit en passant, cela est possible parce que les polices, ou, plus formellement, les «casques», sont l'une des
cinq choses qui sont explicitement exclues de la loi américaine sur le droit d'auteur , car elles étaient à l'origine désignées comme «trop simples ou utilitaires pour être un travail créatif». Au lieu de cela, un
programme numérique qui reproduit la police à l'écran est protégé par le droit d'auteur. Afin que les utilisateurs ne puissent pas copier les polices Adobe et ajouter les leurs, le format de
police de type 1 appartenait à l'origine à Adobe et contenait le code de «cryptage des polices». Seul le PostScript d'Adobe pouvait interpréter les polices de Type 1, et seulement ils ont implémenté une technologie de conseil propriétaire qui offre une netteté dans les petites tailles.
Au fait, l'ajustement du maillage est devenu si populaire que lorsque Microsoft et Apple en ont eu assez de payer les frais de licence Adobe, ils ont inventé une méthode alternative pour leur
format de police
TrueType alternatif. Au lieu de spécifier des «conseils» déclaratifs, TrueType donne à l'auteur de polices un
langage de pile complet et complet pour que l'auteur puisse contrôler tous les aspects de l'ajustement de la grille (en évitant les brevets Adobe pour les conseils déclaratifs). Pendant des années, une guerre a fait rage entre Adobe Type 1 et TrueType, et les développeurs de polices sont coincés au milieu, offrant aux utilisateurs les deux formats. En fin de compte, l'industrie est parvenue à un compromis:
OpenType . Mais au lieu de déterminer de manière réaliste le gagnant, ils ont simplement floppé les deux spécifications dans un seul format de fichier. Adobe a maintenant gagné de l'argent non pas en vendant des polices de type 1, mais de Photoshop et Illustrator, il a donc supprimé la partie de cryptage, affiné le format et introduit des polices
CFF / Type 2, qui étaient toutes incluses dans OpenType en tant
que tableau cff . TrueType, d'autre part, a été inséré en tant que
glyf et autres tables. Bien que quelque peu laid, OpenType semblait faire le travail pour les utilisateurs, surtout les affamer: il suffit de demander à tous les logiciels de prendre en charge les deux types de polices, car OpenType vous oblige à prendre en charge les deux types de polices.
Bien sûr, nous sommes obligés de demander: sinon PostScript, alors qu'est-ce qui est à sa place? D'autres options méritent d'être envisagées. Le METAFONT mentionné précédemment n'utilisait pas de chemins de contour strictement définis (chemins remplis). Au lieu de cela, Knut, d'une manière typique, dans son article
«Typographie mathématique» a proposé un concept mathématique pour la typographie, qui est «le plus agréable». Vous spécifiez plusieurs points, et certains algorithmes trouvent à travers eux la bonne courbe "la plus agréable". Vous pouvez superposer ces contours les uns sur les autres: définissez l'un d'eux comme une "plume", puis "faites glisser une plume" sur une autre ligne. Knut, au fond, un informaticien, a même introduit la récursivité. Son élève John Hobby a développé et implémenté des algorithmes pour
calculer la «courbe la plus agréable» ,
superposer des chemins imbriqués et pixelliser de telles courbes . Pour plus d'informations sur METAFONT, les courbes et l'histoire de la typographie en général, je recommande
fortement le livre
Fonts and Encodings , ainsi que les
articles de John Hobby .
Heureusement, le regain d'intérêt pour la recherche graphique 2D signifiait que les splines Knut et Hobby n'étaient pas complètement oubliées. Bien qu'ils soient définitivement abstrus et non conventionnels, ils ont récemment fait leur chemin vers la
suite Apple iWork , et ils sont le type de spline par défaut.
Décoller les triangles
Sans aller trop loin dans la jungle mathématique, à un niveau élevé, nous appelons des approches telles que les courbes de Bézier et les splines Hobby des
courbes implicites , car elles sont indiquées comme une fonction mathématique qui génère une courbe. Ils semblent bons à n'importe quelle résolution, ce qui est idéal pour les images 2D conçues pour la mise à l'échelle.
Les graphiques 2D ont soutenu l'élan autour de ces courbes implicites, qui sont presque obligatoires lors de la modélisation des glyphes. Le matériel et les logiciels pour calculer ces trajets en temps réel étaient chers, mais une forte impulsion est venue de l'industrie de l'impression pour les graphiques vectoriels, et la plupart des autres équipements industriels existants étaient déjà beaucoup plus chers qu'une imprimante laser avec un processeur sophistiqué.
Cependant, les graphiques 3D ont emprunté une voie complètement différente. Dès le début, une approche presque universelle était l'utilisation de polygones (polygones), qui étaient souvent
étiquetés manuellement et
entrés manuellement dans l'ordinateur . Cependant, cette approche n'était pas universelle. L'équivalent 3D d'une courbe implicite est une
surface implicite composée de primitives géométriques de base telles que des sphères, des cylindres et des cubes. Une sphère idéale avec une résolution infinie peut être représentée par une équation simple, donc
à l'aube du développement de la 3D pour la géométrie, elle était clairement préférable aux polygones .
MAGI était l'une des rares sociétés à concevoir des graphiques avec des surfaces implicites. Combiné avec une utilisation artistique intelligente des textures procédurales, ils ont remporté un contrat de conception de vélo léger Disney pour le film Tron de 1982. Malheureusement, cette approche a rapidement échoué. Grâce à l'accélération du processeur et à l'étude de problèmes tels que «la suppression de la surface cachée», le nombre de triangles que vous pouviez afficher dans la scène augmentait rapidement, et pour les formes complexes, il était beaucoup plus facile pour les artistes de penser aux polygones et aux sommets qui peuvent être cliqués et déplacés, plutôt que utilisez des combinaisons de cubes et de cylindres.
Cela ne signifie pas que les surfaces implicites n'ont pas été utilisées dans
le processus de modélisation. Des techniques telles que
l'algorithme Catmell-Clark sont devenues une norme industrielle généralement acceptée au début des années 80, permettant aux artistes de créer des formes géométriques simples et organiques. Bien que jusqu'au début des années 2000, l'algorithme Catell-Clark n'était même pas défini comme une «surface implicite» pouvant être calculée à l'aide de l'équation. Ensuite, il a été considéré comme un algorithme itératif: un moyen de diviser les polygones en encore plus de polygones.
Les triangles ont envahi le monde, suivis des outils de création de contenu 3D. Les nouveaux développeurs et concepteurs de jeux vidéo et d'effets spéciaux dans les films ont été formés exclusivement sur des programmes de modélisation avec des maillages polygonaux, tels que Maya, 3DS Max et Softimage. Lorsque des «accélérateurs graphiques 3D» (GPU) sont apparus sur la scène à la fin des années 80, ils ont été développés spécifiquement pour accélérer le contenu existant: les triangles. Bien que les premiers projets de GPU, tels que le
NVIDIA NV1 , avaient un support matériel limité pour les courbes, il était bogué et a été rapidement retiré de la gamme de produits.
Cette culture s'étend principalement à ce que nous voyons aujourd'hui. Le modèle d'image PostScript 2D dominant a commencé avec un produit qui pouvait afficher des courbes en "temps réel". Dans le même temps, l'industrie 3D a ignoré les courbes difficiles à utiliser et s'est plutôt appuyée sur des solutions autonomes pour pré-convertir les courbes en triangles.
Les surfaces implicites sont retournées
Mais pourquoi les courbes 2D implicites pouvaient-elles être calculées en temps réel sur une imprimante dans les années 80, et les mêmes courbes 3D implicites sont encore très boguées au début des années 2000? Eh bien, l'algorithme de Catell-Clark est beaucoup plus compliqué que la courbe de Bézier. Les courbes de Bézier en 3D sont connues sous le nom de B-splines, et elles sont bien calculables, mais il y a un inconvénient à limiter la façon dont la grille est connectée. Des surfaces comme Catmell-Clark et NURBS permettent aux grilles connectées arbitrairement d'étendre les capacités des artistes, mais cela peut conduire à des polynômes de plus du quatrième degré, qui,
en règle générale, n'ont pas de solution analytique . Au lieu de cela, vous obtenez des approximations basées sur la séparation des polygones, comme cela se fait dans
OpenSubdiv de Pixar. Si quelqu'un trouve une solution analytique pour trouver les racines de Catmell - Clark ou NURBS, Autodesk lui paiera beaucoup. Par rapport à eux, les triangles semblent beaucoup plus agréables: il suffit de calculer
trois équations linéaires sur un plan , et vous avez une réponse facile.
... Mais que faire si nous n'avons pas besoin d'une solution exacte? C'est exactement la question que le graphiste
Iñigo Quilles a posée lors de ses recherches sur les surfaces implicites. Solution? Champs de distance signés (SDF) Au lieu de donner le point exact d'intersection avec la surface, ils disent à quelle distance vous en êtes. Semblable à la différence entre l'intégrale calculée analytiquement et l'intégrale d'Euler, si vous avez une distance à l'objet le plus proche, vous pouvez "marcher" autour de la scène, en demandant à tout moment donné à quelle distance vous êtes, et en passant cette distance. Ces surfaces ont insufflé une toute nouvelle vie à l'industrie à travers la démoscène et des communautés comme Shadertoy. Le hack de l'ancienne technique de modélisation MAGI nous apporte des découvertes incroyables, comme le
Surfer Boy de Killes, calculé avec une précision infinie comme surface implicite. Vous n'avez pas besoin de chercher les racines algébriques de Surfer Boy, vous sentez simplement comment la scène se déroule.
Bien sûr, le problème est que
seul un génie comme Killes peut créer un Surfer Boy. Il n'y a pas encore d'outils pour la géométrie SDF, tout le code est écrit manuellement. Cependant, étant donné le renouveau passionnant des surfaces implicites et les formes naturelles des courbes, il y a maintenant beaucoup d'intérêt pour cette technique. MediaMolecule
Dreams sur PS4 est un kit de création de contenu basé sur une combinaison de surfaces implicites. Dans le
processus, la plupart des graphiques traditionnels sont détruits et recréés . Il s'agit d'une approche prometteuse et les outils sont intuitifs et intéressants.
Oculus Medium et
unbound.io ont également fait de bonnes recherches sur cette question. Il s'agit certainement d'un aperçu prometteur de ce à quoi pourrait ressembler l'avenir des graphiques 3D et des outils de prochaine génération.
Mais certaines de ces approches sont moins adaptées à la 2D que vous ne le pensez. Dans les scènes de jeu 3D en général, en règle générale, les matériaux et textures avancés, mais peu de calculs de géométrie, comme le soulignent immédiatement de nombreux critiques et
vendeurs de produits douteux . Cela signifie que nous avons besoin de moins de lissage, car les silhouettes ne sont pas si importantes. Des approches comme 4x MSAA peuvent convenir à de nombreux jeux, mais pour les petites polices avec des couleurs unies, au lieu de
16 emplacements d'échantillons fixes, calculez plutôt la
zone exacte sous la courbe pour chaque pixel, ce qui vous donnera autant de résolution que vous le souhaitez.
La rotation de l'écran dans un jeu 3D produit des effets similaires à la
suppression saccadique , alors que le cerveau se reconfigure pour un nouveau look. Dans de nombreux jeux, cela permet de masquer les artefacts dans les effets de post-traitement, tels que
le lissage temporaire , sur lequel Dreams et unbound.io s'appuient fortement pour obtenir de bonnes performances de scène. Inversement, dans une scène 2D typique, nous n’avons pas cette perspective de luxe, donc essayer de l’utiliser fera bouillir les glyphes et les formes et trembler avec ces artefacts dans leur intégralité. La 2D semble différente et les attentes sont plus élevées. Lors du zoom, du panoramique et du défilement, la stabilité est importante.
Aucun de ces effets ne peut être implémenté sur le GPU, mais ils montrent une rupture radicale par rapport au contenu «3D», avec des priorités différentes. En fin de compte, le rendu de graphiques 2D est compliqué car il s'agit de formes - des lettres et des symboles exacts, plutôt que des matériaux et de l'éclairage, qui sont pour la plupart solides. À la suite de l'évolution, les accélérateurs graphiques ont décidé de ne pas calculer la géométrie implicite en temps réel, comme les courbes, mais se sont plutôt concentrés sur tout ce qui se passe à l'intérieur de ces courbes. Peut-être que si PostScript n'avait pas gagné, nous aurions un modèle d'image 2D sans courbes de Bézier comme principale exigence en temps réel.
Peut-être que dans un tel monde, au lieu de triangles, les meilleures représentations géométriques seraient utilisées, des outils de création de contenu axés sur les splines 3D et des GPU prenant en charge les courbes en temps réel au niveau matériel. Au final, c'est toujours amusant de rêver.