PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Die Achillesferse moderner Grafiktechnologie: Shaderaliasing


xiao didi *
2009-05-19, 04:21:31
Je aufwendiger und damit (hoffentlich) auch hübscher die Grafik wird, desto mehr wird es zu einem ernsten Problem: Das Shaderaliasing.

Clever gemachter Content kann es umgehen oder zumindest vermindern, jedoch mehren sich die Vorfälle, bei denen es unangenehm auffällt.
Crysis, Source-Engine Spiele, viele UE3-Engine Spiele, um nur die Prominentesten zu nennen sind die Opfer.

Natürlich hilft die SSAA-Keule (möge sie uns noch ein wenig erhalten bleiben) und Dargo zeigte uns jüngst die Möglichkeit, unseren Bildschirmen höhere Auflösungen zu entlocken und so zu downsampeln.

Aber was wird noch gegen Shaderaliasing getan? Kann nur guter Content dagegen helfen? Müssen wir auf hohe DPI-Werte von Bildschirmen warten? Oder haben die grossen IHV's vielleicht schon Pläne, wie man es bekämpfen kann?

Update:
Selektive Supersampling Demo von Humus (http://www.humus.name/index.php?page=3D&ID=64). (Repack von BAGZZlash (http://speedshare.org/download.php?id=606E22093))
Das Supersampling ist komplett als Shader implementiert. Das in ein Spiel zu übernehmen ist nicht übermäßig aufwändig.

Simon
2009-05-19, 10:33:16
Selective Supersampling anstelle von Fullscreen SSAA. Flimmert ja hauptsächlich der Specular-Anteil und/oder Vegetation.

Trap
2009-05-19, 10:55:48
Für flimmerfreie Shader müsste die berechnete Funktion stetig und mit entsprechend kleiner Ableitung sein. Die Shaderprogrammiersprachen sind zu allgemein und zu mächtig, um das auf Seite der Treiber allgemein testen zu können. Beheben durch Veränderung der Berechnung kann man es auf der Treiberseite sowieso nicht (da würden sich die Entwickler zu Recht drüber aufregen).

Man könnte jeden Shader mit Beispieldaten testen und damit manche als flimmeranfällig markieren (oder per Treiber ähnlich wie beim Shaderreplacement) und die supersamplen, aber das bringt nur Bildqualität, keine längeren Balken :rolleyes:

Am ehesten könnte ich mir eine Flimmergefahr-Markierung in den Shaderentwicklungsprogrammen für Spieleentwickler vorstellen.

Spasstiger
2009-05-19, 11:09:04
"Selective supersampling"-Demo von Humus (http://www.humus.name/index.php?page=3D&ID=64)

Trap
2009-05-19, 11:19:58
"Selective supersampling"-Demo von Humus (http://www.humus.name/index.php?page=3D&ID=64)
Er macht einem das Ausprobieren aber nicht leicht, packt JPGs dazu und lädt in der .exe TGAs...

Spasstiger
2009-05-19, 11:25:24
Er macht einem das Ausprobieren aber nicht leicht, packt JPGs dazu und lädt in der .exe TGAs...
Ja, ist mir auch schon aufgefallen. Früher war das nicht so, aber bei irgendeinem Update hat er es wohl verbockt.

Exxtreme
2009-05-19, 11:29:35
"Selective supersampling"-Demo von Humus (http://www.humus.name/index.php?page=3D&ID=64)
Das muss man AFAIK aber komplett in Software machen. Und da bleibt die Frage ob das in Spiele überhaupt Einzug hält. Da diese Extrawurst definitiv Kosten verursacht.

BAGZZlash
2009-05-19, 12:14:32
Er macht einem das Ausprobieren aber nicht leicht, packt JPGs dazu und lädt in der .exe TGAs...

Hab' die Files mal konvertiert und einen "repack" gemacht. Download hier (http://speedshare.org/download.php?id=606E22093).

Trap
2009-05-19, 12:31:23
Das muss man AFAIK aber komplett in Software machen. Und da bleibt die Frage ob das in Spiele überhaupt Einzug hält.
Das Supersampling ist komplett als Shader implementiert. Das in ein Spiel zu übernehmen ist nicht übermäßig aufwändig, aber ich glaub auch nicht, dass es große Verbreitung erlangen wird. Aufwand, Performancenachteil und unspektakuläres Ergebnis...

BAGZZlash
2009-05-19, 13:06:29
unspektakuläres Ergebnis...


Zumindest das liegt natürlich im Auge des Betrachters, ich finde das Ergebnis überaus beeindruckend.
Leider hast Du aber wohl recht damit, dass es sich nicht durchsetzen wird. Zu großer Performanceimpact.

xiao didi *
2009-05-19, 14:36:24
Ich war mal so frei und hab oben einen Link zu der Demo hinzugefügt.

Ich finde das Ergebnis übrigens auch sehr überzeugend, allerdings, wie BAGZZlash bereits erwähnte, zu einem hohen Preis.

Trap
2009-05-19, 14:47:59
Ja, überzeugend ist das schon, aber spektakulär eher nicht. Bumpmapping vs. kein Bumpmapping ist spektakulär, bessere Filterung ist hübsch, aber höchstens einen Nebensatz in einem Review wert.

xiao didi *
2009-05-19, 15:03:33
Ja, überzeugend ist das schon, aber spektakulär eher nicht.
Spektakulär würde ich MSAA auch nicht bezeichnen, aber es ist (für mich) unverzichtbar.
Aber solange wir keine Bildschirme mit abartig vielen DPI haben, wird Flimmern (Shaderaliasing ist ja leider nicht der einzige Grund ;() immer ein Problem bleiben, wenn man dagegen nichts unternimmt.

|FAT|Punisher
2009-05-19, 15:59:34
Ich hab mir die Mühe gemacht und die Dateinamen im Quellcode korrigiert und das Ganze neu kompiliert. Dummerweise hat das angebliche selektive Supersampling bei mir den gegenteiligen Effekt: abgeschaltet ist z.B. der Boden wesentlich ruhiger als mit SS, dann gibt's flimmrige Pixel. :eek:

[Edit] Aha, wenn ich Dynamic Branching ausschalte, funktioniert's. Wozu genau ist das da? :smile:
[Edit 2] Quotet mir jetzt nicht die Beschreibung von der Homepage, die sagt mir so nix. :biggrin:

Simon
2009-05-19, 16:27:05
[Edit] Aha, wenn ich Dynamic Branching ausschalte, funktioniert's. Wozu genau ist das da? :smile:
Dynamic Branching dürfte auf ATI-Karten etwas Performance bringen. Auf meiner 8600GTS macht es das ganze nur langsamer.

Gast
2009-05-19, 17:59:28
Dynamic Branching dürfte auf ATI-Karten etwas Performance bringen. Auf meiner 8600GTS macht es das ganze nur langsamer.

Wohl kaum, seit G80 hat nv eine kleinere branching-granularität, wenn es was bringt, dann eher bei NV mehr (außer verglichen mit R520, dessen branching-granularität ist noch geringer)

Mr. Lolman
2009-05-19, 18:41:27
HD4870@825/1150, Catalyst 9.4, XP32 SP2:

640x480, 4xSSAA, Dynamic Branching OFF: ~2050fps
640x480, 4xSSAA, Dynamic Branching ON: ~3000fps (+48%)

1280x1024, 11xSSAA+8xMSAA, Dynamic Branching OFF: ~350fps
1280x1024, 11xSSAA+8xMSAA, Dynamic Branching ON: ~650fps (+86%)
1280x1024, 11xSSAA, Dynamic Branching OFF: ~420fps
1280x1024, 11xSSAA, Dynamic Branching ON: ~810fps (+93%)

640x480, 11xSSAA, Dynamic Branching OFF: ~1050fps
640x480, 11xSSAA, Dynamic Branching ON: ~2100fps (+100%)


1280x1024, noSSAA+8xMSAA, Dynamic Branching ON/OFF: ~1060fps

1280x1024, 3xSSAA+8xMSAA, Dynamic Branching ON: ~900fps (-15%)
1280x1024, 3xSSAA+8xMSAA, Dynamic Branching OFF: ~750fps (-29%)




Die Granulatität dürfe idF ziemlich wurscht sein. Bis ~100% Steigerung sind durch DB drinnen. Andererseits reichen in der Szene auch locker 3 Samples. Da ist der fps-Verlust wenigstens relativ gering. Wobei bei einem Shaderkracher wie Crysis käme man wohl nicht mit 15% fps Verlust davon. Da ist die effizienteste Methode wohl, das Spiel gleich in ner höheren Auflösung berechnen zu lassen und dann runterzuskalieren...

Coda
2009-05-19, 19:04:20
Es kommt da auch nicht nur auf die Granularität an sondern auch auf die Anordnung der Quads und anderer Bottlenecks.

|FAT|Punisher
2009-05-19, 19:04:50
8800 GTX, XP32:

640x480, 4xSSAA, Dynamic Branching OFF: ~3000fps
640x480, 4xSSAA, Dynamic Branching ON: ~2500fps :eek:
640x480, 11xSSAA, Dynamic Branching OFF: ~1700fps

1280x1024, 11xSSAA, Dynamic Branching OFF: ~460fps

=Floi=
2009-05-19, 19:12:08
also mit 8xS im RT habe ich da kein flimmern. Die ziegel haben dafür ein moire gitter. Getestet auf einem GF7.

G.A.S.T.
2009-05-20, 12:26:38
Ist eine Art Weichzeichner (bzw. Blur-Filter) nur für die Shader eigentlich nicht möglich?