Im Oculus-VR Forum, haben sich einige Entwickler zusammengefunden, die versuchen aus dem aktuellen Developer Kit die beste Bildqualität herauszuholen. Allerdings nicht wie viele andere durch Hardware-Mods, sondern durch Software. Hier stelle ich euch mal die Demos vor und zeige euch was ihr tun müsst, um das in eure eigenen Unity-Projekte einzubauen.

Der Trick die Auflösung der Spiele auf 1920*1080 zu stellen und dann die Rift Hardware das Bild runter skalieren zu lassen, um durch das höher berechnete Antialiasing zu erhalten, ist mittlerweile in der Szene weit verbreitet und wird auch von den meisten verwendet. Durch ein paar Änderungen in der Oculus Rift Unity Implementierung wird das ganze nun auf ein noch höheres Level gehoben:

Ohne zu tief ins Detail zu gehen, ist die Funktionsweise relativ einfach: Man rendert das Bild mit Antialiasing in einen deutlich höher aufgelösten Offscreen-Buffer, der für den Spieler nicht sichtbar ist. Die Technik dazu ist im Videospiel Bereich Gang und Gebe und nennt sich SSAA. Auch die Entwickler der Unity Engine haben vor einiger Zeit die Möglichkeit hinzugefügt solche Offscreen-Buffer zu verwenden. Zusammen mit dem Oculus Rift SDK funktioniert dies jedoch wiederum nicht. Zwar hat Oculus VR in der OVRCamera-Klasse bereits eine Implementierung mitgeliefert („CameraTextureScale“), diese ist jedoch aufgrund dessen, dass sie noch nicht korrekt mit allen Einstellungen funktioniert, deaktiviert.

Eine Demo die jeder ausprobieren kann, hat der User boone188 veröffentlicht:

Tuscana Demo SSAA von boone188 via Dropbox

(Der Download Link ist, aufgrund von eventuellen Updates der Originale von boone188, daher keine Garantie auf die Verfügbarkeit)

Die Demo könnt ihr einfach starten und mit den Tasten 1-5 die Größe des SSAA Buffers verändern und mit der Linken Maustaste SSAA komplett deaktivieren. 5xEnabled würde bei einer Auflösung von 1280*800 bedeuten, dass ihr einen Offscreen Buffer von 6400 x 4000 verwendet. Dies erfordert natürlich eine Grafikkarte die zum einen genügend Speicher, zum anderen aber auch über genügend Rechenleistung verfügt. Aktuelle Modelle sollten damit jedoch keine Probleme haben.

Wer SSAA in seinem eigene Projekt ausprobieren möchte, kann dies mittels dieser Klasse tun:

OVRCameraScaler.zip by boone188

Um SSAA zu aktivieren, muss lediglich das OVRCameraScaler Script als Componente zu den beiden OVRCameras (CameraLeft und CamraRight) hinzugefügt werden.

Der Scale Factor sollte bei beiden Komponenten gleich sein, da ansonsten ein unscharfes Bild entsteht. Um einen Vergleich zu erhalten, bietet es sich jedoch an, den OVRCameraScaler nur auf einer der beiden Rift Kameras zu aktivieren und abwechselnd mit einem Auge das gerenderte Bild anzusehen.

Ein weiterer Ansatz ist anstelle von SSAA, MSAA zu verwenden. Dieser Ansatz ist aber noch sehr experimentell und führt bei einigen Grafikkarten zu unschönen Clipping Problemen mit den Schatten. Die neuste Version der Unity 3D Engine soll dieses Problem jedoch behoben haben.

Eine Version der Tuscana Demo mit MSAA, welche mit Unity 4.2 erstellt wurde, findet man hier:

Download MSAA Tuscana Demo von TeddyOk

(Der Download Link ist auch hier, aufgrund von eventuellen Updates der Originale von TeddyOk, daher keine Garantie auf die Verfügbarkeit)

Wer MSAA in seinem eigenen Projekt und mit der neusten Unity Engine testen möchte, kann dies mithilfe dieser Klasse tun:

TeddysOVRCamera3 von TeddyOk

Hier ist die Qualität jedoch von der Grafik-Einstellung des Projekts abhängig: (Good 1.35x, Fantastic 1.5x, Beautiful 2.0x)

Der Original Thread im Oculus VR Entwickler Forum.