DjDino
2002-09-30, 09:01:20
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 geschätzt) 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 ?
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 geschätzt) 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 ?