Avec les taux de remplissage modernes et le rendu différé, l'abattage par occlusion est-il toujours pertinent?


10

Par exemple, bien que ce soit le GPU haut de gamme actuel, le GTX 980 a un taux de remplissage stupéfiant de 72,1 gigapixels / seconde, qui avec un rendu d'arrière-plan et / ou des contrôles de tampon Z, semble presque ridiculement grand, peut-être même à 4k résolutions. En ce qui concerne le nombre de polygones, les GPU modernes peuvent faire des dizaines à des centaines de millions de triangles texturés sans accroc si vous les regroupez et / ou les instanciez correctement.

Avec le rendu direct, la quantité de fragments sur lesquels les shaders s'exécuteront peut rapidement devenir écrasante, mais avec le rendu différé, le coût est généralement plus ou moins constant, selon la résolution, et nous avons depuis longtemps dépassé le point où la plupart des ombres ou les effets de post-traitement peuvent être effectués en temps réel en 1080p.

Quoi qu'il en soit, les facteurs limitants de nos jours sont le plus souvent le nombre d'appels, et les coûts d'ombrage, qui sont tous deux relativement faibles grâce à un rendu différé et à un lot de géométrie appropriés, donc avec cela à l'esprit, l'abattage est plus que de simples backfaces et out-of- frustrer les polygones d'un avantage substantiel? Les coûts (temps CPU / GPU, temps programmeur) ne dépasseraient-ils pas les avantages, la plupart du temps?


1080p est le nouveau pixel art.
Jessy

Réponses:


9

Oui, l'abattage d'occlusion en vaut toujours la peine.

Au minimum, un appel de dessin que vous avez ignoré en raison de l'abattage est un appel de dessin qui n'a pas besoin d'exécuter le vertex shader. Le nombre de triangles augmente aussi rapidement que les GPU commencent à prendre en charge plus de triangles, car pourquoi pas? Avec les architectures unifiées, les vertex shaders utilisent exactement le même matériel que les pixel shaders, de sorte que chaque vertex que vous ignorez en raison de l'abattage est plus de temps de calcul pour les éléments que vous pouvez voir. Sans parler de toutes les autres choses que vous ignorez (traitement des appels de tirage du processeur et lancement des tris suffisamment loin dans le pipeline pour que le rasterizer réalise qu'il n'a pas besoin de les masquer).

Il y avait une excellente présentation de deux studios Ubisoft au SIGGRAPH 2015 sur les pipelines de rendu pilotés par GPU. En surface, il s'agit de certaines des choses que vous avez mentionnées: le traitement par lots et l'instanciation, la réduction du nombre d'appels de tirage. Mais l'un des principaux avantages qu'ils retirent d'un pipeline piloté par GPU est une élimination des occlusions incroyablement fine: une meilleure élimination que vous ne le verriez normalement au niveau d'appel d'appel. Tout est au service d'une approche asymptotique de l'objectif: traiter uniquement ce que vous pouvez voir, ce qui signifie que ce que vous pouvez voir est plus beau.

(Aussi: pensez à la console, au mobile, à la VR et au bureau sans le dernier et le plus grand GPU que vous puissiez acheter. Même si tous vos tris disparaissent dans la gueule béante de votre haut de gamme) GPU en ligne, vous n'êtes peut-être pas la cible principale.)


Qu'en est-il lorsque les vertex shaders sont utilisés pour déformer les maillages? (ce qui, je suppose, est possible ... je suis un débutant en programmation graphique)
Llamageddon

De plus, avez-vous des articles sur l'abattage d'occlusion soutenu par GPU? Est-ce une fonction intégrée des GPU modernes, ou ..?
Llamageddon

@Llamageddon Sur les architectures GPU modernes, le vertex shader est toujours exécuté et est parfaitement capable de déformer les maillages, c'est-à-dire de transformer des sommets de manière non rigide. Un vertex shader plus cher qui fait plus de travail est, bien sûr, plus de travail qui sera ignoré par l'abattage. Je n'ai pas de documents sur l'abattage d'occlusion de GPU, le milieu universitaire ne semble pas très fasciné par cela. Ce n'est pas une fonction intégrée des GPU, juste une utilisation créative du calcul.
John Calsbeek

Oh, je voulais dire qu'en ce qui concerne l'élimination des mailles qui seront déformées? Les éliminez-vous après avoir exécuté les vertex shaders? Cela semble compliqué.
Llamageddon

@Llamageddon Généralement, vous les éliminez simplement contre un volume conservateur. Ou plusieurs volumes plus petits que vous déformez avec le maillage (par exemple, lors du dépouillement, vous pouvez attacher des volumes de réforme aux articulations).
John Calsbeek,

2

Cela dépend du style de jeu, de la quantité de réforme nécessaire. Par exemple, les tireurs à la première personne en profitent beaucoup, ayant beaucoup de choses dans le frustration à un moment donné, tandis que la vue aérienne RTS ne le fait pas puisque vous regardez efficacement un avion avec des choses sur ce plan. Même dans un RTS, il est toujours utile de faire un "rendu en profondeur uniquement" pour éliminer le dépassement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.