Rendu de jeu 3D: introduction


Vous jouez le nouveau Call of Mario: Deathduty Battleyard sur votre PC de jeu parfait. Regardez le magnifique moniteur 4K ultra-large, admirant le paysage magnifique et les détails complexes. Vous êtes-vous déjà demandé comment les graphiques apparaissent à l'écran? Vous êtes-vous déjà demandé comment le jeu fait que l'ordinateur vous montre tout cela?

Bienvenue dans notre visite du rendu de jeu 3D: un voyage pour les débutants, à partir duquel vous apprendrez à créer un cadre de base à l'écran.



Chaque année, des centaines de nouveaux jeux pour smartphones, consoles et PC sortent. La variété des formats et des genres est très grande, mais l'un d'eux, peut-être, est mieux maîtrisé - ce sont des jeux 3D. Quel jeu était le premier - une question discutable, et un rapide coup d'œil à la base du Livre Guinness des Records a donné plusieurs résultats. Il peut être considéré comme le premier jeu Ultimate Knight Lore, sorti en 1984, mais à proprement parler, les images de ce jeu étaient en deux dimensions - aucune information n'a été utilisée en trois dimensions.

Donc, si nous voulons vraiment comprendre comment les jeux 3D modernes forment une image, nous devons commencer avec un autre exemple: Winning RunNamco, sorti en 1988. C'était peut-être le premier jeu complètement en trois dimensions utilisant des technologies qui ne sont pas trop différentes des modernes. Bien sûr, tous les jeux dont l'âge a dépassé 30 ans ne sont pas du tout les mêmes que, disons, Codemasters F1, sorti en 2018. Mais les schémas de circuits sont similaires.


Dans cet article, nous examinerons le processus de génération d'une image de base pour un moniteur ou un téléviseur à l'aide d'un jeu 3D. Commençons par le résultat final et demandons-nous: "Qu'est-ce que je regarde?"

Ensuite, nous analysons chaque étape de la formation de l'image que nous voyons. Au cours de l'action, nous considérerons des concepts tels que les sommets et les pixels, les textures et les passes, les tampons et les ombres, les logiciels et les instructions. Nous découvrirons comment la carte vidéo est impliquée dans le processus et pourquoi elle est nécessaire. Après cela, vous pouvez regarder vos jeux et PC sous un nouveau jour et commencer à apprécier davantage les graphiques vidéo.

Options de cadre: pixels et couleurs


Commençons le jeu 3D, comme exemple nous prendrons la société Crytek sortie en 2007 Crysis . Ci-dessous, une photo de l'écran sur lequel le jeu est affiché:


Cette image est généralement appelée un cadre . Mais que regardons-nous exactement? Nous utilisons un objectif macro:


Malheureusement, l'éblouissement et le rétroéclairage externe du moniteur gâchent la photo, mais si nous l'améliorons un peu, nous obtenons


Nous voyons que le cadre du moniteur est constitué d'une grille d'éléments colorés séparés, et si nous les augmentons encore plus, nous remarquerons que chaque élément est un bloc de trois pièces. Un tel bloc est appelé pixel (pixel, abréviation d'élément d'image). Dans la plupart des moniteurs, les pixels sont peints en utilisant trois couleurs: rouge, vert et bleu (RVB, rouge-vert-bleu). Pour afficher un nouveau cadre, vous devez traiter une liste de milliers, sinon des millions, de valeurs RVB et les enregistrer dans une mémoire à laquelle le moniteur a accès. Ces fragments de mémoire sont appelés tampons , c'est-à-dire que le moniteur reçoit le contenu du tampon de trame .

C'est le point final de tout le processus, alors maintenant nous allons aller dans la direction opposée à son début. Le processus est souvent décrit par le terme rendu (rendu), mais en réalité, il s'agit d'une séquence d'étapes distinctes reliées les unes aux autres, qui diffèrent essentiellement par essence. Imaginez que vous êtes un chef dans un restaurant étoilé Michelin: le résultat final est une assiette de plats délicieux, mais combien doit être fait pour y parvenir. Comme pour la cuisson, des ingrédients de base sont nécessaires pour le rendu.

Éléments de construction nécessaires: modèles et textures


Les principaux éléments constitutifs de tout jeu 3D sont des ressources visuelles qui remplissent le monde à dessiner. Les films, les émissions de télévision et les théâtres ont besoin d'acteurs, de costumes, d'accessoires, de décors, d'éclairage - la liste est assez longue. La même chose avec les jeux 3D. Tout ce que vous voyez dans le cadre généré a été développé par des artistes et des experts en modélisation. Pour le rendre plus clair, tournons-nous vers la vieille école et jetons un œil au modèle Quake II de la société id Software:


