PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AF — Details


aths
2003-10-27, 14:31:04
So, ich habe tagelang über AF nachgedacht und bin nun an einem Punkt, wo es mit Nachdenken allein nicht mehr weiter geht. Jetzt braucht's erst mal Fakten!

Folgende Fragen:

- Stimmt es, dass beim dynamisch gewähltem AF-Level auf 2x dann 4x folgt, oder gibt es wirklich einen Bereich, wo 3 AF-Samples berechnet werden? Ich brauche auf jeden Fall ein Programm, welches AF-Füllraten misst: Eine Textur kann mehr und mehr gestaucht werden, und wenn dann plötzlich mehr Füllrate benötigt wird, sieht man, ab welchen u:v-Ratios der tatsächliche AF-Grad steigt.

- Bei Texturen, die "nach hinten gehen" sollten die "nach hinten gehenden" AF-Samples der Perspektive wegen dichter liegen, oder nicht? Liegen sie denn dichter, oder wird mit gleichmäßigen Abständen gerechnet?

- Werden alle AF-Samples gleichmäßig gewichtet, oder wird der entgültige Farbwert aus gewichteten Samples berechnet?

Demirug
2003-10-27, 15:51:54
Messprogramm für die Fillrate habe ich jetzt keins aber ein paar gemachte Beobachtungen kann ich dir ja mitteilen.

1. nVidia filtert immer entlang einer Linie und zwar geschlossen. Es gibt zwischen den samplen keine Abstande. Ausser bei AF ohne Mipmaps dort waren die Abstande dann aber AFAIR gleich gross.

2. Die Anzahl der Texel welche in den Pixel einfliessen steigt im Verhältniss zur länge der Linie. Interesanterweise hört der Chip bei bi-AF bei 24 Texel (6xAF) auf und geht zur nächsten Mipmap.

3. Die Texel sind gewichtet. Am stärksten gehen die Texel in der Mitte der Linie ein. Zu den beiden Ende der Linie nimmt die Gewichtung ab.

Alles mit einer GF3 ausprobiert.

aths
2003-10-27, 16:05:51
Original geschrieben von Demirug
Messprogramm für die Fillrate habe ich jetzt keins aber ein paar gemachte Beobachtungen kann ich dir ja mitteilen.

1. nVidia filtert immer entlang einer Linie und zwar geschlossen. Es gibt zwischen den samplen keine Abstande.Ja wenn man die Kernel-Flächen sieht. Zwischen den Sample-Koordinaten muss es aber natürlich Abstände geben. Sind diese bei tri-AF gleich lang?

Original geschrieben von Demirug
2. Die Anzahl der Texel welche in den Pixel einfliessen steigt im Verhältniss zur länge der Linie. Interesanterweise hört der Chip bei bi-AF bei 24 Texel (6xAF) auf und geht zur nächsten Mipmap.So dass es quasi-tri AF gibt, oder wie??

Original geschrieben von Demirug
3. Die Texel sind gewichtet. Am stärksten gehen die Texel in der Mitte der Linie ein. Zu den beiden Ende der Linie nimmt die Gewichtung ab.Welchen Sinn hat die Gewichtung? Nach welcher Formel wird gewichtet?

Demirug
2003-10-27, 16:50:25
Original geschrieben von aths
Ja wenn man die Kernel-Flächen sieht. Zwischen den Sample-Koordinaten muss es aber natürlich Abstände geben. Sind diese bei tri-AF gleich lang?

War unglücklich ausgedrückt. Zwischen den einzelen bi-Samples gibt es keine Lücken. Zwichen bi und tri konnte ich da keinen Unterschied feststellen.

So dass es quasi-tri AF gibt, oder wie??

Nein, es sind zum Beispiel bei einem Pixel 24 Texel aus Mipmap 0 und der nächste hat dann 8 Texel aus Mipmap 1. Bei bi wird wirklich immer nur aus einer Mipmap geholt. Wobei ich das nicht für alle Pixel geprüft habe. Müsste das mal automatisieren.

Welchen Sinn hat die Gewichtung? Nach welcher Formel wird gewichtet?

Du bist doch der Filterspezialist. ;)

Ich habe nur mal gelernt das man bei einem Filter zum Rand hin die Gewichtung reduzieren soll. Welche Formel nVidia da nun genau benutzt weiss ich nicht. Dafür müsste man sich die Verhältnisse mal genauer anschauen. Ich denke mal das es Tent oder Gauss ist.

aths
2003-10-27, 18:27:24
Original geschrieben von Demirug
War unglücklich ausgedrückt. Zwischen den einzelen bi-Samples gibt es keine Lücken. Zwichen bi und tri konnte ich da keinen Unterschied feststellen. Wenn es keine Lücken gibt, also keine Abstände, hätten alle Koordinaten die genau gleichen Werte. Offenbar missverstehen wir uns?

