Bildschirmrisse - Screen tearing

Ein typisches Video-Tearing-Artefakt (simuliertes Bild)

Bildschirm Einreißen ist eine visuelle Artefakts in Videoanzeige , wo eine Anzeigevorrichtung zeigt Informationen von mehreren Frames in einem einzigen Bildschirm zeichnen.

Das Artefakt tritt auf, wenn der Videofeed zum Gerät nicht mit der Bildwiederholfrequenz des Displays synchron ist. Dies kann durch nicht übereinstimmende Bildwiederholraten verursacht werden , und die Abrisslinie bewegt sich dann, wenn sich die Phasendifferenz ändert (mit einer Geschwindigkeit proportional zur Differenz der Bildraten). Es kann auch einfach durch fehlende Synchronisation zwischen zwei gleichen Bildraten auftreten, und die Abrisslinie befindet sich dann an einer festen Stelle, die der Phasendifferenz entspricht. Während der Videobewegung erzeugt Screen Tearing ein zerrissenes Aussehen, da die Kanten von Objekten (z. B. einer Wand oder eines Baumes) nicht ausgerichtet werden.

Tearing kann bei den meisten gängigen Anzeigetechnologien und Grafikkarten auftreten und ist am deutlichsten bei horizontal bewegten Bildern, wie z. B. bei langsamen Kameraschwenks in einem Film oder klassischen Side-Scrolling-Videospielen.

Bildschirmrisse sind weniger auffällig, wenn mehr als zwei Frames während desselben Aktualisierungsintervalls das Rendering beenden, da dies bedeutet, dass der Bildschirm mehrere schmalere Risse anstelle eines einzelnen breiteren aufweist.

Verhütung

Möglichkeiten zum Verhindern von Video-Tearing hängen von der Technologie des Anzeigegeräts und der Grafikkarte, der verwendeten Software und der Art des Videomaterials ab. Die gebräuchlichste Lösung ist die Verwendung mehrerer Puffer .

Die meisten Systeme verwenden eine mehrfache Pufferung und einige Mittel zur Synchronisation von Anzeige- und Videospeicher-Auffrischzyklen.

Option "TearFree" "boolean": TearFree-Updates deaktivieren oder aktivieren. Diese Option zwingt X, das gesamte Rendern in einen Backbuffer durchzuführen, bevor die tatsächliche Anzeige aktualisiert wird. Es erfordert eine zusätzliche Speicherzuweisung in der gleichen Größe wie ein Framebuffer, gelegentlich eine zusätzliche Kopie und erfordert eine Schadensverfolgung. Daher erfordert die Aktivierung von TearFree mehr Speicher und ist langsamer (reduzierter Durchsatz) und führt zu einer geringen Ausgabelatenz, sollte sich jedoch nicht auf die Eingabelatenz auswirken. Die Aktualisierung des Bildschirms erfolgt dann jedoch synchron mit der vertikalen Aktualisierung der Anzeige, so dass die gesamte Aktualisierung abgeschlossen ist, bevor die Anzeige mit ihrer Aktualisierung beginnt. Das heißt, es ist immer nur ein Rahmen sichtbar, was einen unschönen Riss zwischen zwei sichtbaren und unterschiedlichen Rahmen verhindert. Beachten Sie, dass dies repliziert, was der Compositing-Manager tun sollte, jedoch leitet TearFree die Compositor-Updates (und die von Vollbildspielen) direkt auf den Scanout um, sodass im zusammengesetzten Fall kein zusätzlicher Overhead entsteht. Beachten Sie auch, dass nicht alle Compositing-Manager Tearing verhindern, und wenn die Ausgaben rotiert werden, wird TearFree immer noch TearFree aktiviert.

Vertikale Synchronisation

Vertikale Synchronisierung ist eine Option in den meisten Systemen, bei denen die Grafikkarte daran gehindert wird, etwas für den Anzeigespeicher sichtbar zu machen, bis der Monitor seinen aktuellen Aktualisierungszyklus beendet hat.

Während der vertikalen Austastlücke weist der Treiber die Grafikkarte an, entweder den Off-Screen-Grafikbereich schnell in den aktiven Anzeigebereich zu kopieren ( Doppelpufferung ) oder beide Speicherbereiche als anzeigbar zu behandeln und einfach zwischen ihnen hin- und herzuschalten ( Seite umdrehen ).

