PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SSAA erzwingen???


DrFreaK666
2002-12-05, 01:15:57
Hi Leutz,

komm mal wieder mit ner verrückten Idee zu euch :D

Also: Ich hab ne Radeon9700PRO, und wie jeder weiss ist damit kei Supersampling-AA möglich (dank Ati).
Daher hab ich mir überlegt ob es nicht möglich wäre ein Programm zu schreiben, welches die Grafikkarte dazu zwingt die Polygon-daten erst in ner höheren Auflösung zu berechnen und dann herunterzusampeln (ihr wisst schon wie ich es meine... ;D ).
So könnte man ja dann SSAA erzwingen.
Ich glaub zwar nicht wirklich dran, dass es möglich ist, würde aber trotzdem ein paar Kommentare dazu hören. (ich träume zur Zeit von 128x AA...)

Greetz

Xmas
2002-12-05, 01:22:02
Da müsstest du schon direkt im Treiber rumhacken. Möglich ist das schon, nur nicht realistisch.

Nasenbaer
2002-12-05, 20:54:50
Originally posted by DrFreaK666
(ich träume zur Zeit von 128x AA...)

Greetz

Erzähl das mal den 128MB auf der Graka. :D

Mfg Nasenbaer

MeLLe
2002-12-05, 21:31:08
Originally posted by Nasenbaer
Erzähl das mal den 128MB auf der Graka. :D
Mfg Nasenbaer
Ein untexturierte Szene in 800x600x16bit sollte er damit schon hinbekommen ;)

Zum Thema: man könnte doch App-seitig Supersampling á la 3dfx per Accumulation-Buffer realisieren. Einfach zwischen den einzelnen Passes die Geometry ein wenig (!) jittern - sollte passen. Nach passablem Speed war ja net gefragt :D

DrFreaK666
2002-12-06, 00:12:00
Hm,

OK, mit 128x AA hab ich wohl etwas übertrieben. 16x würde mir schon reichen. :)
Virtua Fighter 2 mit 16x AA *träum*
Sagt mal, wäre es nicht möglich mit nem Shader das Bild etwas unscharf zu machen???
Ist zwar kein echtes AA, aber besser als nix. Und das sollte auch leichter zu realisieren sein, oder??
Man kann mit den Shadern so viel machen, da sollte die kein Problem darstellen...

Greetz

Nasenbaer
2002-12-06, 15:22:10
Auf Humus' 3D-Page findest du unter OpenGL ne MotionBlur Demo. Du meinst sicher sowas - nur nicht so stark. :)
Ist also möglich...

http://esprit.campus.luth.se/~humus/


Mfg Nasenbaer

Xmas
2002-12-06, 17:45:09
Originally posted by MeLLe

Ein untexturierte Szene in 800x600x16bit sollte er damit schon hinbekommen ;)

Zum Thema: man könnte doch App-seitig Supersampling á la 3dfx per Accumulation-Buffer realisieren. Einfach zwischen den einzelnen Passes die Geometry ein wenig (!) jittern - sollte passen. Nach passablem Speed war ja net gefragt :D
Ja, App-seitig geht das ohne Probleme.
Genauer betrachtet sollte es eigentlich auch mit einem Programm wie 3DAnalyze gehen, dass sich zwischen Applikation und API einklinkt.

Demirug
2002-12-06, 17:49:01
Originally posted by Xmas

Ja, App-seitig geht das ohne Probleme.
Genauer betrachtet sollte es eigentlich auch mit einem Programm wie 3DAnalyze gehen, dass sich zwischen Applikation und API einklinkt.

Ja machbar wäre das schon. Wobei was anderes als ein OG dürfte aus Gründen der Performances recht schwer zu realisieren sein.