Original geschrieben von Demirug
Nein, es sind zum Beispiel bei einem Pixel 24 Texel aus Mipmap 0 und der nächste hat dann 8 Texel aus Mipmap 1. Bei bi wird wirklich immer nur aus einer Mipmap geholt. Wobei ich das nicht für alle Pixel geprüft habe. Müsste das mal automatisieren.Versteh ich nicht ganz. Bei Tri-AF holt er also x1 Samples aus MIP-Map A und x2 Samples aus MIP-Map B, wobei x1!=x2 sein kann?

Original geschrieben von Demirug
Du bist doch der Filterspezialist. ;)Das möchte ich vielleicht einmal sein, wenn ich groß bin...

Original geschrieben von Demirug
Ich habe nur mal gelernt das man bei einem Filter zum Rand hin die Gewichtung reduzieren soll. Welche Formel nVidia da nun genau benutzt weiss ich nicht. Dafür müsste man sich die Verhältnisse mal genauer anschauen. Ich denke mal das es Tent oder Gauss ist. Darüber werde ich verdammt lange nachdenken müssen. Ich habe eine Theorie, aber leider keine Zeit, die jetzt ausführlich darzulegen. In Kürze: Ich würde AF so realisieren, dass zunächst die TF-Sampleposition "aufgespalten" wird in 2 AF-Samples. Haben die einen genügend großen Abstand, spalten die sich jeweils wieder auf, so dass man 4 Samples hat. Einen vergleichbaren Effekt bekäme man wohl auch mit einem Tent-Filter hin, wenn man im Gegenzug die AF-Sample-Abstände gleich lässt.

Demirug
2003-10-27, 18:41:11
Mit Lücke:

XXOXX
XXOXX

Ohne Lücke:

XXXX
XXXX

X = benutzter Texel
O = unbenutzer Texel


Versteh ich nicht ganz. Bei Tri-AF holt er also x1 Samples aus MIP-Map A und x2 Samples aus MIP-Map B, wobei x1!=x2 sein kann?

Ich rede die ganze Zeit von BI und nicht von TRI. Mit den beiden Pixel meinte ich die Mip-Map Grenze.

Bezüglich dem Filter: Tent und Gaus können es doch nicht sein. Es gibt teilweise mehr als ein Maximum.

aths
2003-10-27, 19:16:58
Original geschrieben von Demirug

Mit Lücke:

XXOXX
XXOXX

Ohne Lücke:

XXXX
XXXX

X = benutzter Texel
O = unbenutzer Texel
Ja es ist klar, dass der Gesamt-Kernel jedes Texel berücksichtigt.

Original geschrieben von Demirug
Ich rede die ganze Zeit von BI und nicht von TRI. Mit den beiden Pixel meinte ich die Mip-Map Grenze. Versteh ich nicht :bonk: Bei bi-AF nutzt er doch nur eine MIP-Stufe? Bei 8° AF müssten das bis zu 32 Texel aus dieser MIP-Stufe sein...
Original geschrieben von Demirug
Bezüglich dem Filter: Tent und Gaus können es doch nicht sein. Es gibt teilweise mehr als ein Maximum. Hm, hm...

Demirug
2003-10-27, 19:57:56
Original geschrieben von aths
Versteh ich nicht :bonk: Bei bi-AF nutzt er doch nur eine MIP-Stufe? Bei 8° AF müssten das bis zu 32 Texel aus dieser MIP-Stufe sein...

Bei BI sind es aber maximal 24 Texel (=6xAF) die berücksichtigt werden. Zumindestens wenn meine Messmethode nicht ganz falsch ist. Bei TRI geht es bis 8xAF.

aths
2003-10-27, 21:13:33
Original geschrieben von Demirug
Bei BI sind es aber maximal 24 Texel (=6xAF) die berücksichtigt werden. Zumindestens wenn meine Messmethode nicht ganz falsch ist. Bei TRI geht es bis 8xAF. Du siehst, ohne AF-Füllraten-Messer kommen wir nicht weiter http://www.aths.net/files/smilies/smile.gif.

aths
2003-10-28, 10:53:55
Original geschrieben von aths
Du siehst, ohne AF-Füllraten-Messer kommen wir nicht weiter http://www.aths.net/files/smilies/smile.gif. Kriegst du das hin? :massa:

Demirug
2003-10-28, 12:42:03
Original geschrieben von aths
Kriegst du das hin? :massa:

Wenn du mir sagst wie ich die Karte dazu bringe alle Pixel AF-technisch gleich zu behandeln.

aths
2003-10-28, 15:49:43
AF-Füllraten-Messung stelle ich mir so vor, dass man eine Textur (ein Quad) zoomen und das uv-Ratio ändern kann.

Demirug
2003-10-28, 16:46:39
Original geschrieben von aths
AF-Füllraten-Messung stelle ich mir so vor, dass man eine Textur (ein Quad) zoomen und das uv-Ratio ändern kann.

