Was ist in OpenGL das Rendern im Nullzustand?

10

Kürzlich erwähnte ich in einem Vorstellungsgespräch, dass ich mir selbst modernes OpenGL und Rendering mit Vertex-Pufferobjekten beigebracht habe, weil meine Universität zu diesem Zeitpunkt nur die Pipeline mit festen Funktionen mit Rendering im Sofortmodus unterrichtete. Der Interviewer unterbrach mich kurz, um zu sagen, dass VBOs effektiv durch etwas ersetzt wurden, das als "Zero State Rendering" bezeichnet wird, und ließ mich dann fortfahren.

Ich habe vergessen, später zu fragen, was das bedeutet, weil wir uns schnell verschiedenen Themen zugewandt haben und der Interviewer am Ende aufgrund eines vollen Terminkalenders keine Zeit mehr hatte.

Später suchte ich online nach "OpenGL Zero State" und "Zero State Rendering", ohne Ergebnisse, die relevant erschienen, meistens nur Dinge über den OpenGL State.

Die betreffende Organisation ist sehr stark forschungsbasiert. Besteht also die Möglichkeit, dass es sich um eine Erweiterung handelt, die derzeit nur wenig Unterstützung bietet, oder dass die verwendete Terminologie aufgrund ihrer Aktualität variiert?

usm
quelle
Sind Sie sicher, dass es sich um einen "Nullzustand" handelte, oder könnte es sich um etwas anderes mit dem Wort "Null" handeln? Ich vermute, er sprach von null Overhead: gdcvault.com/play/1020791
Lasse
Es besteht eine gute Chance, dass beim Überfliegen des Videos "Null belauscht" wird, obwohl ich zu 100% sicher bin, dass seine tatsächlichen Worte "Nullzustand" waren. Ich ging davon aus, dass er sich auf eine einzige neue Funktion bezog, die für Draw Calls verwendet wurde, anstatt das zu optimieren, was bereits verfügbar war. Ist "Zero Overhead" die neue, empfohlene Methode zum Zeichnen von Dingen in OpenGL?
usm
6
Könnte es "Null-Attribut" gewesen sein? Null-Attribut - Rendering (oft als „eigenschafts Rendering“) tut VBOs ersetzen.
Trevor Powell
5
Diese Frage ist nicht themenfremd, Terminologiefragen sind absolut zulässig.
1
Ich bin mir ziemlich sicher, dass Ihr Interviewer über das gesprochen hat, was allgemein als bindungsloses Rendern bekannt ist. Kurz gesagt, es entfällt die Notwendigkeit, einzelne Objekte an globale Handles zu binden, um sie zu ändern oder zu verwenden. Sie sollten bessere Ergebnisse erzielen, wenn Sie danach suchen.
Kevintodisco

Antworten:

9

Ihr Interviewer sprach mit eigenen Worten über bindless API. nVidia hat kürzlich nette Präsentationen über all das gemacht, was sie als direkten Statuszugriff bezeichnen ( 1 , 2 ). Dies ersetzt keine VBOs.


EDIT : Betrachten wir eigentlich Trevor Powells Vorschlag:

Dies scheint, als könnten sich einige Leute definitiv dafür entscheiden, VBOs zugunsten eines Renderings ohne Attribute zu löschen, indem sie Geometrie-Shader verwenden, die einheitliche Daten oder Texturen abrufen, wie in diesem Artikel erwähnt .

Ich kann sehen, wie sich jemand entscheiden könnte, seinen Motor auf voll attirubte-less umzustellen, aber ich würde einen solchen Schritt nicht dulden, wenn ich im Team wäre: Der Grund - wenn Sie diese Übersicht über die Pipeline sorgfältig lesen - ist der mit Attribut- weniger wird der Vertex-FIFO-Cache unbrauchbar, da er insgesamt übersprungen wird. Attributlos entfernt daher eine schöne Optimierungsmöglichkeit.

Dies erfordert natürlich ein Benchmarking, aber rein a priori klingt es nach einer schlechten Idee für eine generische Allzwecklösung.

v.oddou
quelle