Nvidia- und AMD-Videoadapter bieten eine 'Adaptive Vsync'-Option, die die vertikale Synchronisierung nur dann aktiviert, wenn die Bildrate der Software die Bildwiederholfrequenz des Displays überschreitet, andernfalls deaktiviert. Dadurch wird das Stottern eliminiert, das auftritt, wenn die Framerate der Rendering-Engine unter die Bildwiederholfrequenz des Displays fällt.

Alternativ kehren Technologien wie FreeSync und G-Sync das Konzept um und passen die Bildwiederholfrequenz des Displays an die vom Computer kommenden Inhalte an. Solche Technologien erfordern eine spezielle Unterstützung sowohl vom Videoadapter als auch vom Display.

Komplikationen

Wenn die vertikale Synchronisation verwendet wird, wird die Bildrate der Rendering-Engine auf die Bildrate des Videosignals begrenzt. Diese Funktion verbessert normalerweise die Videoqualität, erfordert jedoch in einigen Fällen Kompromisse.

Judder

Die vertikale Synchronisation kann auch bei Video- und Filmpräsentationen zu Artefakten führen, da sie im Allgemeinen mit Bildraten aufgezeichnet werden, die deutlich unter den typischen Monitor-Bildraten (24–30 Bilder/s) liegen. Wenn ein solcher Film auf einem Monitor mit einer typischen Bildwiederholfrequenz von 60 Hz abgespielt wird, verpasst der Videoplayer ziemlich häufig die Frist des Monitors und die dazwischen liegenden Frames werden etwas schneller als beabsichtigt angezeigt, was zu einem ruckelähnlichen Effekt führt . (Siehe Telecine: Bildratenunterschiede .)

Eingabeverzögerung

Videospiele, die eine Vielzahl von Rendering-Engines verwenden, profitieren in der Regel visuell von der vertikalen Synchronisation, da normalerweise erwartet wird, dass eine Rendering-Engine jeden Frame in Echtzeit erstellt, basierend auf den Variablen der Engine, die in dem Moment, in dem ein Frame angefordert wird, spezifiziert sind. Da die vertikale Synchronisierung jedoch eine Eingabeverzögerung verursacht , stört sie die interaktive Natur von Spielen und stört insbesondere Spiele, die ein präzises Timing oder schnelle Reaktionszeiten erfordern.

Benchmarking

Schließlich impliziert das Benchmarking einer Grafikkarte oder einer Rendering-Engine im Allgemeinen, dass die Hardware und Software die Anzeige so schnell wie möglich rendern, ohne Rücksicht auf die Monitorfähigkeiten oder das resultierende Video-Tearing. Andernfalls drosseln Monitor und Grafikkarte das Benchmarking-Programm, was zu ungültigen Ergebnissen führt.

Andere Techniken

Einige Grafiksysteme lassen die Software ihre Speicherzugriffe ausführen, so dass sie relativ zum Aktualisierungszyklus der Anzeigehardware am gleichen Zeitpunkt bleiben, was als Raster-Interrupt oder Rasting the Beam bekannt ist . In diesem Fall schreibt die Software in die gerade aktualisierten Bereiche des Displays und bleibt direkt hinter dem aktiven Aktualisierungspunkt des Monitors. Dies ermöglicht Kopierroutinen oder Rendering-Engines mit weniger vorhersehbarem Durchsatz, solange die Rendering-Engine den aktiven Aktualisierungspunkt des Monitors "einholen" kann, wenn er zurückfällt.

Alternativ kann die Software stattdessen direkt vor dem aktiven Aktualisierungspunkt bleiben. Je nachdem, wie weit man im Voraus bleiben möchte, erfordert diese Methode möglicherweise Code, der die Anzeige mit einer festen, konstanten Geschwindigkeit kopiert oder rendert. Eine zu hohe Latenz führt dazu, dass der Monitor die Software gelegentlich überholt, was zu Rendering-Artefakten, Tearing usw.

Demo-Software auf klassischen Systemen wie dem Commodore 64 und ZX Spectrum nutzte diese Techniken häufig aufgrund der Vorhersehbarkeit ihrer jeweiligen Videosysteme, um Effekte zu erzielen, die ansonsten unmöglich wären.

Verweise