Wenn Grafiken für einen großen Betrachtungswinkel gerendert werden (z. B. ein sehr großer Fernseher oder ein VR-Headset), kann der Betrachter nicht auf das gesamte Bild fokussieren, sondern nur auf einen Teil davon. (Tatsächlich ist dies auch bei Bildschirmen mit normaler Größe der Fall.)
In Kombination mit einer Möglichkeit, die Augen des Betrachters zu verfolgen (was in VR wahrscheinlich am besten funktioniert), könnten Sie dies theoretisch ausnutzen und die Grafiken mit zunehmend weniger Details und Auflösung vom Fokus des Betrachters entfernen, um die Leistung zu steigern, ohne die wahrgenommene Qualität zu verlieren.
Gibt es Techniken dafür oder sind sie heute in der Entwicklung?
opengl
directx
rendering
virtual-reality
Bart van Heukelom
quelle
quelle
Antworten:
Es gibt Beispiele für solche Effekte, über die Sie in vielen Spielen sprechen. Erstens gibt es die Schärfentiefe , die das Objekt in einiger Entfernung unscharf erscheinen lässt, als würde die Kamera auf Dinge fokussieren, die nur in der Nähe sind, wie in diesem Beispiel. Weitere Beispiele hierzu finden Sie im DirectX SDK-Paket. Dort finden Sie auch Beispielcode. Für OpenGL erhalten Sie sie im Internet, wenn Sie suchen.
Das zweite, was Sie vielleicht sehen möchten, ist das sogenannte Geometry MipMaping oder Progressive Meshes, das, wie der Name schon sagt, dem Textur-Mip-Mapping ähnelt, jedoch für die Geometrie. Die Anzahl der Polygone in einem Netz wird verringert, wenn sich das Objekt weiter von der Kamera entfernt. Dies hilft bei der Leistungssteigerung. In D3D gibt es eine Funktion, die beim automatischen Generieren von progressiven Netzen hilft. Hier ist es:
Hier ist ein Beispiel dafür:
BEARBEITEN: Betrachten Sie das folgende Bild:
Dies ist der Keulungsstumpf der Kamera. Die Linie, die direkt durch die Mitte verläuft, ist der LookAt-Vektor. Angenommen, der Player möchte immer in der Mitte des Bildschirms fokussieren, definieren Sie den Winkel x. Jedes Objekt, das in einem Winkel positioniert wird, der größer als das festgelegte x ist, wird mit niedriger Auflösung gerendert, und diejenigen, die sich innerhalb des Winkels befinden, werden detailliert gerendert. Auf diese Weise werden die Objekte in der Mitte des Bildschirms detaillierter als die an den Seiten. Wenn der Spieler nicht in die Mitte schaut, passen Sie diese Mittellinie einfach an die Richtung an, in die der Spieler schaut. (oder drehen Sie die gesamte Kamera in diese Richtung).
quelle
Ja, Foveated Rendering verwendet Eye Tracking, um nur das zu rendern, was der Benutzer sehr detailliert betrachtet. Alles andere kann detaillierter gerendert werden.
Während es bei Betrachtung eines solchen Screenshots ziemlich offensichtlich ist, ist es für den Benutzer in VR Berichten zufolge unsichtbar.
Die vorhandenen Mainstream-Headsets enthalten (noch) kein Eye-Tracking, es gibt jedoch einige After-Market-Lösungen, um Eye-Tracking hinzuzufügen. Ferner ist eine kleine Menge zusätzlicher Verarbeitung für den Renderprozess erforderlich. Die Vorteile sind jedoch erheblich. Wenn Foveated Rendering implementiert ist, muss nur ein kleiner Prozentsatz des FOV detailliert gerendert werden. Dies kann zu dramatisch höheren Bildraten führen. Genaue Zahlen hängen von der Implementierung ab.
Darüber hinaus ist dies nicht einmal auf VR-Headsets beschränkt. Es kann auch auf Desktop-Monitoren verwendet werden (mit zusätzlichem Eye-Tracking und einem eingeschränkteren Effekt).
quelle
Ausgehend von der Antwort von Byte56 wird in der Branche so etwas entwickelt. Fixed Foveated Rendering ist eine Technik, die Valve in seiner Roboterreparatur-Demo ( https://youtu.be/DdL3WC_oBO4?t=769 ) und in einigen kommerziellen Spielen (Resident Evil VII für PSVR) einsetzt. Fixed Foveated Rendering verwendet kein Eye-Tracking, dies bedeutet jedoch, dass es gut mit aktuellen Versionen von VR-Headsets funktioniert, die derzeit keine Eye-Tracking-Funktionen haben. Im Moment soll der Vive ein Eye-Tracking-Upgrade-Kit erhalten, sodass einige AAA-VR-Titel dies nutzen können.
Sie werden nicht viele Codebeispiele finden, die sich auf solche Dinge beziehen, aber Nvidia hat einige Hardware-Erweiterungen, die anständig dokumentiert sind. Die Mehrfachauflösung ist ziemlich gut erklärt, aber eine Funktion, die an die Hardware gebunden ist.
quelle