Quando disabilitare l'interpolazione corretta della prospettiva (nessuna prospettiva)


13

In GLSL, l'interpolazione corretta in prospettiva degli attributi del vertice è l'impostazione predefinita: è possibile disabilitarla per specifici attributi del vertice usando il qualificatore noperspective . A parte gli shader post-elaborazione, non ho mai visto l'interpolazione corretta della prospettiva disabilitata - ci sono altri casi d'uso? Inoltre, fa davvero la differenza, dal punto di vista delle prestazioni?

Risposte:


15

I casi d'uso sono limitati solo dalla tua immaginazione! noperspectivesignifica che l'attributo è interpolato nel triangolo come se il triangolo fosse completamente piatto sulla superficie dello schermo. È possibile eseguire il rendering wireframe con antialiasing con questo: emettere una distanza dello spazio dello schermo sul bordo più vicino come noperspectivevariabile e utilizzarla come copertura nel pixel shader.

Oppure, se stai eseguendo un rendering non fotorealistico e desideri uno schema nello spazio dello schermo come i mezzitoni , puoi abilitare i noperspectivetuoi UV utilizzati per il texturing.

Fa differenza nelle prestazioni? Probabilmente, ma probabilmente non lo noterai (con la potenziale eccezione di hardware grafico meno potente). La maggior parte delle GPU sono composte da una serie di fasi della pipeline che si eseguono in parallelo e in un certo senso si paga solo il costo per la fase più costosa. Se la rasterizzazione è la parte più limitante per te, allora potresti notare una differenza dalle divisioni che stai saltando per pixel. Immagino che sia molto probabile quando si esegue il rendering di una mappa ombra o di una prepass profondità, ma quelli hanno anche il minor numero di attributi da interpolare.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.