Die Synchronisation ist ein wesentlicher Bestandteil der Anzeige mehrerer Abschnitte von Echtzeit-Inhalten über ein großes Display. Alle Systeme innerhalb des Render- und Display-Ökosystems müssen sich an präzise Zeitvorgaben im Millisekundenbereich halten, um eine nahtlose Darstellung zu gewährleisten.
Multi-Display-Konfigurationen erfordern häufig Synchronisationsfunktionen sowohl auf Software- als auch auf Hardware-Ebene. Nicht nur müssen die generierten Inhalte auf allen PCs zur gleichen Zeit mit identischen Timing-Informationen für die Simulation bereit sein, sondern auch der Display-Wechsel (das Austauschen des aktuellen Bildes gegen das nächste Bild im Grafikkarten-Puffer) muss zum richtigen Zeitpunkt erfolgen, um Bildrissartefakte zu vermeiden.
Bei VR und anderen stereoskopischen Displays ist die Synchronisation besonders wichtig, da die beiden unterschiedlichen Einzelbilder – jeweils eines pro Auge – perfekt koordiniert sein müssen.
Determinismus
Es gibt zwei Ansätze zur Verwaltung der Synchronisation:
- Deterministisch: Jeder Server (PC, Rendering-Knoten) wird so eingerichtet, dass die Ausgabe bei einem bestimmten Satz von Eingaben immer vorhersehbar ist. Das bedeutet, dass der Server zur Synchronisierung mit anderen Systemen nur eine genaue Zeitangabe sowie Ein-/Ausgabeinformationen für jede einzelne Maschine benötigt.
- Nicht-deterministisch: Um die Synchronisation sicherzustellen, erzwingt das System die Replikation der Transformationsmatrizen und anderer relevanter Eigenschaften aller Actors oder Objekte in einer Szene und reproduziert diese im gesamten System.
Jeder Ansatz hat Vor- und Nachteile. Der Hauptvorteil eines deterministischen Systems ist die Projekteinfachheit und die Einsparung von Datenbandbreite, da keine Transformationsdaten für jedes Objekt in jedem Frame übertragen werden müssen. Der Nachteil ist, dass bei einer Abweichung eines Systems die Auswirkungen über die Zeit hinweg unvorhersehbar sind. Die Rendering-Einheitlichkeit könnte stark beeinträchtigt werden, was zu visuellen Diskontinuitäten und Artefakten führen kann.
Hardware-Sync und Genlock
Während der primäre nDisplay-PC sicherstellt, dass alle Cluster-(Knoten)-PCs aus Gameplay-Perspektive über Timing-Informationen verfügen (zum Beispiel, welcher Frame gerendert werden soll), sind spezielle Hardware-Sync-Karten und kompatible professionelle Grafikkarten erforderlich, um die Anzeige dieser gerenderten Frames auf den physischen Anzeigegeräten exakt zum gleichen Zeitpunkt zu synchronisieren.
Beispielsweise ist es in Broadcast-Anwendungen üblich, viele Geräte wie Kameras, Monitore und andere Displays zu synchronisieren, damit sie alle zum exakt gleichen Zeitpunkt zum nächsten Frame wechseln und diesen erfassen. In dieser Branche ist der Einsatz von Generator-synchronisierten Signalen (Genlock) weit verbreitet.
Typischerweise besteht die Konfiguration aus einem Hardware-Generator, der das Taktsignal an die zu synchronisierende Hardware sendet. Bei PCs für Echtzeit-Rendering unterstützen professionelle Grafikkarten wie die der NVIDIA Quadro-Serie diese Technologie zusammen mit der NVIDIA Quadro Sync II-Karte, die sich mit dem empfangenen Timing-Signal oder Impuls synchronisiert.
Systemtopologie
Primärknoten (Haus-Taktgenerator)
Cluster-Knoten (empfangen Takt vom primären GPU-Knoten)
Bei Verwendung von Quadro Sync:
- Verwenden Sie vorzugsweise „Produktionszweig/Studio“-Treiber, da diese in der Regel stabiler sind als „Neuer Funktionszweig“-Treiber.
- Triggern Sie Sync-Impulse mit „fallenden Flanken“, da diese beim Erkennen der korrekten Signalrate zuverlässiger sind als „steigende Flanken“.
Display-Synchronisation einfach erklärt
-
Nur Framelock: Diese Methode, die NVIDIA üblicherweise als FrameLock/SwapSync bezeichnet, nutzt Daisy-Chain-Techniken über GPUs hinweg. Hier wird kein Genlock verwendet. Eine GPU im primären nDisplay-PC erhält einen Master-Takt von einem angeschlossenen Ausgabe-Display oder Prozessor und leitet diesen an die GPUs der Render-Knoten-PCs weiter. Alle PCs sind in einer Baumtopologie verbunden, wobei der primäre PC die Wurzel bildet. Dieser Ansatz ermöglicht die Nutzung von NVIDIA Swap-Gruppen/Barrieren über die NVIDIA API.
Dieser Ansatz eignet sich weniger gut für virtuelle Produktionen, da er isoliert von anderen Geräten im Raum arbeitet, wobei alle mit einem externen Master-Takt synchronisiert werden.
-
Nur Genlock: Bei diesem Schema erhalten alle Cluster-PC-GPUs ihr eigenes Master-Taktsignal (Genlock) von derselben Quelle. Anders ausgedrückt: Jeder PC erhält sein eigenes BNC-Kabel, und alle Kabel sind mit demselben Master-Taktgenerator verbunden.
Dieser Ansatz ermöglicht die Synchronisation von VSync; NVIDIA-Barrieren sind jedoch nicht über die NVIDIA-API verfügbar. Technisch sind alle Rechner im Cluster durch den empfangenen Takt Framelock-synchronisiert. Dieser Ansatz hat sich jedoch nicht als 100 % zuverlässig erwiesen, da keine präzise Kontrolle über die Frame-Darstellung auf Anwendungsebene besteht.
Dies war die zuvor verwendete Methode und der Grund, warum wir eine „erweiterte“ Synchronisationsrichtlinie implementieren mussten, die die Wahrscheinlichkeit von Desynchronisation und Störungen reduziert.
-
Genlock + Framelock: Dieser Ansatz ist der bevorzugte für die virtuelle Produktion. Alle Bühnengeräte sind mit einem Master-Taktgeber verbunden, einschließlich der primären nDisplay-PC-GPU. Die Synchronisation innerhalb des Clusters erfolgt über Daisy-Chain-Verbindungen zwischen dem primären PC und den Render-Knoten-PCs.
Dieser Ansatz ermöglicht die Nutzung der NVIDIA-API und damit den Einsatz von NVIDIA-Barrieren, wodurch die UE die Kontrolle über die Frame-Darstellung auf Anwendungsebene erhält. Dies bietet die zuverlässigste Methode zur Synchronisation von Displays in Verbindung mit einem externen Taktgeber (Genlock).
Kaskadierung vs. direktes Genlock
Daisy-Chaining ist eine Signal-Lock-Technik, die parallel zum direkten Genlock eingesetzt wird, wobei das Master-Taktsignal an einen einzelnen PC oder ein einzelnes Gerät – in diesem Fall den primären PC – gesendet wird. Separate Kabel leiten das Signal dann an alle anderen PCs weiter. Obwohl frühere Erfahrungen mit nDisplay darauf hindeuten, dass direktes Genlock (bei dem jeder PC das Taktsignal direkt von der Primärquelle erhält) einfacher und effektiver ist als Daisy-Chaining, lässt der neue Hardware-Ansatz auf Basis von Daisy-Chaining auf eine zuverlässigere und kostengünstigere Lösung für die Signalsynchronisation hoffen. Diese Lösung wird als NVIDIA Swap Sync/Lock bezeichnet.
NVIDIA Mosaic und AMD EyeFinity
Der Mosaic-Modus von NVIDIA und EyeFinity von AMD sind vergleichbare GPU-Technologien, die mehrere Ausgänge innerhalb einer Grafikkarte kombinieren und synchronisieren, sodass sie aus Sicht des Betriebssystems oder der Software als einheitliche Anzeige erscheinen. Dieses virtuelle Display ist im Wesentlichen eine Zusammenfassung mehrerer physischer Displays, die als ein synchrones Display fungieren und auch mit anderen Displays verschiedener Systeme mittels zugrunde liegender Framelock- oder Genlock-Techniken synchronisiert werden können.
Der Prozess der Synchronisation mehrerer Displays mittels eines Haus-Takts wird als Framelocking bezeichnet. Genlocking bezeichnet hingegen die Verwendung eines externen Takts. Im Kontext von Genlock wird der externe Takt in allen Geräten verwendet, einschließlich Anzeigegeräten, Kameras und Tracking-Sensoren.
Unter der Voraussetzung, dass die GPUs ordnungsgemäß über Quadro Sync II-Karten oder Firepro S400-Karten verbunden sind, ermöglichen sowohl Mosaic- als auch Eyefinity-Technologien mehreren Ausgängen, exakt denselben Takt zu haben und aus Betriebssystem-Perspektive als eine große Display-Leinwand behandelt zu werden. Sie können eine oder mehrere Mosaic- oder Eyefinity-Gruppen pro PC erstellen, jedoch nicht PC-übergreifend – jeder PC muss seine eigene Mosaic- oder Eyefinity-Gruppe haben. Sie können eine oder beliebig viele Mosaic- oder Eyefinity-Gruppen pro PC erstellen, aber nicht PC-übergreifend – jeder PC muss eine eigene Mosaic- oder Eyefinity-Gruppe besitzen.
Um Displays zu synchronisieren, die von mehreren PCs oder GPUs über Daisy-Chain-Techniken angesteuert werden, muss eine GPU als Master-Taktgeber fungieren und ihren Takt an die anderen GPUs weitergeben – entweder auf demselben PC oder verschiedenen PCs – mittels Sync-Karten wie der Nvidia Quadro Sync II oder AMD Firepro S400.
Weitere Informationen finden Sie unter Mosaic Technology for Multiple Displays | NVIDIA und Multi-Display Eyefinity Technology.
Obwohl es möglich ist, eine virtuelle MOSAIC-Anzeige über mehrere GPUs innerhalb eines PCs zu erstrecken, wäre es derzeit langsam, ein Anwendungsfenster über diese Leinwand zu legen. (Zukünftige Entwicklungen könnten dies möglicherweise ermöglichen.) Aktuell wird dieser Ansatz nicht für virtuelle Produktion oder In-Kamera-VFX empfohlen.
Weitere Aspekte der Display-Synchronisation
Die Game- und Render-Threads werden stets durch sogenannte Thread-Barrieren synchronisiert. Dies ist das Kernmerkmal für beide der folgenden zwei Punkte. Eine Deaktivierung der Barrieren ist nicht möglich. Betrachten Sie diese als Zeitachsenpunkte, die dem primären Knoten helfen, die Cluster-Knoten synchron zu verwalten, um ein einheitliches Content-Erlebnis über mehrere UE-PCs hinweg zu gewährleisten.
| Funktion | Beschreibung |
|---|---|
| Software/Simulation (was Sie sehen sollten) | Der Prozess der Synchronisierung aller softwarebezogenen Aspekte. Es geht darum, Unreal Engine und seine Inhalte korrekt zu synchronisieren: Feature-Determinismus, Delta-Zeit-Synchronisation, Input-Replikation, benutzerdefinierte Transformationen, Thread-Barrieren, Cluster-Events, Spiellogik und mehr. |
| Hardware/Betriebssystem (wie Sie Inhalte sehen sollten) | Der Prozess der Synchronisierung von Hardware-Geräten wie GPUs, Anzeigegeräten und dem DWM (Desktop Window Manager) unter Verwendung eines gemeinsamen Takts – eines Haus-Sync- oder Genlock-Signals. Hierbei geht es darum, wie ein Betriebssystem und die Hardware synchron und ohne Bildzerreißen das anzeigen, was Sie möchten. Dafür werden NVIDIA-Quadro-Grafikkarten plus Sync-II-Karten sowie ein Genlock-Generator benötigt. Rechnen Sie mit mindestens einer Frame-Verzögerung in der Hardware, wenn dies nicht aktiviert ist. |
Render-Sync-Richtlinien
Rendering Sync Richtlinien definieren, wie der Output des Renderns synchronisiert werden soll. Dieser Parameter kann im Details-Panel des Clusters im [nDisplay 3D Konfigurationseditor] eingestellt werden.](working-with-media/integrating-media/nDisplay/ConfigurationViewer).
Die folgende Tabelle beschreibt die verfügbaren Optionen für Render-Sync-Richtlinie.
| Option | Beschreibung |
|---|---|
| Keine (Sync Policy 0) | Dies bedeutet VSync=0. Alle Knoten zeigen ihre Frames nach RenderThreadBarrier OHNE Synchronisation mit VBlank an. Dies ermöglicht maximale FPS auf Kosten potenzieller Tearing-Artefakte. Dies sorgt für maximale FPS auf Kosten möglicher Reißen-Artefakte. |
| Ethernet (Sync Policy 1) | Alle Knoten zeigen ihre Frames nach RenderThreadBarrier MIT Synchronisation zu VBlank an. Bei Output-Anzeigen tritt kein Reißen auf. Beachten Sie, dass das Reißen zwischen den Anzeigen aufgrund von Windows DWM und Laufzeit- oder Treibereinstellungen immer noch möglich sein kann. |
| NVIDIA (Sync-Richtlinie 2) | NVIDIA Hardware-Framelock (NVIDIA SwapLock API) basierend auf Daisy-Chain-Verbindung. Sie können die Parameter im NVIDIA-Bereich verwenden, um bestimmte Hardware-Einstellungen für den Framelock anzupassen.
|
| Benutzerdefiniert | Konfiguriert jede benutzerdefinierte Richtlinie zur Synchronisation, die nDisplay nicht bekannt ist. Eine Richtlinien-ID und eine beliebige Anzahl von Schlüssel-Wert-Parametern sind erforderlich. |
Zuvor entwickelten wir einen Sync-Mechanismus namens Advanced Sync für spezielle Situationen, in denen das Rendering eines Frames auf einem bestimmten nDisplay-PC nach dem VBlank erfolgte, was zu Bildzerreißen auf dem Bildschirm führte. Dieser Software-Mechanismus versucht, solche Ereignisse vorherzusagen und zwingt alle PCs dazu, zum nächsten VBlank zu springen und dort zu rendern. Dieser Mechanismus ist nicht zu 100 % perfekt und kann bei Aktivierung unerwünschte Auswirkungen auf die Leistung haben.
Kürzlich haben wir die NVIDIA-API für die Synchronisation (Sync Policy 2) implementiert, die einen hardware-gestützten Ansatz zur Lösung des Problems darstellt.
Framelock-Verbindungen auf einem Timing-Server: 1) Timing-Server 2) Clients.
1) Sync-Quelle 2) Server 3) Clients
Sync zum Laufen bringen
Für eine zuverlässige Synchronisation im Kontext der virtuellen Produktion müssen Sie eine Technik verwenden, die sowohl Genlock als auch Framelock kombiniert. Zusammenfassend lässt sich sagen: Sie speisen das Genlock-Signal in den primären nDisplay-PC ein und verwenden dann die Hardware-Methode des Daisy-Chaining, um das eingehende Sync-Signal an alle übrigen Cluster-PCs zu verteilen, sodass diese ordnungsgemäß mit einem Framelock versehen werden. Dies setzt eine NVIDIA-Render-Sync-Richtlinie voraus, die im Konfigurations-Asset korrekt definiert werden muss.
Workflow
- Richten Sie eine Daisy-Chain-Verbindung zwischen den Cluster-GPU-Sync-Boards mittels Standard-Ethernet-Kabel mit regulären RJ45-Anschlüssen ein.
- Aktivieren Sie MOSAIC und konfigurieren Sie die Synchronisation über das NVIDIA Steuer-Panel (legen Sie einen primären PC fest, legen Sie dann den Sync-Cluster-Knoten fest).
- Aktivieren Sie „DirectX Swapgroup PrePresentWait“ mit den folgenden Schritten:
- Laden Sie das nVidia Configure Driver Utility herunter.
- Führen Sie ConfigureDriver.exe als Administrator aus.
- Gib "11" ein und drücke Enter.
- Legen Sie im „nDisplay 3D Configurations-Editor“ Render Sync Policy des Clusters auf NVIDIA fest.
- Optional: Bei komplexen Systemen ist es möglich, die NVIDIA-Swap-Gruppe und Synchronisierungsbarrieren in den Clustereinstellungen anzupassen.
Standardmäßig werden Sync-Gruppe 1 und Sync-Barriere (FN-CR) 1 verwendet.
Die Clustereinstellung „NVIDIA Render Sync Policy“ aktiviert eine NVIDIA-Swap-Gruppe über Cluster-Knoten.
Zusätzliche Kommentare
Ein Wert von 0 ist nicht erlaubt. Ein Wert von 0 wird intern verwendet, um eine Gruppe/Barriere (FN-CR) abzukoppeln / zu verlassen. Es sind nur natürliche Zahlen erlaubt. Auf einem einfachen System mit einer GPU und einem synchronisierten Board haben Sie eine einzelne Sync-Gruppe #1 und eine einzelne Sync-Barriere (FN-CR) #1. Diese werden standardmäßig verwendet.
Synchronisationstest
Das Testen der Synchronisierung für eine skalierte Anzeige kann schwierig sein, da eine Desynchronisierung durch eine Reihe von Problemen verursacht werden kann, darunter:
- Der falsche Frame wird aufgrund eines falschen Zeitstempels simuliert (Software-Problem).
- Die Taktung des Anzeigegeräts stimmt nicht (Anzeige- oder Hardware-Problem).
Um die Synchronisation zu testen, verwenden wir ein einfaches Testprojekt, das ein einzelnes Objekt anzeigt, das sich schnell über die gesamte Anzeigeoberfläche bewegt. Wenn die Systeme ordnungsgemäß synchron sind, behält das Objekt seine Form bei, wenn es Grenzen überquert. Andernfalls kommt es auf der Anzeige zu Artefakten an gemeinsamen Kanten.
Wenn die Systeme richtig synchron sind, behält das Objekt seine Form bei, wenn es von Bildschirm 1 zu Bildschirm 2 wechselt.