Quand désactiver l'interpolation correcte de la perspective (sans perspective)


13

Dans GLSL, l'interpolation correcte en perspective des attributs de sommet est le paramètre par défaut - on peut la désactiver pour des attributs de sommet spécifiques en utilisant le qualificatif noperspectif . À part les shaders de post-traitement, je n'ai jamais vu l'interpolation correcte de perspective désactivée - y a-t-il d'autres cas d'utilisation? En outre, cela fait-il même une différence en termes de performances?

Réponses:


15

Les cas d'utilisation ne sont limités que par votre imagination! noperspectivesignifie que l'attribut est interpolé sur le triangle comme si le triangle était complètement plat sur la surface de l'écran. Vous pouvez effectuer un rendu filaire anti-crénelé avec ceci: restituez une distance écran-espace au bord le plus proche comme noperspectivevariable et utilisez-la comme couverture dans le pixel shader.

Ou si vous effectuez un rendu non photoréaliste et que vous souhaitez un motif dans l'espace d'écran comme le tramage , vous pouvez activer noperspectivevos UV utilisés pour la texturation.

Cela fait-il une différence de performance? Probablement, mais vous ne le remarquerez probablement pas (à l'exception potentielle d'un matériel graphique moins puissant). La plupart des GPU sont composés d'une série d'étapes de pipeline qui s'exécutent en parallèle, et dans un certain sens, vous ne payez que le coût de l'étape la plus chère. Si la pixellisation est la partie la plus limitante pour vous, alors vous pouvez voir une différence par rapport aux divisions que vous sautez par pixel. Je suppose que c'est le plus probable lors du rendu d'une carte d'ombre ou d'un pré-profondeur, mais ceux-ci ont également le moins d'attributs à interpoler.

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.