Le jeu est sorti il ​​y a plus de 20 ans. À cette époque, Quake II était un chef-d'œuvre technologique, bien que, comme dans n'importe quel jeu de ces années, les modèles semblent très primitifs. Mais il est facile de démontrer en quoi ils consistent.


Dans l'image précédente, nous voyons un mec angulaire composé de triangles connectés les uns aux autres. Chaque coin est appelé sommet ou sommet. Chaque sommet agit comme un point dans l'espace et est décrit par au moins trois nombres: les coordonnées x, y, z . Cependant, cela ne suffit pas pour un jeu 3D, donc chaque sommet a des valeurs supplémentaires: couleur, direction de la face avant (oui, un point ne peut pas avoir de face avant ... lisez la suite!), Luminosité, degré de transparence, etc.


Les sommets ont toujours un ensemble de valeurs associées aux textures. Ce sont des photos des «vêtements» portés par le mannequin. Mais comme l'image est plate, la carte doit contenir une vue de toutes les directions d'où nous pouvons regarder le modèle. L'exemple de Quake II illustre une approche simple: des images de l'avant, de l'arrière et des côtés (bras). Et les jeux 3D modernes fonctionnent déjà pour les modèles avec de nombreuses cartes de texture, chacune contenant de nombreux détails, sans aucun espace vide entre eux. Certaines cartes ne ressemblent pas à des matériaux ou à des propriétés; elles fournissent plutôt des informations sur la manière dont la lumière est réfléchie par la surface. Chaque sommet a un ensemble de coordonnées dans la carte de texture associée au modèle, de sorte qu'il peut être «étiré» sur le sommet. Cela signifie que lorsque vous déplacez le sommet, la texture se déplace avec lui.

Dans le monde tridimensionnel rendu, tout ce que vous voyez commence par un ensemble de sommets et de textures. Ils sont chargés dans des tampons de mémoire connectés les uns aux autres. Le tampon de sommet ( tampon de sommet) contient des textures et des portions de mémoire allouées pour le rendu ultérieur. Le tampon de commande contient une liste d'instructions sur ce qu'il faut faire avec ces ressources.

Tout cela forme le cadre nécessaire qui sera utilisé pour créer la grille finale de pixels colorés. Dans certains jeux, il s'agit d'une énorme quantité de données, car il faut trop de temps pour recréer les tampons pour chaque nouvelle image. Les jeux stockent également dans des tampons les informations nécessaires pour former un monde entier qu'un joueur peut voir, ou une partie suffisamment grande de celui-ci, mettre à jour si nécessaire. Par exemple, dans un jeu de course comme F1 2018, tout sera stocké dans une grande collection de tampons. Et dans un jeu à monde ouvert comme Skyrim, les données seront chargées dans des tampons et supprimées de celles-ci lorsque la caméra se déplace dans le monde.

Configuration de la scène: sommets


Ayant toutes les informations visuelles, le jeu commencera alors le processus d'affichage visuel. La scène commence par défaut dans une certaine position, avec la disposition de base des modèles, des sources lumineuses, etc. Ce sera l'écran «zéro» - le point de départ pour les graphiques. Il n'est souvent pas affiché, il est simplement traité par le système. Pour illustrer ce qui se passe dans la première étape du rendu, nous utiliserons l'outil en ligne Rendu en temps réel . Créons le «jeu» le plus simple: une boîte posée au sol.


Cet objet contient 8 sommets, chacun étant décrit par une liste de nombres. Les sommets forment un modèle composé de 12 triangles. Chaque triangle, et même l'objet lui-même, est appelé une primitive . Au fur et à mesure que les primitives se déplacent, tournent et se mettent à l'échelle, les nombres passent par des chaînes d'opérations mathématiques et sont mis à jour.


Notez que les numéros de points du modèle ne changent pas. Ces chiffres montrent exactement où se trouve le modèle dans le monde virtuel. La prise en compte des calculs mathématiques correspondants dépasse le cadre de l'article, nous dirons seulement que tous les objets sont d'abord placés là où ils devraient être. Et puis la coloration commence.


Prenez un autre modèle qui a 10 fois plus de sommets que la case précédente. Dans le processus de peinture le plus simple, la couleur de chaque sommet est prise, puis les changements de couleur d'une surface à l'autre sont calculés. C'est ce qu'on appelle l' interpolation .


