PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Interlaced Rendering


Xmas
2005-06-09, 16:03:46
Ausgehend von der Überlegung dass Konsolen bei Interlaced Darstellungsmodi auch nur die hälfte der Zeilen rendern könnten, habe ich mir mal die Mühe gemacht ein kleines Programm zu schreiben, das es erlaubt progressive und Interlaced-Darstellung mit verschiedenen Deinterlacing-Methoden zu vergleichen. Leider bin ich noch nicht dazu gekommen, richtig hochwertiges Deinterlacing zu implementieren. Es wäre prinzipiell so möglich, durch die eingesparte Füllrate räumliche Auflösung gegen temporale Auflösung (fps) zu tauschen, oder statt einer niedrigen progressiv-Auflösung eine höhere Interlaced-Auflösung zu wählen.

Download (http://www.xm45.de/3D/interlaced.rar)

Voraussetzungen:
.NET Framework 1.1
Managed DirectX 9.0c
Grafikkarte die SM2.0 unterstützt.

Vor dem Start sollten im Treiberpanel AA auf applikationsgesteuert und VSync auf an gestellt werden.
Sollte VSync nicht richtig funktionieren (sieht man am fps-Counter), kann man im Programm über Change Device immer noch das Present Interval auf One stellen.
Das eingestellte AA wird mit älteren ATI-Treibern nicht funktionieren.

Da ich nur einen TFT habe, würde es mich einmal interessieren wie gut oder schlecht das ganze auf CRTs bei hoher Bildwiederholfrequenz funktioniert. Auch gibt es wohl scheinbar Probleme mit der fmod-Berechnung auf NVidia-Karten.

Demirug
2005-06-09, 18:06:15
Welche MDX Version braucht man dafür denn? Die ändert sich ja alle 2 Monate.

Xmas
2005-06-09, 20:25:42
Also eigentlich 1.0.2902.0 (v9.02.2904). Leider lässt mich VS diese Assemblies bei den Verweisen nicht direkt auswählen, nur die 1.0.900.0 (v4.09.00.0900). Die verwendeten DXMUT-Dateien brauchen aber die neueren Assemblies weil sich da ein paar Dinge geändert haben. Also habe ich die neueren "manuell" per Pfad herausgepickt, aber das sollte doch eigentlich keinen Unterschied machen, oder?
Wie krieg ich es denn hin dass das Programm auch mit allen neueren Versionen läuft? Oder muss ich die Assemblies immer mitliefern?

Demirug
2005-06-09, 20:39:42
Ja, MS sieht es leider vor das man MDX und D3DX immer mit der App mitliefern muss. Inzwischen erlauben sie zumindestens das man nicht das ganze DX mitliefern muss sondern nur noch MDX und D3DX.

BTW: Interlaced funktioniert irgendwie nicht so ganz richtig bei mir.

Xmas
2005-06-09, 20:57:14
Ja, MS sieht es leider vor das man MDX und D3DX immer mit der App mitliefern muss. Inzwischen erlauben sie zumindestens das man nicht das ganze DX mitliefern muss sondern nur noch MDX und D3DX.
Das ist ja ärgerlich. Zumindest für so kleine Downloads stören die 3,5 MiB dann doch erheblich.

BTW: Interlaced funktioniert irgendwie nicht so ganz richtig bei mir.
NVidia-Karte? Das kommt wohl von unterschiedlichen Präzisionen...
Ich benutze fmod(texcoords, 2). Scheinbar sind bei ATI die Koordinaten immer knapp über 0 bzw. 1, bei NVidia knapp darunter. So bekomme ich bei ATI dann immer abwechselnd 0.0001 und 1.0001, während es bei NVidia 1.9999 und 0.9999 sind. Das muss ich noch irgendwie ausbessern.

Demirug
2005-06-09, 21:05:15
Das ist ja ärgerlich. Zumindest für so kleine Downloads stören die 3,5 MiB dann doch erheblich.

Ich bin gerade am Überlegen ob ich ein paar kleine Dummy Anwendung schreibe welche im wesentlichen nur die verschiedenen D3DX und MDX Versionen instalieren.

NVidia-Karte? Das kommt wohl von unterschiedlichen Präzisionen...
Ich benutze fmod(texcoords, 2). Scheinbar sind bei ATI die Koordinaten immer knapp über 0 bzw. 1, bei NVidia knapp darunter. So bekomme ich bei ATI dann immer abwechselnd 0.0001 und 1.0001, während es bei NVidia 1.9999 und 0.9999 sind. Das muss ich noch irgendwie ausbessern.

Ja ein 6800GT. Das Problem ist das es im Fenster zu hell ist und flimmert und im Fullscreen zu dunkel.

Ich verstehe allerdings nicht wie du mit einer Pixel breiten Zeile Fillrate sparen möchtest.

Coda
2005-06-09, 21:43:53
Ich denke es geht ihm nur um eine Demonstration, nicht um eine echte Füllratenersparnis.

Xmas
2005-06-09, 23:55:05
Ich denke es geht ihm nur um eine Demonstration, nicht um eine echte Füllratenersparnis.
Genau. Ich wollte hier nur mal schauen ob interlaced Rendering eine Methode ist, die sich in irgendeiner Form sinnvoll einsetzen lässt. Und weil ich keinen CRT habe und mich auch die Meinung anderer dazu interessiert, habe ich das Programm eben veröffentlicht.

Lohnen tut sich das natürlich nur, wenn die Hardware auch interlaced rendern und ausgeben kann. Dieses Programm tut ja tatsächlich sogar mehr, wenn es interlaced ausgibt: längerer Shader, und das Bild wird bei allen Modi progressiv in eine Textur gerendert. Wer mag kann sich ja die Shader in der .fx-Datei anschauen und auch um eigene Techniken erweitern.

Durch die Addition einer winzigen Konstante im fmod-Argument sollte sich das Helligkeitsproblem eigentlich beheben lassen. Mit dem Refrast stimmt das Ergebnis aber auch so schon.


Ach ja, die nötigen Assemblies:
Download (http://www.xm45.de/3D/mdxassemblies.rar)

aths
2005-06-10, 17:57:20
Genau. Ich wollte hier nur mal schauen ob interlaced Rendering eine Methode ist, die sich in irgendeiner Form sinnvoll einsetzen lässt.Rechenleistung gezielter einsetzen. Nur auf langsam bewegten Objekten kann der Mensch die Details sehen. ("Weave"-Filterung.) Schnell bewegte Objekte erscheinen eh verschwommen (dann "Bob"-Filterung, also Interpolation.)