Dithering was ist das?

Begonnen von Klauserus, 05. Juli 2020, 09:18:51

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 1 Gast betrachten dieses Thema.

Klauserus


Was ist Dithering

Wenn ich alles richtig verstanden habe, dann handelt es sich um eine Technik der PS1 um verdunkelte Texturen oder Schatten zu erzeugen. Die PS1 Speichert Bilder in 24-Bit gibt diese aber oft nur in 15 Bit aus und benutzt dann die Dithering Technik um z.B, ich nenne es mal einen "Farbverlauf" wie einen Schatten zu erzeugen.

Quelle: hier

   

(links Dithering an/rechts aus)

Anscheinend ist es auch so, wenn Bilder in 16/19-bit vorliegen, diese dann auf 15 reduziert werden und die Technik Dithering greift.

hier auf github gibt es einen Dithering Patcher. Bei diesem kann man bei jedem PS1 image Dithering ausstellen. Habe es bisher nur mit SoulReaver probiert und es hat scheinbar nicht funkioniert. Evtl. liegt das an meinem SCART to HDMI Wandler und das ist genau die Frage die ich mir stelle:

Wann greift Dithering? Kommt das Signal vom TV an die PS1 dass es nur 15 Bit ausgeben soll oder wie kann ich mir das vortsellen? Spiele ich z.B. ein PS1 Spiel über einen Emulator auf einer Nativ HDMI Konsole, fällt das Dithering noch lange nicht so schlimm aus wie native auf der PS1.

Auf RöhrenTV´s soll es auch nicht so auffallen. Das ist wahrscheinlich der Grund warum ich mich jetzt etwas dran störe. Ich bin eben verwöhnt :D



Hier SoulReaver. Finde imho das es schlimmer aussieht mit Patch


SCPH-7002
SCPH-7502
SCPH-5552
SCPH-39004 + Netzwerkadapter
SCPH-70004
SCPH-70004
..irgendwo muss noch eine FAT sein

Takeshi

Es gibt verschiedene Arten der Auflösung: die räumliche (meistens mit dem Begriff "Auflösung" gemeint), die Farbtiefe und die zeitliche Auflösung. Es gibt viele Techniken, bei denen man versucht die Schwäche in einer der Auflösungen durch eine andere zu kompensieren. Dithering ist eine dieser Techniken. Bei ihr wird die farbliche Auflösung durch räumliche Auflösung kompensiert.
Nehmen wir als Beispiel vereinfachst ein Schwarz-Weiß-Bild mit 7 Bit Farbtiefe. Das macht 128 verschiedene Helligkeitsstufen. Nehmen wir Zahlen von 0 bis 255, dann wären es zum Beispiel nur gerade Zahlen, die darstellbar wären. Wir wollen aber die Helligkeit 99 darstellen. Also nehmen wir en Pixel mit der Helligkeit 100, eins mit 98. Diese vermischen wir dann bei der Darstellung und erhalten ein doppelt so großes Pixel mit der Helligkeit 99. Dann haben wir räumliche Auflösung geopfert, um die Farbtiefe zu erhöhen. Dafür reicht es intern mit 15-Bit-Werten zu rechnen. Denn ich denke, die Speicher sind 16 Bit groß, ein Bit ist für die Transparenz und es bleiben pro Farbe jeweils 5 Bit, also sogar symmetrisch.
Da wir den Effekt nun bei 3 Farben nutzen, erhöht sich die Farbtiefe um 3 Bit, also auf 18 Bit, sollte ich keinen Fehler in der Überlegung gemacht haben.
Die nicht pixelgenaue Darstellung der Röhre und das Menschliche Auge machen zusammen die Vermischung der beiden Pixel. Ein LCD-Bldschirm macht diesen Effekt aber etwas kaputt, da es die pixelgenaue Darstellung gibt. Da muss man schon sehr weit weg sitzen, um wieder die Farben zu sehen, die man sehen sollte. Gleichzeitig denkt aber der einfache Anwender, dass das Bild viel besser sei, schließlich sieht man ja jetzt sogar die einzelnen Pixel. Das ist aber nicht gut, sondern schlecht, denn man nimmt einen Filter raus, den die Entwickler einplanten, da sie bewusst "Fehler" im Bild einbauten, die mit dem Filter nicht nur verschwinden, sondern sogar ein besseres Ergebnis erzielen. Ich gehe also davon aus, dass die Entwickler mit 15-Bit-Texturen gearbeitet haben und dann für die Texturen das Dithering aktivieren konnten. Das abzuschalten halte ich nicht für sinnvoll, wird aber natürlich gern gemacht, gerade weil manche Menschen dabei das Gefühl haben noch etwas Qualität herauszukitzeln, die im Original nicht zur Verfügung stand. Es wäre aber kein Problem gewesen damals auf Dithering zu verzichten, also ist ziemlich ausgeschlossen, dass aus Sicht der Spieleentwickler das Dithering eine Qualitätsverschlechterung darstellt.