L'augmentation du nombre de sommets dans le modèle vous permet non seulement de créer des objets plus réalistes, mais améliore également le résultat de l'interpolation des couleurs.


À ce stade du rendu, l'effet des sources de lumière dans la scène peut être calculé en détail. Par exemple, comment les matériaux du modèle reflètent la couleur. Ces calculs doivent tenir compte de la position et de la direction de la caméra, ainsi que de la position et de la direction des sources lumineuses.


Pour ce faire, il existe différentes méthodes mathématiques, certaines simples, d'autres très complexes. Dans l'illustration ci-dessus, nous voyons que l'objet de droite semble beaucoup plus joli et plus réaliste, mais il faut plus de travail pour le dessiner.

Il est important de noter que maintenant nous comparons des objets avec un petit nombre de pics avec les jeux les plus modernes. Faites défiler vers le haut et examinez attentivement l'image de Crysis: cette scène affiche plus d'un million de triangles. En utilisant l' exemple de référence Unigine Valley , vous pouvez comprendre combien de triangles sont utilisés dans les jeux modernes.


Chaque objet de cette image se compose de sommets connectés les uns aux autres, qui sont formés par les primitives constituées de triangles. Le repère peut être exécuté en mode filaire, dans lequel les bords de chaque triangle sont indiqués par des lignes blanches.


Comme vous pouvez le voir, tout objet est constitué de triangles, et pour chaque triangle l'emplacement, la direction et la couleur sont calculés. Cela prend en compte l'emplacement des sources de lumière, ainsi que l'emplacement et la direction de la caméra. Toutes les modifications associées aux sommets doivent être transférées au jeu afin qu'il dispose de toutes les informations nécessaires pour dessiner la trame suivante - cela se fait en mettant à jour le tampon de sommets.

Étonnamment, ce n'est pas la partie la plus difficile du rendu, avec le bon matériel, tous les calculs sont effectués en quelques millièmes de seconde! Passez.

Perdre la dimension: pixellisation


Après avoir traité tous les sommets et terminé le placement de tous les objets dans notre scène tridimensionnelle, le processus de rendu passe à une étape très importante. Jusqu'à présent, le jeu était vraiment tridimensionnel, mais le cadre final ne l'est plus: au cours d'une série de changements, le monde vu se transforme de l'espace 3D, composé de milliers de points connectés, en une image bidimensionnelle, composée de pixels colorés. Dans la plupart des jeux, cette procédure comprend au moins deux phases: l'espace d'écran de projection ( projection d'espace d' écran) et la tramage .


De retour à notre outil de rendu Web, il nous montrera comment le volume du monde virtuel se transforme en une image plate. La caméra est montrée à gauche, les lignes qui en émanent créent une pyramide tronquée de visibilité (tronc), et tout ce qui y pénètre peut être affiché dans le cadre final. La section perpendiculaire de la pyramide est appelée la fenêtre - c'est ce qui sera affiché sur le moniteur. De nombreux calculs mathématiques sont utilisés pour projeter tout le contenu de la pyramide dans la zone de visualisation, en tenant compte de la perspective de la caméra.

Bien que les graphiques dans la zone de visualisation soient bidimensionnels, les données sont toujours vraiment tridimensionnelles, et plus tard, ces informations seront utilisées pour calculer quelles primitives sont visibles pour nous et lesquelles sont cachées. Cela peut être étonnamment difficile à faire, car les primitives peuvent projeter des ombres visibles pour nous, même si les primitives elles-mêmes nous sont cachées. Retirez-nous cachés les primitives appelées le largage (abattage). Cette opération peut affecter de manière significative la vitesse de rendu de l'ensemble du cadre. Une fois le tri en primitives visibles et cachées terminé, ainsi que les triangles supprimés en dehors des limites de la pyramide de visibilité, la dernière étape de la tridimensionnalité est terminée et le cadre est complètement bidimensionnel à l'aide de la rastérisation.


L'illustration ci-dessus montre un exemple très simple d'une trame contenant une primitive. La grille de pixels est superposée à la forme géométrique et les pixels correspondants sont marqués pour un traitement ultérieur. Le résultat final ne ressemble pas trop au triangle d'origine, car nous n'utilisons pas suffisamment de pixels. À cet égard, le problème de l' aliasing (aliasing, stepping lines) se pose , qui est résolu de différentes manières. Par conséquent, un changement dans la résolution du jeu (le nombre total de pixels dans le cadre) affecte tellement le résultat final: plus de pixels améliorent non seulement l'affichage des formulaires, mais réduisent également l'effet d'un aliasing indésirable.

