Downsampling, wo findet die Interpolation statt

j0hnwayn3

Cadet 4th Year
Registriert
Aug. 2008
Beiträge
121
Hi,

Ich bin gerade dabei eine Arbeit über Anti Aliasing zu schreiben. Hierbei möchte ich auch kurzen Bezug auf die Möglichkeit des Downsamplings nehmen (manuelle Erstellen einer Auflösung im Grafiktreiber höher als die maximale Displayauflösung damit ein Super Sampling Anti Aliasing Effekt zustande kommt, sehr bekannt um zB in GTA IV Anti Aliasing zu ermöglichen).
Hierbei wird ja wie bei normalen SSAA/FSAA die gesamte Szene in einer Auflösung gerendert die so nicht auf dem Monitor darstellbar ist. Bei FSAA wird das downsampling bzw die Interpolation auf die ursprüngliche Auflösung bereits auf der Grafikkarte erledigt und das Signal wird an den Monitor in der passenden Auflösung (bei einem 1920x1080 ein Signal in der selben Auflösung) geschickt.
Wie ist das nun bei manuellem Downsampling mit Custom Auflösungen, wird hier das Bild mit der höheren Custom Auflösung an den Monitor gesendet und dieser skaliert das hinunter oder passiert dies genau wie bei "normalen" FSAA schon auf der Grafikkarte.

Hoffe ich habe mich verständlich ausgedrück und mir kann jemand helfen :), habe schon versucht über Google fündig zu werden doch irgendwie finde ich da nichts passendes, daher wären Links zu passenden Artikeln sehr nett

MFG
j0hnwayn3
 
Passiert in der Grafikkarte, der Monitor könnte idR. mit der höheren Auflösung gar nichts anfangen.
 
Also soweit ich weiss wird das Downsampling vom Monitor gemacht.
Die Grafikkarte schickt eine höhere Auflösung an den Monitor und der Monitor skaliert das ganze dann herunter damit er es anzeigen kann.
 
Nein, es macht ganz sicher die Grafikkarte. Diese Rechnet das Bild wieder runter um es in der nativen Displayauflösung auszugeben.
 
Äh. Nur mal so:

Wenn ich in OpenGL die Szene eine RTT rendere (rendertarget Texture), kann ich mir die Auflösung aussuchen. Das wiederum 2D auf den Viewport gerendert ergibt automatisch ein Downsampling (rastern) auf der GPU.

Im übrigen hat die Monitorauflösung nur peripher mit dem Downsampling zu tun.

Wenn jemand mit einem Tool wie "amd downsampling gui" dem Monitor eine höhere Auflösung verpasst, dann sampled der Monitor tatsächlich selbst down.
Was man daran bemerkt, dass diese ganzen Tools meistens bei kaum mehr als FullHD schon wieder Schluss machen, weil sie die höheren Auflösungen wirklich nicht können. Da spielt glaube ich der RamDAC eine begrenzende Rolle. Mit AA hat das nix zu tun.

Zu oben nochmal: Im Fall eines Downsampling Tools - dem Monitor wird erzählt er solle doch zB 2300x1400 darstellen, was vllt. gerade so möglich ist - im Spiel selber wählt man dann auch wieder GENAU diese Auflösung aus - d.h. das Spiel rendert in einen Viewport mit dieser Pixelanzahl...

Hier schließt sich der Kreis.

FSAA/MSAA - kannst du nicht machen, es sei denn du schreibst mal schnell einen Software-Rasterizer und implementierst dort dein FSAA/MSAA.

TXAA/FXAA/Morphologisch - Kannst du gerne in einem Shader machen. Source von Intel/Nvidia angucken und anpassen. Wüsste nur nicht wozu das jemand will.

SSAA - bitte: Erstell ein 4K RTT, render es flach auf den Viewport (a lá PostProcess-Effekt), gerne mit LOD-Level "-1" auf die Kamera (je nach Engine) und voila, du hast SSAA 2x mit superscharfem Bild. Die Downsampling Qualität hier hat dann aber auch eventuell mit dem Filtermodus der GPU in dem Moment zu tun (Bil., Tril., Anisotrop. 2x,4x,8x,16x).



EDIT: Nochmal zusammengefasst. Diese Downsampling Tools fügen alle deinem Monitor eine höhere Auflösung hinzu. Schau sie dir mal genau an. Das Bild wird fertig an den Monitor gesendet der dann tatsächlich runterskaliert. Anders macht es nämlich keinen Sinn. Siehe oben, bei einem FullHD Monitor ist fast immer gleich nach FullHD Schluss, wobei jede GPU mindestens 4K kann, ganz egal ob dann die FPS bei 1 liegen würde - es müsste gehen. Tut es aber nicht.

