Quels sont les usages de la rastérisation logicielle dans les moteurs de jeux modernes?

9

Je prends un cours d'infographie ce trimestre. L'un de nos projets de laboratoire concerne la pixellisation des logiciels.

Maintenant, je planifie la proposition de projet et je réfléchis à la façon de la rendre utile pour d'autres personnes dans le développement de jeux contemporains.

Après quelques brèves recherches, j'ai appris une technique appelée élimination des occlusions de logiciels. Il effectue la rastérisation logicielle sur des tampons de différentes résolutions. Et nous pouvons interroger pour l'occlusion en utilisant les tampons z hiérarchiques.

Ma question : Quels sont les usages de la rastérisation logicielle dans les moteurs de jeu modernes en plus de la suppression d'occlusion logicielle?

TheBusyTypist
la source

Réponses:

4

À ma connaissance, l' abattage d'occlusion logicielle (que vous avez déjà mentionné) est à peu près la seule chose pour laquelle un rasterizer logiciel serait encore utilisé. Procworld utilise une technique similaire pour afficher ses énormes environnements de voxels.

La plupart des autres méthodes d'abattage comme l'abattage du tronc fonctionnent sur le processeur, mais, pour rester dans l'exemple, le test contre le tronc se produit au niveau de l'objet, probablement avec une boîte englobante alignée sur l'axe (AABB). Ce test d'intersection est beaucoup plus simple que d'utiliser un rasterizer logiciel complet.

Dans certains cas, la rastérisation logicielle peut être utilisée pour la sélection d'objets par la souris. Dans les moteurs de jeu, cela est souvent résolu en utilisant un moteur physique et une collision triangle-rayon avec un maillage simplifié.

Le processeur étant inactif en attendant le GPU dans les applications 3D interactives modernes, on pourrait penser qu'il pourrait être avantageux d'utiliser ces cycles inactifs pour effectuer un rendu sur le processeur à l'aide d'un rasterizer logiciel. Le problème ici, en plus du rendu horriblement complexe et alambiqué, sera souvent la bande passante. Les images rendues sur le processeur doivent être transférées vers le GPU avant d'être affichées, ce qui pourrait annuler l'avantage.

David Kuri
la source
0

Les jeux avec le concept de «brouillard de guerre» ont souvent une grille de visibilité pour définir l'état du brouillard de guerre à chaque endroit. La pixellisation est parfois utilisée pour modifier l'état de brouillard de guerre pour des formes spécifiques sur la grille.

Par exemple, utiliser une capacité qui révèle un cercle de la carte avec un rayon spécifique, ou peut-être quelque chose qui révèle un carré.

Pas strictement lié au graphisme, mais certainement une utilisation de la pixellisation dans les jeux modernes, et une technique que l'on voit utilisée dans les RTS.

D'autres données basées sur la grille dans les jeux pourraient utiliser la pixellisation pour des situations similaires.

Alan Wolfe
la source
-2

La pixellisation est un sujet énorme avec de nombreuses parties et je ne suis pas un programmeur de moteur, mais je ferai de mon mieux pour donner une sorte d'aperçu (ce sera loin d'être une liste complète!).

Certaines choses très basiques de bas niveau comprennent:

  • Frustrum culling: jette tout ce qui se trouve en dehors du frustrum de la caméra (pensez-y comme la zone de visualisation de la caméra).
  • Élimination de la face arrière: jetez tous les polygones qui ne dirigent pas vers la caméra.
  • Algorithme du peintre: dessinez les objets par ordre de distance par rapport à la caméra, commencez par les objets éloignés, puis allez vers la caméra.

Les choses plus avancées utilisées dans les jeux incluent des choses comme:

  • Tesselation : en fait à peu près comme LOD (voir ci-dessous), mais maintenant les dernières versions de DirectX ont introduit la tesselation, qui fournit une division ou une réduction automatique du maillage. Cela améliore considérablement les performances graphiques, car vous pouvez obtenir des polys si vous en avez besoin et vous en débarrasser si vous n'en voulez plus.
  • LOD : un système de niveau de détail remplace le maillage d'un objet en fonction de la distance entre l'objet et la caméra. par exemple, votre personnage a trois mailles: une avec 10 000, une avec 5 000 et une autre avec 1 000 polys. si vous restez juste devant lui, le maillage haute résolution (10000 polys) est affiché, si vous vous éloignez, après 100m le personnage est remplacé par le maillage moyen et après encore 100m il est remplacé par le maillage basse résolution. Au lieu de remplacer le maillage, vous pouvez le réduire, mais cela serait plus complexe à coder.
  • partitions d'espace binaire : l'espace est divisé en deux volumes. cela sera répété jusqu'à ce que vous atteigniez votre objectif, par exemple jusqu'à ce que l'espace ne contienne que des polys qui devraient être dessinés à l'écran
  • Portails et cellules : (alias Portal culling) est utilisé dans les scènes d'intérieur et / ou les tireurs à la première personne. La scène est divisée en cellules (par exemple les pièces d'un bâtiment) qui sont connectées à des portails (par exemple des portes). vous pouvez définir des portails ouverts et fermés.

En supposant que vous ayez une compréhension de base du pipeline graphique, j'ai essayé de me concentrer sur la pixellisation. vous pouvez également jeter un œil à l'éclairage et à l'ombrage ou à d'autres choses ..

Celles-ci incluent seulement quelques technologies possibles à inclure dans votre projet. comme je n'ai pas assez de réputation sur stackexchange, je ne peux pas fournir beaucoup de liens, mais vous trouverez tout ça dans google :)

Micha Grandel
la source
2
La question concerne la rastérisation logicielle (lire: CPU). Certaines des informations que vous avez fournies concernent la pixellisation en général, certaines techniques - dans mon livre - n'ont rien à voir avec la pixellisation. Pourriez-vous préciser dans votre réponse comment les techniques utilisent ou bénéficient de la rastérisation logicielle?
David Kuri