Xmas
2002-12-06, 18:11:00
Originally posted by Demirug
Ja machbar wäre das schon. Wobei was anderes als ein OG dürfte aus Gründen der Performances recht schwer zu realisieren sein.
Wieso?
Wie MeLLe erwähnte, per Multisample-Buffer und Masking. Alle Geometrie wird einfach viermal gerendert, jeweils mit einen anderen Mask-Bit und leicht modifizierter Viewport-Transformation. Natürlich müsste auch der LOD-Bias entsprechend der Sample-Zahl angepasst werden.

Noch einfacher und deutlich schneller ist ein temporäres 4xRGSSAA ("Motion Trail"), bei dem jeweils die drei vorherigen Frames mit dem aktuellen geblendet werden. Braucht im besten Fall nur 5 zusätzliche Zeilen Code (das hab ich schon bei einigen DXSDK-Demos ausprobiert)

Demirug
2002-12-06, 18:20:20
Originally posted by Xmas

Wieso?
Wie MeLLe erwähnte, per Multisample-Buffer und Masking. Alle Geometrie wird einfach viermal gerendert, jeweils mit einen anderen Mask-Bit und leicht modifizierter Viewport-Transformation. Natürlich müsste auch der LOD-Bias entsprechend der Sample-Zahl angepasst werden.

Das Problem dabei ist das das Umschalten des Rendertarget eine sehr teurer Aktion ist. Wenn man das für jeden Draw Call 4 mal machen muss geht die Framerate in den Keller. Zudem bekommt man ja noch den 4 fachen Vertex aufwand.

Noch einfacher und deutlich schneller ist ein temporäres 4xRGSSAA ("Motion Trail"), bei dem jeweils die drei vorherigen Frames mit dem aktuellen geblendet werden. Braucht im besten Fall nur 5 zusätzliche Zeilen Code (das hab ich schon bei einigen DXSDK-Demos ausprobiert)

Dabei entsteht doch zusätzlich noch Bewegungsunschärfe, oder ?

Xmas
2002-12-06, 18:27:03
Originally posted by Demirug
Das Problem dabei ist das das Umschalten des Rendertarget eine sehr teurer Aktion ist. Wenn man das für jeden Draw Call 4 mal machen muss geht die Framerate in den Keller. Zudem bekommt man ja noch den 4 fachen Vertex aufwand.
Das mit dem Vertex-Aufwand ist natürlich richtig, aber wieso Rendertarget umschalten? Ein Multisample-Mask-Bit setzen/löschen ist mitnichten ein Umschalten des Rendertargets und kostet praktisch gar nichts.

Dabei entsteht doch zusätzlich noch Bewegungsunschärfe, oder ?
Ja, deswegen die Bezeichnung "Motion Trail". Nicht "Motion Blur", denn dann dürften alte Frames nicht recycled werden, sondern es müssten mehrere Passes pro Frame gerendert werden.

Demirug
2002-12-06, 18:49:24
Originally posted by Xmas

Das mit dem Vertex-Aufwand ist natürlich richtig, aber wieso Rendertarget umschalten? Ein Multisample-Mask-Bit setzen/löschen ist mitnichten ein Umschalten des Rendertargets und kostet praktisch gar nichts.[/SIZE]

Mein Fehler. Ich ging davon aus das man alles selber macht. Auch das Verwalten der Multisamplebuffer und das Downfiltern am ende. Wenn man die bereits vorhandenen Multisamplebuffer benutzt entfällt das natürlich.

Über welche Transformationsmatrix hast du eigentlich das Grid rotiert?

Xmas
2002-12-06, 19:26:57
Originally posted by Demirug
Über welche Transformationsmatrix hast du eigentlich das Grid rotiert?
D3DTS_PROJECTION. Die Verschiebung muss natürlich der Bildgröße in Pixel angepasst werden.

DrFreaK666
2002-12-09, 23:47:10
Hm, von dem ganzen hab ich vielleicht grad ca. 30% verstanden, aber es hört sich net schlecht an... :D
Wie groß ist der Aufwand sowas zu programmieren??

Greetz