Diese DownsamplingTools nimmt man übrigens nur wenn das Spiel selbst kein SSAA anbietet und zb bei AMD das CCC es nicht schafft SSAA zu forcieren. (Bsp Worms Revolution).
 
Zuletzt bearbeitet: (Tippfehler)
Genau diese Frage: "Wer skaliert hier runter?" habe ich mir auch schon gefragt. Ich würde aber auch sagen, dass der Monitor hier der skalierende ist, bzw. es kommt darauf an, wie man es angeht. Mit diesen Down-Sampling Tools habe ich bisher noch keine Erfahrung sondern habe jetzt nur mal zum testen die Auflösung direkt im Grafiktreiber (NVidia) hochgeschraubt.

Hat schon mal einer von Euch eine kleinere Auflösung eingestellt, als Eurer Bildschirm (TFT) kann? Ein jeder sollte bemerkt haben, dass die Kanten von Schrift und Objekten geglättet werden, weil der Monitor Bildpunkte unterbringen muss, die der PC gar nicht haben möchte. Jetzt könnte man denken, dass die Graka das Bild direkt rechnet. Doch hier muss ich sagen, dass ich bei uns im Laden oft verschiedene Bildschirme als Vorführgeräte habe und einige Bildschirme dabei waren, wo man im Monitor Menü einstellen konnte, ob bei niedriger Auflösung das Bild 1:1 mit Rand ohne Glättung oder gestreckt angezeigt werden soll. Und bei diesen Bildschirmen war es in der Tat so, dass das Bild bei ausschalten des Streckens im Bildschirmmenü das Bild mit Schwarzen Rändern aber ohne diesen Glättungseffekt angezeigt wurde. Ja, das ist schon eine Zeit her, dass ich diese Funktion gesehen habe und es gab sie auch recht selten, aber es gab sie. Oft war sie bei der Umstellung von 4:3 auf 16:10 Monitoren vorhanden, wo man eben am Bildschirm entscheiden konnte, ob man 4:3 Bildmaterial mit Rand oder auf 16:10 gestreckt haben wollte. Und hier zeigt sich meiner Meinung doch, dass eben nicht die Grafikkarte die Berechnung gibt, sondern die eben das 4:3 Signal gesendet hat, und der Monitor streckt.
Warum sollte es also bei den anderen Auflösungen anders sein?

Vielleicht habe ich auch irgendwo einen Denkfehler, will ich nicht ausschließen. Aber dass eben nicht jede Auflösung zum downsampling funktioniert, zeigt doch meiner Auffassung nach, dass man eine Auflösung erwischen muss, die der Bildschirm eben noch strecken bzw. stauchen können muss. Und den Glättungseffekt beim 50% Downsamlping, den ich so von den niedrigeren Auflösungen kenne, sehe ich auch, wenn ich z. B. den Desktop "downsample", also quasi direkt vom Treiber ohne extra Tool.

Oder habe ich das Prinzip falsch verstanden?
 
Soweit ich weiß findet das Downsampling komplett auf Seiten des Monitors statt. Würde es auf der GraKa stattfinden würde diese an den Monitor immer die Gleiche Auflösung @ gleicher Hz-Zahl schicken (z.B. 1920x1080 @ 144Hz bei mir).
Dass würde bedeuten dass ich auch auf 19.200x10.800 @ 144Hz Rendern könnte und das Bild immer noch ankommt. Wer aber schonmal ein bisschen mit Downsampling experimentiert hat wird schnell bemerken dass dies nicht funktionieren wird.

Zum einen muss das verwendete Kabel so eine Bandbreite liefern können. Hier ist primär der Anschluss das wichtigste Element, also ob man nun VGA, DVI, Display Port oder HDMI nutzt. Des weiteren kann sich auch ein hochwertiges und/oder kurzes Kabel positiv auswirken da die Signale auch alle am Monitor ankommen.
Zum anderen muss der Monitor mit stark abweichenden Auflösungen umgehen können.

DVI ist hierbei bei hohen Hz-Zahlen nur bedingt geeignet. UHD lässt sich noch mit relativ brauchbaren Hz-Zahlen übertragen, alles darüber wird aber ziemlich frickelig. 1,5x HD geht mit 100Hz ganz gut, 120Hz sind mit einem sehr kurzen und hochwertigen Kabel vl. auch möglich. Für höhere Auflösungen und/oder Hz-Zahlen empfiehlt sich HDMI oder Displayport.
 
Zurück
Oben