Der TV sagt der PS1 dabei gar nichts. Das Bild ist analog, es gibt keinerlei Kommunikation vom TV zur Konsole, weshalb eine Konsole auch nie bemerkt, wenn kein TV angeschlossen ist. Im analogen Signal gibt es zwar eine Begrenzung der zeitlichen undräumlichen Auflösung, denn der TV erwartet zu bestimmten Zeitpunkten eine neue Zeile bzw. ein neues Bild. Der Fernseher ist auf gewisse Muster vorbereitet, wie eben 50 Hz und 60 Hz und einen gewissen zeitlichen Abstand zwischen den Zeilen für 576i und 480i. Andere Signale gehen deshalb nicht und deshalb kommen neuere Flachbildfernseher wohl auch nicht mit Videosignalen älterer Konsolen klar, die eine geringere Zeilenanzahl haben.
Die Auflösung in einer Zeile oder auch die Farbtiefe sind nicht direkt begrenzt. Die Quelle kann ohne Probleme 64 Bit Farbtiefe und 1.000.000 Pixel pro Zeile ausgeben. Es liegt am TV mit welcher Genauigkeit er diese Informationen abtastet. Sich auch da an eine gewisse Auflösung zu halten ist trotzdem sinnvoll, um Abtastfehler zu vermeiden. Aber eine glatter Faktor in der Auflösung ist kein Problem, gerade wenn es kleiner wird.
An dem Bild etwas zu verbessern ist schwer, da - einmal ausgegeben - man das Bild nur noch unscharf machen kann. Möchte man mehr Bildqualität herausholen, müsste ein Emulator (egal ob Hardware oder Software) das Verwaschen der Texturen schon intern machen. Dann blieben die Konturen zwischen verschiedenen Objekten sehr scharf, farbliche Übergänge in den Texturen wären aber wie gewünscht in höherer farblicher Auflösung.

Anakin94

#2
Dithering wurde damals auch bei Grafikkarten und 3D Beschleuniger Karten verwendet.
Heute wird das auch noch bei einigen Bildern benutzt.
Ich selber nutzte es ab und zu um Bilder auf eine geringere Farbtiefe zu reduzieren.
Man hat zwar quasi ein "Gitter" im Bild, ich empfinde es aber angenehmer als z.B. JPEG Artefakte durch verlustbehaftete Kompression.
Dithering wird halt benutzt um bei geringer Farbtiefe den Farbverlauf zu glätten.
Das sieht man ja auch schon in dem Vergleichsbild den du gepostet hast.
Leider ist das bei der PS1 bei einigen Spielen sehr extrem zu erkennen.
Man hat ein starkes Gitternetz auf dem Bildschirm.
Mir war es auch damals aufgefallen als ich von "Composite" auf "RGB" umgeschaltet hatte.
Bei der PS1 ist das warscheinlich so extrem wegen der 15 Bit Farbtiefe die bei einigen Spielen genutzt wird.

Bei den 3Dfx Voodoo 3D Beschleunigerkarten war das Dithering kaum bemerkbar, das war sehr gut.
Die damaligen 3D Spiele nutzten aber immerhin eine Farbtiefe von 16 Bit welche doppelt soviele Farben (65536) bietet wie die Farbtiefe von 15 Bit (32768 Farben) der PS1.
Die 3Dfx Karten nutzen auch einen Dithering Filter von 22 Bit und nicht 24 Bit.

Die Technik wurde halt verwendet um Resourcen (Grafikspeicher und Leistung) zu sparen, aber trotzdem dabei ein sauberes Bild ohne Farbarbstufungen zu erhalten.
Bei der PS1 sieht es auf den LCD Bildschirmen mit gutem Signal (z.B. RGB) sehr hässlich aus.
Wo das Dithering ausgegeben wird weiß ich nicht, aber ich hätte auf den Framebuffer der Grafikeinheit getippt.