Bringt nichts. Verändern der Texturekoordinaten verändert den LOD aber die Anzahl der Texel bleibt gleich. Zumindestens solange ich keine Tiefenneigung habe. Sobald ich aber die Fläche kippe habe ich wieder bei jedem Pixel andere Verhältnisse.

aths
2003-10-28, 17:20:14
Wenn man eine nicht geneigte Textur hat, diese aber gestaucht ist, müsse AF zum Einsatz kommen. Bei 8° AF müsste bis zum u/v-Ratio von 8:1 noch ohne MIP-Maps auskommen.

Demirug
2003-10-28, 17:33:03
Ich glaube ich habe was hingefummelt. Irgendwas muss da vorhin schief gelaufen sein. Habe mich auch schon etwas gewundert.

Muss aber erst noch ein bischen rumprobieren.

aths
2003-10-28, 18:07:34
Ich bedanke mich jetzt schon mal :)

Demirug
2003-10-28, 21:33:14
Mit meiner 5200er in dem Rechner hier wird das nix. Die scheint am Speicherlimit zu hängen. Es skaliert wunderbar linear bis zum Mipmapwechsel. Morgen mal mit der GF3 probieren.

Xmas
2003-10-29, 17:44:46
Mit einem sehr rudimentären Fillrate-Tester habe ich mal auf meiner GeForce 3 Ti200 festgestellt, dass es nur 1x, 2x, 4x und 8x gibt (keine Zwischenstufen), und dass die Übergänge bei einem u:v Verhältnis von ~1.0004:1, etwas mehr als 2:1 und etwas mehr als 4:1 stattfinden, sowohl bei Bilinear als auch bei Trilinear. Bei jedem Übergang halbiert sich die Füllrate ziemlich exakt. Der Test war ein Fenster 1000x1000 Pixel mit zwei Texturlagen (Texturgröße 16x16 mit Mipmaps und Repeat, keine Bandbreitenlimitierung) Dabei wurde die Textur einfach in Richtung einer Achse gestaucht.

aths
2003-10-29, 18:52:06
Xmas' Bemerkungen entsprechen dem, was ich auch erwarten würde beim AF. Bin gespannt, was Demirug bei seinen Tests noch rauskriegt.

Xmas, kannst du den "sehr rudimentären Fillrate-Tester" mal auf der 9800 laufen lassen?

aths
2003-11-02, 01:22:50
Hallo, http://www.aths.net/files/smilies/xmas.gif, neue Erkenntnisse?

Demirug, was mich noch interessieren würde: Wenn man 2° AF berechnet, hat man ja den Winkel. Kann man davon ausgehend nicht recht einfach 4 oder 8 Samples bestimmen, wenn die "Linie" bereits durch zwei Vektoren angegeben ist? Geht da nicht einfaches Lerpen?

Demirug
2003-11-02, 09:53:17
Der Test hat nichts gebracht weil er sich auf einer Gf3 genauso linear verhalten hat.

Wenn man die linie hat kann man die Samples natürlich relative leicht plazieren. Wie die Positionen und Gewichtungen aber nun genau berechnet werden kann ich so aus dem Stehgreif sagen.

aths
2003-11-02, 21:01:51
Original geschrieben von Demirug
Der Test hat nichts gebracht weil er sich auf einer Gf3 genauso linear verhalten hat.Mit der Bandbreite?? http://www.aths.net/files/smilies/bescheuert.gif http://www.aths.net/files/smilies/bescheuert.gif

Nicht, dass Borsti doch noch recht hat. http://www.aths.net/files/smilies/hm.gif http://www.aths.net/files/smilies/devil.gif
Original geschrieben von Demirug
Wenn man die linie hat kann man die Samples natürlich relative leicht plazieren. Wie die Positionen und Gewichtungen aber nun genau berechnet werden kann ich so aus dem Stehgreif sagen. Ich stell mir das mit der Linie eigentlich am schwierigsten vor. Naja, die Woche über will ich erst mal das mit der MIP-Map-LOD-Formel verstehen, dann seh ich mal weiter mit AF.

aths
2003-11-03, 14:17:53
Ok ich glaube ich weiß jetzt, warum AF doch nicht ganz so einfach ist, wie ich erst dachte. Die "AF-Linie" verbindet ja die Seitenhalbierenden der jeweils kürzeren Begrenzungs-Seiten des Pixels im Texture-Space. (Denn in "Stauch-Richtung" muss das Oversampling stattfinden.) Um diese "AF-Linie" zu kriegen, darf man ordentlich rumrechnen.

Nun besteht aber auch noch eine Herausforderung darin, per genauer Sampleposition oder zumindest per ausgefuchster Gewichtung, das konkrete Texture-Space-Pixel möglichst gut anzunähern.