Après avoir terminé cette partie du rendu, nous passons à la prochaine grande étape: la coloration finale de tous les pixels du cadre.

Portez la lumière: étape pixel


Nous sommes arrivés à l'étape la plus difficile du rendu. Une fois, il s'agissait de tirer sur des modèles de vêtements (textures) en utilisant des informations sur les pixels (obtenues à l'origine à partir des sommets). Cependant, le fait est que, bien que les textures et le cadre lui-même soient bidimensionnels, cependant, le monde virtuel au stade du traitement des vertex a été déformé, décalé et modifié. Pour tenir compte de tout cela, des calculs mathématiques supplémentaires sont utilisés, cependant, de nouveaux problèmes peuvent être caractéristiques du résultat.


Dans cette illustration, une texture en damier est appliquée au plan. Il y a une ondulation visuelle désagréable, qui est exacerbée par l'aliasing. Pour résoudre ce problème, utilisez des versions plus petites des cartes de texture ( mappages multiples , mipmaps), la réutilisation des informations de ces textures ( filtrage , filtrage) et des calculs mathématiques supplémentaires. L'effet est perceptible:


Pour n'importe quel jeu, c'était vraiment une étape difficile, mais aujourd'hui, ce n'est plus le cas, car en raison de la large utilisation d'autres effets visuels, tels que les reflets et les ombres, le traitement des textures est devenu une étape relativement petite du processus de rendu. Lorsque vous jouez à des résolutions élevées, la charge aux stades de la pixellisation et du traitement des pixels augmente, mais cela affecte relativement peu le traitement des sommets. Bien que la coloration primaire due aux sources de lumière soit effectuée au stade du sommet, des effets d'éclairage plus sophistiqués peuvent être appliqués.


Dans l'illustration précédente, nous ne voyons plus de changements de couleur entre les différents triangles, ce qui nous donne la sensation d'un objet lisse et transparent. Bien que dans cet exemple, la sphère se compose du même nombre de triangles que la sphère verte dans l'illustration ci-dessus, à la suite de la procédure de coloration des pixels, il nous semble que beaucoup plus de triangles sont utilisés.


Dans de nombreux jeux, la phase de pixel doit être exécutée plusieurs fois. Par exemple, pour qu'un miroir ou une surface de l'eau reflète le monde environnant, ce monde doit d'abord être dessiné. Chaque passage est appelé passe (passe), et pour obtenir l'image finale de chaque image, vous pouvez facilement utiliser quatre passes ou plus.

De plus, vous devez parfois exécuter à nouveau la scène du sommet pour redessiner le monde à partir d'un autre point et utiliser cette image dans une scène qui est montrée au joueur. Pour ce faire, utilisez le rendu à tampon unique (cibles de rendu) - utilisez des tampons qui agissent comme stockage final pour le cadre, mais peuvent également agir comme des textures avec une passe différente.

Pour évaluer la complexité de la phase de pixel, vous pouvez lireanalyse de trame dans Doom 2016 . Vous serez choqué par le nombre d'opérations nécessaires pour créer une image.


Tout le travail effectué pour créer le cadre doit être enregistré dans le tampon, que ce soit le résultat final ou intermédiaire. En général, le jeu utilise à la volée au moins deux tampons pour l'affichage final: un pour le "travail en cours" et le second tampon attend soit l'accès à un moniteur, soit est en cours d'affichage. Vous avez toujours besoin d'un tampon d'écran dans lequel le résultat du rendu sera enregistré, et lorsque tous les tampons sont pleins, vous devez continuer et créer un nouveau tampon. À la fin du travail avec la trame, une commande simple est donnée, les tampons de trame finaux sont échangés, le moniteur reçoit la dernière trame rendue et le processus de rendu de la trame suivante démarre.


Dans cette image d' Assassin's Creed Odyssey, nous voyons le contenu du tampon d'image terminé. Ce contenu peut être représenté dans un tableau qui ne contient que des chiffres. Ils sont envoyés sous forme de signaux électriques vers un moniteur ou un téléviseur, et les pixels de l'écran changent leurs valeurs. Nos yeux voient une image plate et solide, mais notre cerveau l'interprète comme tridimensionnelle. Il y a tellement de travail caché dans les coulisses d'un seul coup dans le jeu qu'il vaut la peine de voir comment les programmeurs peuvent le gérer.

Gestion des processus: API et instructions


Pour comprendre comment exécuter le jeu et gérer tous les calculs, sommets, textures, éclairage, tampons, etc. - c'est une tâche énorme. Heureusement, aidez-nous dans ces interfaces de programmation (interface de programmation d'application, API).