Hab mal einen Vergleich angehangen mit DD2, links mit Dithering und rechts ohne.
Das erkennst du dam besten am Wagen an den Scheiben und unten an der schwarzen Stoßstange.
Daraus tendiere ich auch, das dein SoulReaver immer noch ungepatched ist.

Ok Takeshi war schneller und ich denke sein Text ist besser. :)
SCPH-102 - OneChip Stealth+NTSC Fix
SCPH-102 PM-41(2) - OneChip Standard
SCPH-30004 V3 - Matrix Infinity v1.93 (Blue Dot)
SCPH-30004 V4 - Matrix Infinity v1.93 (Green Dot)
SCPH-39004 V7 - FMCB v1.965re
SCPH-70004a V12 (Tot) - Matrix Infinity Clone v1.99 (2008)
SCPH-70004b V13 (EE+GS) - Matrix Infinity v1.93 (Green Dot)
SCPH-70004b V13 (EE+GS) - Modbo 760 v1.93 mit Z (2009)
SCPH-90004a V17a
SCPH-90004a V17b - MechaPwn

Klauserus

Vielen Dank für die ausführlichen Antworten.

Hoffe ich habe nichts überlesen, aber warum funktioniert dann ein gepatchtes Spiel auf der PS1? Allein aus Marketinggründen sollte die Konsole doch immer versuchen das beste Bild zu liefern?
SCPH-7002
SCPH-7502
SCPH-5552
SCPH-39004 + Netzwerkadapter
SCPH-70004
SCPH-70004
..irgendwo muss noch eine FAT sein

Takeshi

Dithering ist ja nicht immer sinnvoll. Es hängt vom Entwickler ab. ob er an dieser Stelle Dithering einplant oder nicht. Wenn es optisch nicht ins Konzept eingeplant wurde, ergibt Dithering keinen Sinn und macht das Bild nur schlechter. Ist es aber vorgesehen, ist es ohne schlechter. Die PS1 weiß nicht, was sich der Entwickler dabei gedacht hat. Warum sollte die PS1 das also verweigern?

Klauserus

ok verstehe. ich dachte es hat evtl. auch mit anderen Faktoren zu tun. Dann ist das Bild am TV wirklich sch... und ich kann mich nicht mehr daran erinnern das es schon immer so war. :D
SCPH-7002
SCPH-7502
SCPH-5552
SCPH-39004 + Netzwerkadapter
SCPH-70004
SCPH-70004
..irgendwo muss noch eine FAT sein

Takeshi

Da wundert man sich, ja. Aber auf einer Röhre sieht das halt gleich besser aus, genau aus dem Grund. Beim SNES ist das teilweise noch dramatischer, da wurde der Effekt indirekt noch stärker eingesetzt. Da gibt es wegen der geringen räumlichen Auflösung zwar kaum solche veränderten Übergänge, aber die Wandlung des Bildes ist einkalkuliert, bei allen Sprites. Das sieht einfach nicht so gut aus, wenn es pixelgenau dargestellt wird.

Anakin94

Eventuell ist das Video hier noch interessant.
Wurde vor >2 Stunden hochgeladen.

https://www.youtube.com/v/bi-Wzl6BwRM
SCPH-102 - OneChip Stealth+NTSC Fix
SCPH-102 PM-41(2) - OneChip Standard
SCPH-30004 V3 - Matrix Infinity v1.93 (Blue Dot)
SCPH-30004 V4 - Matrix Infinity v1.93 (Green Dot)
SCPH-39004 V7 - FMCB v1.965re
SCPH-70004a V12 (Tot) - Matrix Infinity Clone v1.99 (2008)
SCPH-70004b V13 (EE+GS) - Matrix Infinity v1.93 (Green Dot)
SCPH-70004b V13 (EE+GS) - Modbo 760 v1.93 mit Z (2009)
SCPH-90004a V17a
SCPH-90004a V17b - MechaPwn

Dragoon


Klauserus

SCPH-7002
SCPH-7502
SCPH-5552
SCPH-39004 + Netzwerkadapter
SCPH-70004
SCPH-70004
..irgendwo muss noch eine FAT sein