AGP8x + Doom III

D

DjDino

Gast
Ein Polygon besteht ja aus aneinander b.z.w. umeinander sich schliessenden Dreicken und diese Drieecke haben immer 3 Eckpunte. Damit der Grafikchip weis wo er ein Poylgon umsetzen soll braucht er eben diese 3D-(Eck)-Koordinaten, definiert durch : X,Y,Z (4Byte pro Koordinate)- um nur EINEN solchen Eckpunkt zu bestimmen braucht man also in der Regel 4x3 = 12 Byte.
Hinzu kommt jetzt aber noch die "Normale" des Eckpunktes welche als "Konstante" deren genauere Positionsbestimmung erleichtert,
hierfür braucht es normal nochmal 12Byte.
-----------------------------
Ergo : Gesammte Geometrie-Bestimmung eines Eckpunktes : 24Byte.
-----------------------------
( Jetzt wäre schon ein nacktes "Drahtgittermodell" (Wireframe) einer Spielfigur fertig und hierfür 24Byte pro Eckpunkt Datenflus.
nötig b.z.w. ~ 72Byte pro Dreieck.)

Sieht aber nicht schön aus, auf diese "Dreiecksflächen" kommen jetzt noch Texturen.(Ebenfalls Eckunkt-definiert)
Eine Textur braucht Farbwerte : RGBA (R=rot,G=Grün,B=Blau,A = Alpha-Wert, z.b. transparenz,halbdurchsichtige Texturen...)
Das sind dann also jeweils 1 Byte für R,G,B und A nötig, zusammen : 4Byte, kommen aber noch etwas mehr Alpha-Definitionen hinzu kann es auch bis 8Bit hinaufgehen.
-----------------------------------------------
Farbe : 4-8 Byte. (mehr bei viel Alpha-Einsatz)
-----------------------------------------------
Es müssen jetzt aber noch die Farben korrekt auf die jeweiligen Dreiecke plaziert werden, dazu braucht es Texturkoordinaten wodurch sich der Datenaufwand dann doch auf 4-32Byte erhöht.

Diese Datenmenge hängt insgesammt jetzt also davon ab wie grosse(detailierte) Texturen später den Dreiecken auferlegt werden sollen.

In einem Spiel wie z.b. UT2003 mit seinen grösseren,Detail-Texturen von 1024x1024 fallen so für die Texturkoordinaten um die 16Byte an, noch schönere und grössere Texturen mit 2048x2048 oder mehr fordern dann bis 32Byte an Texturkoordinaten.
---------------------------------------------------------------------------------
Texturkoordinaten : 16-32 Byte. (mehr bei grösseren also detailierteren Texturen)
---------------------------------------------------------------------------------

ALL DAS ZUSAMMEN ERGIBT ZWISCHEN ~ 40 - 70 BYTES FÜR EINEN VOLLSTÄNDIGEN ECKPUNT.

Hinzu kommen jetzt aber noch für ein vollständiges Dreieck einige "AGP-Steuerdaten" welche aber anscheinend eine Art Geheimnis der Chipdesigner sind - diese Daten sollen aber in der Regel um die 10% des gesammten "Dreieckdatenflusses" ausmachen.

EIN DREIECK BESTEHT AUS 3 ECKPUNKTEN - MACHT ALSO FÜR EIN DREIECK + STEUERDATEN
(40x3+Steuerdaten) = ca.130 Bytes bis (70x3+Steuerdaten) = ca. 230Bytes.

-------------------------------------------------------------------------------

Wirklich nur über den Dauem gerechnet ;

Wenn man jetzt also z.b. von einem Spiel wie Doom III weis das es insgesammt
(Szenerie + Modelle) um die 100.000 Polygone einsetzt und vorwiegend mit
2048x2048 grossen Texturen arbeitet sowie auch Mutlitexturing und Alpha-Effekte
einsetzt ergibt sich hierbei ein "INSGESAMMT NÖTIGER AGP-DATENFLUSS" von grob gerechnet :

Fertige (Vertex)-Positionsbestimmung : ~ 24Byte

plus :

Farbe : 8bytes

plus :

Texturkoordinaten : 16Byte

plus :

Steuerdaten : 10%
------------------
= zusammen rund 57 "Eckpunkt-Bytes"
mal 3(für ein vollständiges Dreieck) = 171Bytes
-----------------.
Jetzt der Datenaufwand pro Dreieck noch mal Anzahl der Polygone
(Gemeinsamme Eckpunkt-Nutzung aussen vor) im Spiel :

100000 x 171Bytes = 1,71 Gybte/sec.

Doom III grob geschätzt : 1,71Gbyte/sec. Anforderungen an den AGP-Bus.

AGP4x ermöglicht maximal ~ 1Gbyte/sec.
AGP8x ermöglicht maximal ~ 2Gbyte/sec.

Meine Frage nun : Habe ich hier einige Parameter falsch gesetzt, missverstanden oder etwas ausgelassen ?

Carsten ?
 
du hast vergessen, daß eine Grafikkarte über eigenen Speicher verfügt, der Bandbreiten zur Verfügungs stellen kann, die jenseits der AGP-Transferrate liegen.

