Korrigiert mich, wenn ich falsch liege, aber DoublePrecision für die Modellierung einer OpenWorld in einer Game-Engine hat erstmal nix mit dessen Rendering auf der GPU zu tun. Das Handling der Daten ist Sache der CPU. Was dann an die GPU für die Darstellung der Landschaft geht, das kann weiterhin SP sein.
Man sollte sich erst überlegen, bei welchen FP-Berechnungen große Fehler auftreten. Generell gilt, dass je größer eine FP-Zahl wird, desto geringer wird ihre absolute Auflösung. Deshalb ergeben sich für Spiele Genauigkeitsprobleme primär bei folgenden Operationen:
1. Die Differenz zwischen zwei ähnlich großen Zahlen (Auslöschung)
2. Die Addition zwischen einer großen Zahl und einer kleinen Zahl (Absorption)
Sowohl Auslöschung und Absorption sind bei Computerspielen nur für die "translatorischen" Positionen (nicht einmal für die Rotation) der Objekte von Bedeutung. Denn nur die Positionen der Objekte nehmen als einzige Größe im Spiel einen entsprechenden großen Werteintervall ein, bei welchem man sich zusätzlich eine entsprechende hohe absolute Auflösung wünscht. Ist beispielhaft die Genauigkeit der Positionen in dem gegebenen Werteintervall zu gering so liefert die Abstandsbestimmung zwischen zwei Objekten, die zu weit vom Ursprung entfernt sind, wegen Auslöschung einen großen Fehler. Die Abstandsberechnung wird zum Beispiel in der Physik für das Berechnen der Kräfte zwischen zwei Objekten benötigt, oder alternativ für den Zeichenprozess, um zu bestimmen wie das Objekt sich relativ zur Kamera befindet. Analog tritt die Absorption auf, wenn die Bewegung von einem Objekt berechnet wird. Denn für die Zeitdiskretisierung berechnet man die neue Position über eine explizite Integration, also zum Beispiel mit Euler: Neue Position = Alte Position + Geschwindigkeit * Zeitschrittgröße. Die Ursache für die Absorption bei der Integration ist, dass die alte Position im Vergleich zum Produkt zwischen Geschwindigkeit und Zeitschrittgröße sehr groß ist.
Somit beschäftigen sich die Problemlösungen für die mangelnde SPFP-Genauigkeit bei Computerspielen primär damit, wei man Auslöschung und Absorption bei den Objektpositionen vermeiden kann. Dafür existieren folgende Ansätze um die Welt dementsprechend zu modellieren:
1. Space-Partitioning-Datenstrukturen mit lokalen Koordinatensystemen und einfacher Genauigkeit:
Vorteile: Potentiell keinen oder nur kaum zusätzlichen Speicherplatzverbrauch, auch potentiell fast so schnell wie reine SP-Berechnungen, kommt ohne DP aus
Nachteile: Komplizierter zu programmieren wegen der Umrechnung zwischen den Koordinatensystemen, gerade wenn man die Vorteile nutzen möchte
2. Alles in DP-Berechnen:
Vorteile: Einfach zu programmieren; alle Berechnungen sind sehr genau
Nachteile: Langsam, hoher Speicherplatzverbrauch, dennoch ein Umformen von DP zu SP nötig, da die GPU nicht DP überall in der Rasterpipeline unterstützt
3. Adaptive Genauigkeit:
Idee: Man speichert zwar die Positionen in doppelter Genauigkeit ab. Sobald die einfache Genauigkeit jedoch für die folgenden Berechnungen reicht (zum Beispiel nach der Berechnung des Abstandsvektors) wandelt man die Zwischenergebnisse zu der einfachen Genauigkeit um. Analog wird das Inkrement bei der Positionsänderung so spät wie möglich zu DP umgerechnet.
Vorteile: Meist fast so schnell wie reines SP, je nach Anwendungsfall kaum DP benötigt
Nachteile: Etwas umständlicher zu programmieren
Da die zweite Möglichkeit bei sehr aufwändigen FP-lastigen Berechnungen extrem langsam ist, muss man dort für die Performance die 1. oder die 3. Möglichkeit verwenden. Afaik werden deshalb diese Möglichkeiten auch meist bei sehr rechenaufwändigen Anwendungen in Spielen verwendet.
Wie spielt das nun für die GPU eine Rolle:
Führt die GPU nur das Rendering durch, so muss ihr die CPU die entsprechenden Objektpositionen relativ zur Kamera mitteilen. Da die meisten Objekte klein sind reicht für diesen Abstandsvektor selbst die einfache Genauigkeit aus. Für die Berechnung des Abstandsvektors auf der CPU wird jedoch wegen der Auslöschung die doppelte Genauigkeit benötigt. Dadurch kann die GPU weiterhin komplett in einfacher Genauigkeit rechnen. Nur bei extrem großen Objekten wird der Abstandsvektor auf der GPU in doppelter Genauigkeit benötigt, was wohl die absolute Ausnahme sein sollte. Nachdem die Vertexe allerdings mit dem Abstandsvektor transformiert worden sind kann auch in diesem Fall mit einfacher Genauigkeit weitergerechnet werden. Ergo benötigt die GPU alleine für das Rendering unabhängig von der Implementierung der Spielwelt keine DP-Performance.
Führt die GPU zusätzlich GPGPU mit der Spielwelt durch, dann ist die benötigte DP-Performance von der Modellierung der Spielwelt abhängig. Bei GPGPU in Spielen lohnt es sich die GPU allerdings nur bei sehr rechenaufwändigen Aufgaben zu verwenden, wo eine hohe Performance zudem zwingend erforderlich ist. Die Modellierungsmöglichkeit der Space-Partitioning-Datenstrukturen mit lokalen Koordinatensystemen und die Modellierungsmöglichkeit der adaptiven Genauigkeit sind aber performancetechnisch gegenüber den Ansatz alles mit DP zu berechnen vorteilhaft und benötigen beide keine oder nur kaum DP-Performance, weshalb man sich meist für einen der ersten beiden Ansätze entscheiden wird. Deshalb benötigt die GPU selbst in diesem Fall keine oder nur kaum DP-Performance
Ich hoffe, dass die Erklärungen soweit anschaulich und korrekt sind. Ist leider etwas der Overkill geworden die Antwort.