Les API de rendu réduisent la complexité globale en offrant des structures, des règles et des bibliothèques de logiciels qui permettent des instructions simplifiées indépendantes du matériel. Prenez n'importe quel jeu 3D sorti sur PC au cours des trois dernières années: il a été créé à l'aide de l'une des trois API populaires - Direct3D, OpenGL ou Vulkan. Il existe d'autres développements similaires, en particulier dans le segment mobile, mais dans cet article, nous parlerons des trois mentionnés.


Malgré les différences dans les noms des instructions et des opérations (par exemple, un bloc de code pour traiter les pixels dans DirectX est appelé pixel shader, et dans Vulkan il est appelé fragment shader), le résultat final ne diffère pas, plus précisément, il ne devrait pas différer.

La différence se manifestera dans l'équipement utilisé pour le rendu. Les instructions générées par l'API doivent être converties en commandes matérielles qui sont traitées par les pilotes de périphérique. Et les fabricants d'équipement doivent consacrer beaucoup de ressources et de temps à leurs pilotes pour effectuer cette conversion aussi rapidement et correctement que possible.


Par exemple, la première version bêta de The Talos Principle (2014) a pris en charge les trois API mentionnées. Pour montrer comment les résultats de différentes combinaisons de pilotes et d'interfaces peuvent différer, nous avons exécuté le test de référence intégré standard en définissant la résolution sur 1080p et les paramètres de qualité maximale. Le processeur Intel Core i7-9700K fonctionnait sans overclocking, la carte vidéo Nvidia Titan X (Pascal), RAM - 32 Go de RAM DDR4.

  • DirectX 9 = une moyenne de 188,4 images / s.
  • DirectX 11 = une moyenne de 202,3 images / s.
  • OpenGL = 87,9 images / s en moyenne.
  • Vulkan = une moyenne de 189,4 images / s.

Nous n'analyserons pas les résultats, et ils ne disent certainement pas que certaines API sont «meilleures» que les autres (n'oubliez pas, la version bêta du jeu a été testée). Nous dirons seulement que la programmation pour différentes API est associée à diverses difficultés, et à tout moment, les performances seront également différentes. En général, les développeurs de jeux choisissent l'API avec laquelle ils ont le plus d'expérience et optimisent leur code pour cela. Parfois, le terme moteur est utilisé pour décrire le code responsable du rendu, mais à proprement parler, le moteur est un ensemble complet d'outils qui traite tous les aspects du jeu, pas seulement les graphiques.

Ce n'est pas si facile de créer un programme à partir de zéro qui rend un jeu 3D. Par conséquent, aujourd'hui, dans de nombreux jeux, des systèmes tiers sous licence sont utilisés (par exemple, Unreal Engine) Pour évaluer leur complexité, ouvrez le moteur open source de Quake et affichez le fichier gl_draw.c: il contient des instructions pour différentes opérations de rendu et ne reflète qu'une petite partie de l'ensemble du moteur. Mais Quake est sorti il ​​y a plus de 20 ans, et l' ensemble du jeu (y compris toutes les ressources visuelles, les sons, la musique, etc.) prend 55 Mo. À titre de comparaison, dans Far Cry 5, seuls les shaders occupent 62 Mo.

Le temps est le plus important: utiliser le bon équipement


Tout ce qui précède peut être calculé et traité par le processeur de n'importe quel système informatique. Les processeurs modernes de la famille x86-64 prennent en charge toutes les opérations mathématiques nécessaires et contiennent même des sous-systèmes distincts pour cela. Cependant, la tâche de rendu d'une seule image nécessite de nombreux calculs répétés et une parallélisation importante du travail. Les processeurs centraux ne sont pas adaptés à cela, car ils sont créés pour résoudre le plus large éventail possible de tâches. Les processeurs spécialisés pour le calcul graphique sont appelés GPU (unités de traitement graphique). Ils sont créés pour DirectX, OpenGL et Vulkan.

Nous utiliserons un benchmark qui vous permet de rendre une image à l'aide d'un processeur central ou d'un équipement spécialisé - V-ray NEXTSociétés du Groupe Chaos. En fait, il fait le lancer de rayons plutôt que le rendu, mais la plupart des opérations numériques ici dépendent également du matériel.


Passons la référence en trois modes: uniquement le processeur central, uniquement le processeur graphique et une combinaison des deux processeurs:

  • CPU seul = 53 millions de rayons
  • GPU seul = 251 millions de rayons
  • La combinaison des deux processeurs = 299 millions de rayons

L'unité de mesure peut être ignorée, l'essence est cinq fois la différence. Mais encore, ce test n'est pas trop lié aux jeux, alors tournons-nous vers le benchmark à l'ancienne Futuremark 3DMark03 . Exécutons un test Wings of Fury simple avec un calcul forcé de tous les vertex shaders (c'est-à-dire avec un ensemble complet d'opérations pour déplacer et colorer des triangles) à l'aide du processeur central.


Le résultat ne devrait pas vous surprendre:

  • Processeur central = 77 images / s en moyenne.
  • GPU = 1580 images / s en moyenne.

Lorsque tous les calculs avec les sommets sont effectués par le processeur central, il faut en moyenne 13 ms pour restituer et afficher chaque image. Et lorsque vous utilisez un processeur graphique, ce chiffre tombe à 0,6 ms - plus de 20 fois plus rapide.

La différence augmente encore plus si vous exécutez le test de référence le plus difficile - Mère Nature. Le processeur central a produit 3,1 images / s insignifiantes! Et le processeur graphique a grimpé à 1388 images / s: presque 450 fois plus vite. Veuillez noter: 3DMark03 est sorti 16 en arrière, et dans le test sur le processeur central, seuls les sommets sont traités, le processeur graphique prend toujours en charge la pixellisation et l'étape de pixel. Imaginez si la référence était moderne et la plupart des opérations ont été effectuées par programme?


Essayons maintenant à nouveau le benchmark Unigine Valley , les graphiques qu'il traite sont très similaires à ceux utilisés dans des jeux comme Far Cry 5. Il existe également un moteur de rendu entièrement logiciel en plus du standard DirectX 11. En fonctionnant sur un processeur vidéo, nous avons obtenu un résultat moyen de 196 images / s . Et la version du logiciel? Après quelques plantages, un puissant PC de test a généré une moyenne de 0,1 images / s. - presque deux mille fois plus lentement.

La raison d'une telle différence réside dans les calculs mathématiques et le format de données utilisé dans le rendu 3D. Chaque cœur du CPU est équipé de modules à virgule flottante. Le i7-9700K contient 8 cœurs, chacun avec deux de ces modules. Bien que l'architecture des modules dans Titan X soit différente, les deux types peuvent effectuer les mêmes calculs avec des données du même format. Cette carte vidéo possède plus de 3 500 modules pour effectuer des calculs comparables, et bien que leur fréquence d'horloge soit bien inférieure à celle du processeur central (1,5 GHz et 4,7 GHz), cependant, le processeur vidéo prend le nombre de modules.

Bien que le Titan X ne soit pas une carte graphique de masse, même un modèle économique dépassera tout processeur central. Par conséquent, tous les jeux 3D et toutes les API sont conçus pour un équipement spécialisé. Vous pouvez télécharger V-ray , 3DMark ou n'importe quel benchmark Unigine et testez votre système - voyez par vous-même dans quelle mesure les processeurs vidéo sont adaptés au rendu des graphiques dans les jeux.

Les derniers mots


Ce fut une courte digression dans le processus de création d'une seule image dans les jeux 3D, d'un point dans l'espace à une image colorée sur un moniteur.

En fait, tout le processus fonctionne uniquement avec des chiffres. Cependant, beaucoup de choses sont restées en dehors du champ d'application de l'article. Nous n'avons pas pris en compte les calculs mathématiques spécifiques de l'algèbre linéaire euclidienne, de la trigonométrie et des calculs différentiels effectués par les vertex et les pixel shaders. Nous n'avons pas non plus parlé du traitement des textures à l'aide d'un échantillonnage statistique. J'ai omis des effets visuels sympas comme bloquer la lumière ambiante dans l'espace de l'écran, réduire les interférences avec le lancer de rayons, en utilisant la plage dynamique étendue et le lissage temporel.

Et la prochaine fois que vous lancerez un jeu 3D moderne, nous espérons que non seulement vous regarderez les graphiques avec des yeux différents, mais que vous voudrez également en savoir plus à ce sujet.

All Articles