Deine Rechnung, wenn ich sie richtig interpretiert habe, würde voraussetzen, das die GraKa sämtliche Daten zur Berechnung über den AGP-Bus ziehen müsste.
Das tut sie aber nicht.
Es werden gelegentlich größere Texturmengen geswappt, je nach Engine und vorhandenem Grafikspeicher geschied das entweder beim Betreten eines Levels oder eines neuen Raumes, dann stockt das Spiel i.d.R. für einen Bruchteil einer Sekunde und läuft dann weiter. Hier könnte man u.U. von AGPx8 profitieren.
Für die reinen Berechnungsdaten genügt derzeit immernoch AGPx2.
 
Du meinnst Vorladen von Texturen : "TexturePrecache", ja danke und schon klar wobei man ja nur hoffen kann das der intere Grafik-Ram (auch) hierbei ausreicht weil überschüssige Texturen die nicht mehr in den Grafik-Ram passen per AGP-Texturing in den Hauptspeicher wanderen was lahm ist zumal es den AGP-Bus vielleicht nur zusätzlich verstopft(nebst Geometriedatenfluss) Meine Rechnung bezieht sich rein auf den AGP-Bus, nicht was anschliessend die Pipeline daraus mehr oder weniger effektiv würfelt. Die Texturladegeschwindigkeit könnte dann von AGP8x profitieren ?
 
Original erstellt von DjDino
Die Texturladegeschwindigkeit könnte dann von AGP8x profitieren ?

Vorausgesetzt, der Hauptspeicher hat mal so fix 2 GB/s "übrig". :D:D
- beim VIA P4X333 und Intel 8xx (welcher auch immer AGP 3.0 untersützen wird) sehr unwarscheinlich, da der Prozessor bereits viel Bandbreite braucht
- beim VIA KT400 - nein, selbst wenn der RAM mit 200MHz FSB läuft und der Prozessor mit 133MHz FSB, dann bleiben 66MHz (133MHz DDR) übrig, was 1GB/s ermöglichen würde -> AGPx4.
- beim nForce2 wohl gut möglich

in der Realität wird es wieder so ausssehen, daß AGP3.0 nur von Graphic-Workstations genutzt wird/werden kann. Der normale Heim-PC profitiert davon weder in Software noch in Hardware, da solche Texturmengen in keinem Spiel anfallen (auch nicht in Doom3) und ausserdem die Hardware solche Bandbreiten nicht zur Verfügung stellen kann.
 
Zuletzt bearbeitet:
DDR400 : ~3.2Gbyte/sec. CPU zweigt unter Spiele-Scripten,etc...~50% ab bleiben für AGP-Texturing vielleicht maximal 1.6 Gbyte/sec und auch das nur wenn auf dem AGP-Bus genug "freie Bahn ist" was ja kaum der Fall ist. Schöner Mist, da müsste ein Dual-Interface mit DDR II her :(
 
Zerbrich dir doch nicht den Kopf DjDino. :)

AGPx8 wird im Heim-Bereich in absehbarer Zeit nicht genutzt werden. Wir können "froh" sein, wenn es demnächst ein paar Spiele gibt, welche wenigstens schonmal von AGPx2 profitieren würden.

Richtig Sinn macht AGP3.0 nur in CAD-Anwendungen, wo mit gigantisch großen Texturen in Echtzeit gerendert werden muss. Aus dieser Ecke kamen auch die Forderungen nach 8facher Übertragungsrate und mehreren AGP-Slots.
Für den normalsterblichen Heim-Anwender sind weder die nötigen GrafikKarten noch die Software bezahlbar, noch hätten wir einen wirklichen Nutzen daraus.

Daß jetzt die Grafikkarten-Industrie AGPx8 als Marketingmöglichkeit gefunden hat um ihren SIS-Xabre-Schrott und NV18-Müll unter die Massen zu streuen, sollte an uns eigentlich spurlos vorüber gehen.
 
Vertex-Index

Du hast recht, Kopf lieber zum zocken gegen Gegner-IQ´s nutzen :D

Nur noch eines, mir ist ein SCHWERER Fehler unterlaufen : Auf T&L-fähigen Karten kann die Geometrieübertragung mithilfe dynamischer oder statischer Meshes entlastet werden (Dreieck<-> Vertex-Index was das Anfordern sämtlicher Exkpuntdaten entlastet weil der Index schon die Information entält welcher Vertex(Eckpunkt) zu welchen Dreieck zugehörig ist) Zu Polygonen Fertigkombiniert wird ja erst in der Gpu also wäre die "mal3-Rechnung" falsch und es ergibt sich selbst bei Doom III bei einem durch grosse Texturdaten angeschwollenen Vertex von in der Regel 32Byte auf sagen wir 40Byte - dann nur noch ein Wert der etwa AGP2x entspräche.

Also wenn dann selbst Doom III erst AGP2x auslastet ist AGP8x+Geforce4MX wirklich der grösste Schwachsinn den es jemals von Nvidia zu sehn gab.
 
Zurück
Oben