PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Alpha-Blending sehr langsam?


R300
2003-12-24, 11:23:18
Hallo
Ich habe beim bauen von Maps für UT2003 gemerkt, dass Alpha-Blending sich sehr stark auf die Performance auswirkt.
Bei der Map CTF-Maul z.B. ist es so, dass ich mit allen Details ca.43FPS habe.
Wenn ich das Gras abschalte, habe ich schon 60FPS und wenn ich dazu noch den Himmel durch eine simple Textur ersetze,
habe ich schon 80 FPS.
Wenn ich aber die Textur Detail von Highest auf Lowest stelle,
wird meine Graka keinen einzigen Frame schneller.
Also glaube ich, dass es nicht an der Rendering Leitung meiner Radeon liegt.

Und jetzt zur meiner Frage:
Ist Alpha-Blending immer auf allen Grakas so langsam oder ist es ein Problem der Unreal Engine?

Demirug
2003-12-24, 11:31:57
Alpha-Blending ist schon mal von Prinzip aus langsamer weil ja der aktuelle Inhalt des Framebuffers eingelsen werden muss. Das kostet Bandbreite. Gerade wenn man dann nur mit einer Textursicht arbeitet haben die Chip einfach nicht genügend Bandbreite um noch mit maximaler Fillrate zu laufen.

Erschwerend kommt beim Alpha-Blending noch hinzu das man abhänig vom genauen Effekt die ganzen Flächen vorsortieren muss. Wenn ich das Gras von UT2003 aber gerade richtig in Erinnerung habe sollte das dort nicht notwendig sein.

R300
2003-12-24, 11:49:49
WOW, die Bandbreite von fast 20GB/s ist immer noch nicht genug.

Demirug
2003-12-24, 12:28:32
Das reicht bei weitem nicht.

Alpha-Blending mit Z-Buffer und einer Texturschicht ohne Kompression braucht:

32 Bit Textur auslesen
32 Bit Framebuffer lesen
32 Bit Framebuffer schreiben
32 Bit Z-Buffer lesen
32 Bit Z-Buffer schreiben.
= 160 Bit pro Pixel

Eine 9800XT kann das 412M*8 mal = 3296M mal Das Entspricht 527360 MBits/s = 65,92 GB/s. Dazu kommt dann noch der Protokoloverhead des Speichers.

R300
2003-12-24, 12:44:16
Wie langsam sind dann Grakas mit 64Bit Speicherinterface....:o
Ich vermute mal, dass die Kyro nicht so viele Speicherzugriffe braucht, oder?

Warum 32 Bit Z-Buffer? Die Radeons können doch nur 24 Bit.

Demirug
2003-12-24, 12:53:18
Original geschrieben von R300
Wie langsam sind dann Grakas mit 64Bit Speicherinterface....:o
Ich vermute mal, dass die Kyro nicht so viele Speicherzugriffe braucht, oder?

Bei den Kyros fällt da einiges weg. Der Z-Buffer muss ja nicht gelesen oder beschrieben werden. Auch das Zwichenspeichern des Framebuffers ist nicht notwendig. Liegen allerding zu viele Alphaschichten übereinander bekommen auch die Kyros Probleme und brechen ein. Wir haben das mal ausprobiert.

Warum 32 Bit Z-Buffer? Die Radeons können doch nur 24 Bit.

Ja, da kommen aber noch 8 Bit Stencil oder 8 Füllbits hinzu. Speichertechnisch rechnet man beim Z-Buffer deswegen immer erstmal mit 16 oder 32 Bit. Interne Optimierungen können den wirklichen Bedarf an Bandbreite natürlich senken. Richtig exakt kann man das sowieso nie ausrechnen.

R300
2003-12-24, 13:39:42
Original geschrieben von Demirug
Bei den Kyros fällt da einiges weg. Der Z-Buffer muss ja nicht gelesen oder beschrieben werden. Auch das Zwichenspeichern des Framebuffers ist nicht notwendig. Liegen allerding zu viele Alphaschichten übereinander bekommen auch die Kyros Probleme und brechen ein. Wir haben das mal ausprobiert.


Zu viele Alphaschichten auf einem Polygon oder auf mehreren Polygonen hintereinander?
Bei wievielen Schichten bricht die Kyro ein?

Demirug
2003-12-24, 14:18:52
Original geschrieben von R300
Zu viele Alphaschichten auf einem Polygon oder auf mehreren Polygonen hintereinander?
Bei wievielen Schichten bricht die Kyro ein?

Polygone natürlich. Was die Anzahl angeht so müsste es hier irgendwo noch einen alten Thread dazu geben.

Exxtreme
2003-12-24, 17:40:43
Original geschrieben von Demirug
Wenn ich das Gras von UT2003 aber gerade richtig in Erinnerung habe sollte das dort nicht notwendig sein.
UT2003 hat anscheinend einige "Tricks" auf Lager, was die Sortierung angeht. Das wirkt sich dann so aus: