Nvidia DSR bis zu 64x statt nur 4x.
Dies ist meine Version des Artikels auf
golem.de
- Was ist DSR und was ist anders als beim alten Downsampling?
DSR (Dynamic Super Resolution) gaukelt dem Spiel eine höhere Auflösung vor als der Monitor tatsächlich hat. Anstatt dass man, wie bei der vorigen Downsample-Methode, eigene Auflösungen erstellt und hoffen muss, dass der Monitor die untypischen Timings für downsampling verträgt ist es ein fester Bestandteil im Treiber. Das Downsampling läuft nicht mehr über den Chip für die Monitorausgabe, sondern in der GPU selbst. Damit kann man viel höhere Auflösungen erreichen, ohne dass die Ansteuerung des Monitors davon betroffen ist. Man bekommt immer ein Bild während bei der alten Methode man erst durch Tests feststellen konnte ob es denn klappen könnte.
DSR wird von Nvidia bis zurück zur Fermi Generation unterstützt. Damit kann z.B.: die neun Jahre alte GeForce 470 GTX diese Funktion nutzen. Sinn macht es, aus meiner Sicht, ab einer 680 GTX mit 2GB RAM.
Hier muss ich auf die Limitierungen von DSR hinweisen: Die Grafikkarte muss genug Speicher haben damit hohe Auflösungen funktionieren. Wenn man sich der Grenze nähert, muss man damit rechnen dass der Grafikkartentreiber abstürzt oder dass der gesamte Rechner mit Blue-Screen abstürzt. Der Absturz kann gar so heftig sein, dass Windows nicht mal dazu kommt einen Blue-Screen zu zeigen. Ein funktionierendes Backup der Systempartition ist vor Experimenten zu empfehlen.
Für aktuelle Spiele ist ein Minimum von 8 GB Videoram für DSR nötig, besser 11 GB, 12 GB oder 24 GB wie bei der aktuellen Titan RTX. Da es sehr große Unterschiede der Anforderungen gibt, kann es keine feste Regel für alle Spiele und Benchmarks der letzten 25 Jahre geben. Beispiele für alte Spiele sind Homeworld 2, Need for Speed Porsche und Tron 2.0, welche auf einer 680 GTX in 8k flüssig laufen.
Wenn ein Spiel nVidia Ansel unterstützt ist Ansel für Screenshots weit überlegen. Dafür ist die Zahl der Spiele mit Ansel support recht gering während DSR auch mit über 15 Jahren alten Programmen wie Tron 2.0, Homeworld 2 und 3DMark2001 funktioniert.
- DSR Aktivieren:
Über die Nvidia Systemsteuerung kann DSR in den 3D Einstellungen recht einfach aktiviert werden. Der DSR Filter stellt das Level des Weichzeichnens beim Skalieren ein. Ähnlich wie bei der Skalierung in Bildbearbeitungsprogrammen muss man sich entscheiden ob man bereit ist bei 0% Artefakte wie Moiré zu akzeptieren oder man bei 100% einen sichtbaren Weichzeichnereffekt bekommt. 0% Filter hat den Vorteil, dass für DSR weniger Video-RAM benötigt wird.
In meinem Fall eines Ultra HD Schirmes bekomme ich die zusätzlichen Auflösungen 5760x3240 und 7680x4320. Bei einen FullHD Monitor kommen 2880x1620 und 3840x2160 dazu.
Dabei fällt auf, dass Nvidia bei "4x" nicht die Höhe und Breite des Schirmes vervierfacht, sondern sich auf die Zahl der dargestellten Pixel bezieht. Somit erhöht 4x die Horizontale und vertikale Pixelzahl um die Wurzel des in der Nvidia Systemsteuerung angegebenen Wertes. Der DSR 4x entspricht einer Erhöhung um den Faktor 2, DSR 2,25 entspricht dem Faktor 1,5. Ich empfehle nur DSR 2,25x und 4x zu aktivieren. Die anderen Auflösungen ergeben mehr Artefakte und benötigen einen stärkeren Filter.
Vor dem manuellen Tuning der DSR Einstellungen sollte man es über den normalen Weg aktivieren und testen um in der Registry die passenden Voreinstellungen zu haben.
- Die Registryeinträge von DSR manuell anpassen:
Nachdem DSR aktiviert wurde stehen in der Registry die Werte dazu unter:
HKLM\SYSTEM\CurrentControlSet\Services\nvlddmkm\State\DisplayDatabase
In meinem Fall unter:
HKLM\SYSTEM\CurrentControlSet\Services\nvlddmkm\State\DisplayDatabase\SAM0C3F0_2A_07DE_B7
Der Einträge SmoothScalingData
und SmoothScalingMultiplierData
beinhalten die DSR Einstellungen. Bei SmoothScalingData
steht im vierten Byte der DSR-Glättungsfaktor.
Leider verändert Nvidia mit neuen Treiberversionen immer wieder mal das in der Registry gespeicherten Format.
Als erstes sollte man den Registryzweig des Monitors, in meinem Fall SAM0C3F0_2A_07DE_B7
exportieren damit man die Werte besser verändern kann.
Es gibt Hilfstools zum Berechnen der richtigen Werte. Ich hatte ein solches Hilfstool erstellt. Aber dann fand ich Webtool, welches besser ist als mein eigenes. Die Originalseite ist inzwischen verschwunden und der Autor ist unbekannt. Ich habe es hier gemirrored.
Die maximale X-Auflösung welche der NVidia Treiber akzeptiert ist 15999. Ab 16000 ignoriert der Treiber leider die Auflösungen. Daher nehme ich für meine "16k" Videos und Screenshots 15360x8640, welches ein rundes vielfaches der Full-HD Auflösung ist. Mehr als zehn DSR Auflösungen lassen sich nicht erstellen.
Vor dem Import der angepassten Registrydatei muss die Berechtigung des Registry-Zweiges angepasst werden.
Mit der rechten Maustaste auf den Registryzweig klicken, dann Berechtigungen wählen.
Im Berechtigungsfenster "Erweitert":
Erst müssen wir den Besitzer ändern:
Entweder man nimmt direkt seinen Benutzer oder die Gruppe Administratoren und klickt "Namen überprüfen" und OK. Administratoren ist meine Gewohnheit als System Engineer, wenn möglich, immer Gruppen zu nehmen.
Bevor man im Fenster der Erweiterten Sicherheitseinstellungen "OK" klickt sollte der Haken für die Vererbung gesetzt werden.
Jetzt können wir endlich uns selbst das Recht geben den Registryzweig zu ändern. Den Anmeldenamen von Windows eingeben, überprüfen klicken, und OK.
Wir geben uns selbst Vollzugriff und segnen es mit OK ab.
Erst jetzt können wir die editierte Registrydatei mit einem Doppelklick ohne Fehlermeldung importieren. Nach dem Import muss man entweder den Rechner neu starten oder mit "restart64" aus dem Custom Resolution Utility den Grafiktreiber neu starten. Wer den NVidia Inspector nutzt kann mit "nvidiaInspector.exe -restartDisplayDriver" ebenfalls de Grafiktreiber neu starten. Der direkte Neustart des Grafiktreibers kann die Desktopsymbole durcheinanderwerfen und alle derzeit offenen Fenster auf eine andere Größe setzen, daher werden einige den Neustart des Rechners bevorzugen.
- CustomDSR Tool:
Zum Glück hat Orbmu2k im Februar 2019 die neue Version 1.4.1 seines CustomDSR Utilities im 3D Center Forum gepostet, welches uns das manuelle editieren der Registry erspart bis NVidia mal wieder etwas ändert. Er hat uns mit der neuen Version die Möglichkeit gegeben, dass wir unsere Wunschauflösung eingeben können und das Tool die passenden Skalierungswerte nutzt.
Die Version 1.4.1 nutzt den neueren SmoothScalingMultiplierData
Eintrag in der Registry.
Wenn in der Registry schon DSR Werte sind startet das Tool unter Umständen nicht:
In diesem Fall sollte man über die NVidia Systemsteuerung DSR neu einrichten, damit die Registry bereinigt wird.
Nach dem Start wählt man eine Zeile aus und klickt "Edit Entry".
Entweder nutzt man den Regler oder gibt seine gewünschte Auflösung ein.
Nach dem Klick auf "Create DSR Resolutions" stehen in der Systemsteuerung alle Auflösungen parat:
Es sollte mit dem Windows Desktop getestet werden was funktioniert bevor man Spiele oder Benchmarks damit startet. Bei älteren Grafikkarten kann es durchaus passieren, dass es nicht mal für den Windows Desktop reicht.
- DSR Spezialfall "Smart TV" und die Lösung:
DSR orientiert sich bei der Interpretation DSR Faktors an der "Maximalauflösung" des Monitors. Bei PC-Monitoren gibt es da keine Probleme, aber bei TV Geräten taucht neben der Standardauflösung oft eine 17:9 Auflösung als die Maximale Auflösung in der Liste auf. Bei z.B.: Samsung, Sony und LG meldet das TV Gerät eine Höchstauflösung von 2048x1080 statt 1920x1080 oder 4096x2160 statt 3840x2160.
Das Resultat mit DSR 4x bei einem 1920x1080 TV ist 4096x2160 statt der erwarteten 3840x2160. Dieses 17:9 Bild wird nun auf 16:9 skaliert. Damit wird das Bild seitlich zusammengestaucht. Bei Spielen welche 17:9 nicht unterstützen bekommt man links und rechts schwarze Balken oder das Spielmenü am oberen und unteren Rand wird abgeschnitten.
Die Lösung: Ab Windows 8 kann die vom Monitor ausgelesene Extended Display Identification Data, kurz EDID, in Windows angepasst werden. Zu unserem Glück gibt es mehrere Tools dafür. Ich nutze das Custom Resulution Utility von ToastyX.
Nach dem Start des Programms wählt man den betroffenen Monitor aus, wählt "CEA" im "Extension Block" Bereich und wählt "Edit".
Unter "Data Block" wählt man "TV resolutions" und dann "Edit".
Dort sieht man alle vom TV-Gerät gemeldeten Auflösungen. Wir wählen alle unerwünschten Auflösungen, in meinem Fall alle 4096x2160 Auflösungen, löschen diese über "Delete" und bestätigen mit "OK".
Im Bereich "Data Blocks" wählt man "HDMI Support" und dann "Edit".
Im Bereich "HDMI Resolutions" wählen wir alle unerwünschten Auflösungen, löschen diese über "Delete" und bestätigen mit "OK".
Damit diese Änderung vom System übernommen wird muss entweder der Rechner oder der Grafiktreiber neu gestartet werden. Letzteres kann über das beim Custom Resolution Utility mitgeliefertem "restart" bzw. "restart64" erreicht werden.
Diese einmal angepasste EDID Information bleib auch bei Updates des Grafikkartentreibers und Windows 10 Upgrades erhalten.
- Langsam herantasten
Da sich die Programme unterscheiden müssen immer wieder mehrere Varianten durchprobiert werden, um diese in hohen Auflösungen zu starten.
Man sollte vorher schauen, dass man die Konfigurationsdateien des Spieles oder die entsprechenden Registryeinträge sichert sonst endet man mit einem nicht mehr funktionsfähigen Spiel. Nur wenige Spiele räumen beim deinstallieren ihre Konfiguration auf, sodass in einigen Fällen selbst neu installieren eine kaputte Konfiguration nicht repariert. Hier muss ich auf das eigene Geschick des Anwenders und Suchmaschinen verweisen.
Im einfachsten Fall tauchen die erstellten Auflösungen normal in der Liste auf. Man wählt sie im Launcher oder im Spiel selbst aus und hofft, dass es funktioniert.
Falls die Auflösungen nicht auftauchen gibt es mehrere Möglichkeiten:
Wenn das Spiel die Option "Windowed Full-Screen" bietet, stellt man vor dem Start des Spieles den Windows Desktop auf die gewünschte Auslösung und das Spiel übernimmt diese. Diese Variante tritt in letzter Zeit häufiger auf da immer mehr Spiele kein Menü für die Auflösung haben, sondern immer in der Desktopauflösung starten.
Eine weitere Variante ist die Kommandozeile. Für Homeworld 2 muss man, zum Beispiel, "Homeworld2.exe -w 7680 -h 4320 -hardwarecursor -noVideoErrors -truecolour
" nutzen um es in 8k Full-Screen zu starten. Oder "Homeworld2.exe -w 16384 -h 10240 -hardwarecursor -noVideoErrors -truecolour -windowed
" für 16k im Fenster. Der Final Fantasy XV Benchmark wurde mit "ffxv.exe -f --graphicsIni config\GraphicsConfig_BenchmarkHigh.ini --displayresolution 7680 4320 --renderingResolution 7680 4320 --locale=en
" gestartet um das Video aufzunehmen. Viele Source-Engine basierende Spiele, welche im Spiel selbst nicht alle Auflösungen zeigen, können via Kommandozeile "-w 7680 -h 4320
" überredet werden.
Eine weitere Variante ist das editieren der .ini oder .cfg Dateien. Command & Conquer Generals und Zero Hour sowie auch Oblivion und Fallout 3 gehören in diese Kategorie. Skyrim und Fallout 4 hingegen bieten im Spielmenü genug Auswahl, aber erlauben ebenfalls das Anpassen der .ini Dateien.
Als dritte Methode kann das Spiel im Fenster gestartet und mit Simple Windows Runtime Editor, kurz SRWE, das Fenster in der Größe anpassen werden.
Es gibt auch andere Tools mit dieser Funktionalität, man ist nicht auch SRWE beschränkt. Tomb Raider 2013 und Rise Of The Tomb Raider sind bekannte Spiele für diese Methode. Das Fenster kann um ein vierfaches größer sein als der Desktop. Zum Spielen ist dies nicht geeignet, aber für Screenshots und Videos.
Als erstes werden SRWE und das Spiel, im Fenstermodus, normal gestartet. In SRWE wählt man "Select running Application" und sucht die den Spieltask, in meinem Beispiel "ROTTR.exe" und "Open".
Nun gibt es reichlich Optionen, ich beschränke mich hier auf die wichtigen.
X: und Y: ist die Position der linken, oberen Ecke des Fensters. Width: und Height: bestimmen die Größe. Die eingegebenen Nummern werden sofort im Fenster umgesetzt. Insbesondere bei Width: und Height: muss man darauf achten erst eine Ziffer zu entfernen, bevor eine hinzugefügt wird. Sonst wird das Spiel für den Bruchteil einer Sekunde, bei meinem Beispiel, über 23000 Pixel breit gerendert und stürzt unter Umständen sofort ab.
Die Buttons "Left", "H.Center", "Right", "Top", "V.Center" und "Bottom" werden dann nützlich, wenn das Spiel größer als der Desktop eingestellt ist. Andernsfalls kann man etliche Spielelemente und Menüs nicht mehr erreichten, oder man sieht nicht ob man die passende Stelle für einen Screenshot hat.
Ein mal gefundene Einstellungen lassen sich speichern. Dafür muss im linken Fenster die richtige Fensterklasse gewählt werden, meist das oberste in der Liste. Erst dann wird "Save Profile" aktiv.
So wurden im Jahr 2013 von Tomb Raider 2013 10k und 15k Screenshots erstellt. Mit meiner heutigen Grafikkarte funktioniert auch 16384x10240, also ECHTES 16k, und mehr.
Für Rise Of The Tomb Raider bin ich 2016 nicht über Testscreenshots hinausgekommen. Zeitmangel und zu hohe Absturzfreudigkeit bei 16k waren die Gründe. Wenn das Limit der Grafikkarte überschritten wird, gibt es witzige Artefakte:
Wo sind denn die Haare hin?
- Erfahrungen mit diversen Spielen und Benchmarks:
Beispiel 680 GTX: Das aus heutiger Sicht anspruchslose Homeworld 2 läuft in 8k mit guter Framerate. Auch Tron 2.0 gehört in diese Kategorie. Deus Ex Human Revolution lief mit 5760x3240 stabil, aber mit durchschnittlich 10 fps nicht gut spielbar.
Mit einer 680 GTX habe ich Ende 2012 über die alte Downsampling Methode und einem sehr toleranten 1920x1200 Monitor mit 3DMark erreicht, außer für Fire Strike, 4k erreicht. Anfang 2013, mit der ersten Titan mit 6 GB Video RAM, lief 3DMark Fire Strike in 6k und prompt fand ich Bugs im Benchmark.
Beim bekannten 3DMark06 werden für 8k 12 GB Video RAM benötigt (mit 11 GB nicht getestet, könnte aber laufen). Mit 24 GB Video RAM funktioniert auch 16k, die Videos werden gerade encodet.
Für Port Royal reichen die 24 GB Video RAM der Titan RTX gerade mal für 8k obwohl mir ein Futuremark Entwickler mitteilte, dass es wahrscheinlich nicht funktionieren wird. Der Trick ist den Benchmark nicht "Full-Screen" zu starten, sondern als "Windowed-Full-Screen" auf einem 8k Windows Desktop. Jeder andere Weg führt zum Absturz des Benchmarks oder des Grafikkartentreibers.
- Fazit:
Mit DSR hat NVidia eine bequeme und benutzerfreundliche Methode bereitgestellt den Spielen mehr Details zu entlocken. In Abhängigkeit des Spieles werden Texturen in der Ferne detaillierter dargestellt und entfernte Gebäude erscheinen früher in der Szene. Die LoD (Level of Detail) Einstellung vieler Spiele sorgt dafür, dass die Szene und Spielfiguren bereits in größerer Entfernung mit mehr Polygonen gerendert werden. Tessellation nutzt grundsätzlich den Vorteil der höheren Auflösung für mehr Polygone aus.
DSR bietet sich auch an wenn das Spiel nur Postprocessing-Anti-Alias bietet wie z.B.: Deus Ex Human Revolution, welches wie ein Weichzeichner über die Szene geht. In manchen Spielen macht es keinen sichtbaren Unterschied zum klassischen Anti-Aliasing.
Legal Stuff: This is a private homepage. All "TM" mentioned here belong to their owners and not me. Anyone offended
contact me.