Pourquoi certains jeux utilisent-ils un modèle de tramage au lieu de l'alpha traditionnel pour la transparence?

24

Récemment, j'ai vu certains jeux 3D (par exemple :)GTA IV utiliser une sorte de tramage ordonné pour simuler la transparence / alpha.

Les polygones ne sont pas transparents comme d'habitude, mais rendent à la place une texture tramée qui passe progressivement de gauche à droite pour simuler la transparence:

entrez la description de l'image ici

L'effet n'est pas désagréable mais plutôt surprenant à voir au départ (vs mélange alpha traditionnel)

À l'exception de l'effet visuel esthétique qu'il produit, y a-t-il une raison pour laquelle certains jeux font cela (de meilleures performances, une économie de bande passante ou toute autre chose à laquelle je ne pense pas)?

J'ai cherché sur le web mais je n'ai rien trouvé sur cette technique.

tigrou
la source
Il est probable qu'il vient avec le style pixel art.
MichaelHouse
@ Byte56 Pixel art style? GTA IV? Hein?
Nathan Reed
@NathanReed Heh, pas dans GTA IV. OP mentionne le voir récemment dans les jeux.
MichaelHouse
1
Je trouve la technique plus agréable que le mélange alpha lors de la décoloration d'objets 3D trop proches du plan proche.
Andreas

Réponses:

27

Il s'agit d'une approche assez courante de la transparence dans les jeux qui utilisent un ombrage différé. Une transparence correcte ne fonctionne pas du tout avec un ombrage différé, car seules les données d'une seule surface (profondeur, vecteur normal, couleur, etc.) peuvent être stockées à chaque pixel, et une transparence appropriée implique plusieurs surfaces se chevauchant à un pixel, chacune nécessitant une indépendance éclairage.

Il existe plusieurs façons dont les moteurs de jeu peuvent gérer cela:

  • Utilisez un ombrage avant (éventuellement avec un modèle d'éclairage réduit) pour les surfaces transparentes et un ombrage différé pour les surfaces opaques. Les surfaces transparentes doivent être dessinées dans une passe séparée avec un tri de l'arrière vers l'avant.
  • Utilisez le tramage, plus communément appelé pointillé ou transparence de la porte moustiquaire, qui fonctionne avec un ombrage différé car il ne donne qu'une seule surface par pixel. Cela fonctionne particulièrement bien pour les transitions LOD, car elles se terminent généralement en un temps fixe, ce qui limite la durée de visibilité des pointillés. Cela ne fonctionne pas très bien pour, disons, des fenêtres en verre sur un bâtiment.
  • Il est également possible d'utiliser le pointillé mais d'appliquer ensuite un flou post-traitement qui recombine les pixels pointillés, donnant une approximation de la transparence appropriée. Volition fait cela dans Saints Row the Third (et peut-être certains de leurs autres jeux aussi), sous le nom de " éclairage inféré ". Cela peut sembler assez agréable, mais le flou post-traitement coûte cher.
  • Et bien sûr, il existe toutes les méthodes de transparence indépendantes de l' ordre , bien que je ne connaisse aucun jeu qui les utilise. Ils ne sont pour l'instant que destinés aux démonstrations technologiques.

On peut également utiliser une combinaison de ces approches, par exemple l'ombrage avant pour les fenêtres en verre et le pointillage pour les transitions LOD.

Il convient également de noter que certains jeux utilisent le pointillé pour les ombres douces. Il s'agit d'un compromis de performance; les ombres plus agréables nécessitent plus d'échantillons de texture dans le pixel shader, ce qui prend plus de temps, mais vous pouvez obtenir des résultats corrects en utilisant moins d'échantillons et en décalant leurs positions au hasard. Le décalage aléatoire produit l'effet de pointillage.

Nathan Reed
la source
je ne connaissais pas la technique d'ombrage différé (expliqué ici: en.wikipedia.org/wiki/Deferred_shading ). Ils parlent également de possibles problèmes alpha. Faites sens maintenant. Merci pour la réponse
tigrou
0

C'est un compromis de performance simple. Le mélange alpha nécessite une lecture à partir du tampon de couleurs actuel, alors que ce type de tramage est en écriture seule (ou en défausse uniquement, bien sûr).

Il est possible de mélanger cette technique avec le multi-échantillonnage, qui est alors appelé alpha à couverture .

sam hocevar
la source
De quel type de «compromis de performance» parlez-vous? Early-Z est désactivé si vous utilisez une défausse dans votre shader. Le mélange se fait sur le matériel et est rapide.
Tara
En fait, je viens de le tester dans mon moteur sur une scène correcte à haute résolution: l'activation ou la désactivation du mélange pour TOUTES les géométries n'a entraîné aucune différence de performances. La réponse de Nathan Reed est correcte, car le tramage est généralement utilisé dans le rendu différé.
Tara