Wann die perspektivisch korrekte Interpolation deaktiviert werden soll (keine Perspektive)

13

In GLSL ist die perspektivisch korrekte Interpolation von Scheitelpunktattributen die Standardeinstellung. Sie kann sie für bestimmte Scheitelpunktattribute mithilfe des nicht- perspektivischen Qualifikationsmerkmals deaktivieren . Abgesehen von Nachbearbeitungs-Shadern habe ich die perspektivisch korrekte Interpolation noch nie deaktiviert gesehen - gibt es andere Anwendungsfälle? Macht es überhaupt einen Unterschied in Bezug auf die Leistung?

gemse
quelle

Antworten:

15

Anwendungsfälle sind nur durch Ihre Vorstellungskraft begrenzt! noperspectivebedeutet, dass das Attribut über das Dreieck interpoliert wird, als ob das Dreieck auf der Oberfläche des Bildschirms vollständig flach wäre. Sie können damit ein Antialias-Wireframe-Rendering durchführen : Geben Sie einen Bildschirmabstand zur nächsten Kante als noperspectiveVariation aus und verwenden Sie diesen als Abdeckung im Pixel-Shader.

Oder wenn Sie nicht-fotorealistisches Rendering tun und wollen ein Muster in Bildschirm-Raum wie Halbtonverfahren , können Sie ermöglichen noperspectiveauf Ihrem UVs zur Texturierung verwendet.

Macht es einen Leistungsunterschied? Wahrscheinlich, aber Sie werden es wahrscheinlich nicht bemerken (mit der möglichen Ausnahme von weniger leistungsfähiger Grafikhardware). Die meisten GPUs bestehen aus einer Reihe von Pipeline-Stufen, die parallel ausgeführt werden. In gewissem Sinne zahlen Sie nur die Kosten für die teuerste Stufe. Wenn die Rasterung für Sie am einschränkendsten ist, sehen Sie möglicherweise einen Unterschied zu den Unterteilungen, die Sie pro Pixel überspringen. Ich würde vermuten, dass dies am wahrscheinlichsten ist, wenn eine Schattenkarte oder eine Tiefenvorübergabe gerendert wird, aber diese haben auch die wenigsten Attribute, die interpoliert werden müssen.

John Calsbeek
quelle