PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MIP Mapping vs. Anisotrope Filterung


Der Sandmann
2003-06-30, 11:56:33
Hallo,

warscheinlich eine typische Anfaengerfrage. Aber muss sie trotzdem stellen.

Also MIP Mapping wurde mir mal so erklaert das es die Eigenschaft des Auges simuliert, dass die Genauigkeit bei entfernten Objekten abnimmt.

Und nun kommt AF und verspricht Tiefenschaerfe. Arbeiten da die 2 Verfahren nicht gegeneinander?

Wenn ich voellig falsch liege dann verzeiht mir, aber ich weis es nicht besser :)

Demirug
2003-06-30, 12:03:18
bin faul heute :D

http://www.3dcenter.org/artikel/grafikfilter/ lesen und wenn dann noch was unklar ist fragen

huha
2003-06-30, 18:26:01
Mipmapping erzeugt für die verschiedenen Tiefen anderes skalierte Texturen und da diese meistens ziemlich übel kleingequetscht werden, gibts sowas wie die AF, die dann aus dem bränlichen Pixelbrei wieder was macht, in dem man halbwegs was erkennen kann...

-huha

aths
2003-07-01, 20:42:42
Original geschrieben von huha
Mipmapping erzeugt für die verschiedenen Tiefen anderes skalierte Texturen und da diese meistens ziemlich übel kleingequetscht werden, gibts sowas wie die AF, die dann aus dem bränlichen Pixelbrei wieder was macht, in dem man halbwegs was erkennen kann... Aus einem Matsch kann man auch nichts mehr tolles zaubern, AF funktioniert schon ein wenig anders.

Vedek Bareil
2003-07-05, 20:43:09
Bei der Gelegenheit hätte ich mal ne Frage zu aths' Filter-Artikel. aths schreibt dort etwas davon, daß anisotropes Filtern die Unschärfe beseitigen/abmildern würde, die bei normalem Mipmapping bzw. trilinearen Filtern bei weit entfernten Texturen auftritt. Allerdings erklärt er für meinen Geschmack nicht genau genug, wie der anisotrope Filter dies denn hinbekommt.

Nachdem ich den Artikel gelesen hatte, hatte ich zunächst lange Zeit folgendes gedacht (von dem ich mittlerweile annehme, daß es falsch ist):
Beim AF bleibt der LOD-Bias (der die Entfernung festlegt, bei der auf den nächsten Mipmap-Level umgeschaltet wird) genauso wie beim normalen Mipmapping/TF. D.h. der in einer bestimmten Entfernung verwendete LOD bleibt gleich. Irgendwie sorgt der anisotrope Filter dann dafür, daß die Textur trotz des hohen LODs (hoher LOD = niedrig aufgelöste Mipmap-Stufe) scharf bleibt.
Der Effekt ist in etwa so, als würde man in x- und y-Richtung unterschiedliche LODs verwenden (wie es das bei den RIP-Maps gibt). Nehmen wir z.B. an, x sei die waagerechte und y die senkrechte Bildschirm-Koordinate, und wir betrachten eine Bodentextur (siehe eingefügtes Bild). Dann arbeit das AF in y-Richtung ganz normal wie Mipmapping und verhindert dadurch das Auftreten von Texture Shimmering. In x-Richtung hingegen bewirkt es einen Effekt, als würde ein niedrigerer LOD verwendet werden, so daß Strukturen in der Textur in dieser Richtung schärfer werden.
aths schrieb in dem Artikel außerdem etwas davon, daß für das AF mehr Samples pro Pixel benötigt werden als etwa beim normalen trilinearen Filter. Darin deutete sich für mich an, daß das AF den beschriebenen Effekt dadurch bewerkstelligen würde, daß es Informationen aus niedrigeren LODs als dem aktuellen mit verwenden würde.

Dieser Vorstellung zufolge würde AF nur zusammen mit Mipmapping oder FT Sinn machen. Ohne mehrere LODs gäbe es schlicht nichts, was das AF bewirken könnte.

Inzwischen aber bin ich zu folgender anderer Vorstellung gelangt:
Der LOD-Bias wird beim AF gesenkt, d.h. in einer gegebenen Entfernung wird ein niedrigerer LOD verwendet als es beim normalen Mipmapping der Fall wäre. Die höhere Schärfe der Textur wird überhaupt nicht durch das anisotrope Filtern an sich erreicht, sondern einfach durch den niedrigeren LOD.
Die eigentliche Funktion des AF besteht vielmehr darin, das bei normalem bi-/trilinearm Filtern aufgrund des niedrigen LODs auftretende Texture Shimmerung zu unterbinden.
Anders gesagt: AF sorgt nicht für höhere Schärfe bei hohem LOD (wie früher von mir vermutet), sondern hat einen eigentlich umgekehrten Effekt, es sorgt für weniger Shimmering bei niedrigem LOD.

Entsprechend kann AF auch völlig unabhängig vom Mipmapping die Bildqualität verbessern, und theoretisch bei ausreichend hoher Stufe das Mipmpping sogar gänzlich ersetzen.

Jetzt meine Frage: ist das so in etwa richtig, oder habe ich da Blödsinn erzählt? :)

Demirug
2003-07-05, 21:12:32
Vedek Bareil, die schärfe kommt schon vom AF. Sie entsteht dadurch das mehr Informationen aus einer Mip-Map Stufe mit grösseren Auflösung gewonnen werden.

Beim normalen Mip-Map Filtern wird (solange man die Finger vom Bias läst) die Stufe gewählt welche mit nur einem Sample aus der Texture die gesamte durch den Pixel in der Texture belegten Fläche abdecken kann. Aktiviert man nun AF verändert sich dadurch die Wahl des Mip-Map Stufe. Jetzt muss die Fläche nicht mehr durch nur ein Sample abgedeckt werden sondern es stehen mehr davon zur Verfügung. Wie viele hängt davon ab welcher AF-Level ausgewählt wurde. Da also nun mehr informationen pro Pixel verwendet werden können wird die Qualität besser.

Vedek Bareil
2003-07-08, 00:24:25
Original geschrieben von Demirug
Beim normalen Mip-Map Filtern wird (solange man die Finger vom Bias läst) die Stufe gewählt welche mit nur einem Sample aus der Texture die gesamte durch den Pixel in der Texture belegten Fläche abdecken kann. Aktiviert man nun AF verändert sich dadurch die Wahl des Mip-Map Stufe. Jetzt muss die Fläche nicht mehr durch nur ein Sample abgedeckt werden sondern es stehen mehr davon zur Verfügung. demnach trifft also eher meine frühere Vermutung zu, daß die Funktionsweise des AF darauf basiert, daß Informationen aus mehreren LODs verwendet werden?

Nun hat hier aber mal irgendwer davon erzählt, daß AF auch ohne Mip-Mapping (und damit ohne die Existenz von mehr als nur einem einzigen LOD) eine beachtliche Verbesserung der Bildqualität gewährleisten, und insbesondere das Texture Shimmering mildern kann. Demnach müßte AF doch noch was anderes tun als lediglich Samples aus unterschiedlichen LODs zu verwenden, oder?

Xmas
2003-07-08, 00:57:13
Original geschrieben von Vedek Bareil
demnach trifft also eher meine frühere Vermutung zu, daß die Funktionsweise des AF darauf basiert, daß Informationen aus mehreren LODs verwendet werden?
Bilineares AF nutzt Texel aus einer Mip-Stufe, trilineares AF aus zwei Mip-Stufen. Wenn die Texturen durch Perspektive (oder "durch die Geometrie") verzerrt dargestellt werden, dann sampelt AF mehrere Texel in Verzerrungsrichtung. Wobei verzerrt hier bedeutet, dass du und dv (Veränderung der Texturkoordinate in u bzw. v-Richtung pro Pixel) ungleich sind.

Da bei AF kein quadratischer Filterkernel verwendet wird, kann man bei verzerrten Texturen aus höher aufgelösten Mipmaps samplen, ohne das Nyquist-Kriterium zu verletzen.

Vedek Bareil
2003-07-08, 02:09:00
Original geschrieben von Xmas
Bilineares AF nutzt Texel aus einer Mip-Stufe, trilineares AF aus zwei Mip-Stufen. gut, bleiben wir zum Zweck der Klarheit zunächst beim bilinearen AF.
Die höhere Schärfe wird dann also nicht dadurch erreicht, daß Informationen aus mehreren LODs einfließen, sondern allein dadurch, daß ein niedriger LOD verwendet wird. Richtig?

Die weitere Funktionsweise des AF, wie du sie nachfolgend beschreibst:
Wenn die Texturen durch Perspektive (oder "durch die Geometrie") verzerrt dargestellt werden, dann sampelt AF mehrere Texel in Verzerrungsrichtung. Wobei verzerrt hier bedeutet, dass du und dv (Veränderung der Texturkoordinate in u bzw. v-Richtung pro Pixel) ungleich sind.

Da bei AF kein quadratischer Filterkernel verwendet wird, kann man bei verzerrten Texturen aus höher aufgelösten Mipmaps samplen, ohne das Nyquist-Kriterium zu verletzen. dient dann also nur noch zum Vermeiden von Texture Shimmering (ich nehme an, das meinst du mit dem Nyquist-Kriterium?), und nicht mehr zum Erhöhen der Schärfe?

Xmas
2003-07-08, 02:56:55
Original geschrieben von Vedek Bareil
Die weitere Funktionsweise des AF, wie du sie nachfolgend beschreibst:
dient dann also nur noch zum Vermeiden von Texture Shimmering (ich nehme an, das meinst du mit dem Nyquist-Kriterium?), und nicht mehr zum Erhöhen der Schärfe?
Das sind zwei Seiten derselben Sache. Einerseits kannst du sagen dass die Mipmap-Auflösung erhöht wird um den Detailgrad zu erhöhen, und dann muss man mehr Samples nehmen um das Shimmering zu vermeiden.

Oder andersrum, man nimmt mehrere Samples in eine Richtung und muss dann je nach Verzerrung der Textur eine höher aufgelöste Mipmap nehmen, damit man keinen überfilterten Texturmatsch bekommt.

betasilie
2003-07-08, 03:12:47
Also verhindern mehrere Samples das shimmering und das obwohl man eine höher aufgelöste Mipmap hat, die mehr "Struktur" in die textur bringt. (?)

Vedek Bareil
2003-07-08, 18:19:00
Original geschrieben von Xmas
Das sind zwei Seiten derselben Sache. Einerseits kannst du sagen dass die Mipmap-Auflösung erhöht wird um den Detailgrad zu erhöhen, und dann muss man mehr Samples nehmen um das Shimmering zu vermeiden.

Oder andersrum, man nimmt mehrere Samples in eine Richtung und muss dann je nach Verzerrung der Textur eine höher aufgelöste Mipmap nehmen, damit man keinen überfilterten Texturmatsch bekommt. aber in dem einen wie dem anderen Fall wird die höhere Schärfe nicht durch die Verwendung von mehr Samples erreicht, sondern durch die höher aufgelöste Mipmap-Stufe (= niedrigeren LOD) :)

Demirug
2003-07-08, 19:20:00
Wieso hat deiner Meinung nach die höher aufgelöste Mipmap-Stufe einen niedrigeren LOD? Den grössten Level of Detail hat immer die mipstufe mit der grössten Auflösung. Bei jeder kleineren Stufe wurden ja durch ein herunterskalieren Details vernichtet.

Schärfe ist genaugenommen nicht ganz der richtige Begriff für das was AF macht. AF ist (wie jeder Texturefilter) eine Antialiasing Verfahren. Und wie bei jedem anderen AA Verfahren gilt auch hier viel hilft viel. Je mehr Sample (Information) mit einbezogen wird desto genauer wird das Endprodukt sich der Perfektion annähern. Aber das Samplemuster und die Gewichtung spielt natürlich auch eine Rolle.

Vedek Bareil
2003-07-08, 23:15:12
Original geschrieben von Demirug
Wieso hat deiner Meinung nach die höher aufgelöste Mipmap-Stufe einen niedrigeren LOD? weil der LOD halt auf diese "umgekehrte" Weise definiert ist (steht so in aths' Artikel) :)
Der niedrigste LOD (LOD 0) ist die Mipmap-Stufe mit der höchsten Auflösung.
Ist natürlich natürlich ne Definitionsfrage, aber dies scheint eben die gängige Variante zu sein (ich hab das auch schon in anderen Quellen so gefunden).
Ist zwar etwas verwirrend, aber macht unter folgendem Gesichtspunkt Sinn: es ist nicht allgemein festgelegt, wie viele Mipmap-Stufen verwendet werden, deren Zahl kann also variieren. Nimmt man z.B. 12, so ist, wenn man die LODs richtig herum nummeriert, die höchste Mipmap-Stufe LOD 12 (bzw. 11, wenn die niedrigstaufgelöste Stufe LOD 0 ist). Nimmt man dagegen nur 8 Stufen, ist sie LOD 8(7). D.h. die LOD-Nummer für die höchstaufelöste Mipmap wäre so von der Zahl der Mipmaps abhängig.
Nun möchte man (so nehme ich zumindest an) natürlich lieber eine davon unabhängige Nummerierung haben, damit, wenn man LOD x sagt, sofort feststeht, welche Map (die höchstaufgelöste oder die wieviel niedriger aufgelöste) es ist. Deswegen nummeriert man die LODs falsch herum, so daß die höchstaufgelöste Map immer LOD 0 ist, die nächsniedriger aufgelöste LOD 1 usw., egal wieviele Stufen denn nun verwendet werden.


Den grössten Level of Detail hat immer die mipstufe mit der grössten Auflösung. Bei jeder kleineren Stufe wurden ja durch ein herunterskalieren Details vernichtet. die Definition ist wie gesagt genau anders herum: der als niedrigster nummerierter Level of Detail (LOD 0) hat den höchsten Detailgrad.


Schärfe ist genaugenommen nicht ganz der richtige Begriff für das was AF macht. ich habe den Begriff der Schärfe nicht für das verwendet, was das AF macht, sondern für den optischen Effekt, der eintritt, wenn man von normalem Mipmapping bzw. trilinearem Filtern auf AF umschaltet. Daß dieser Effekt meiner Ansicht nach gar nicht dem AF selbst zuzuschreiben ist, sondern einfach nur dem niedrigeren LOD (= der Verwendung einer höher aufgelösten Mipmap), und daß das was das AF macht, eigentlich ein ganz anderer Effekt ist - nämlich der, das Texture Shimmering zu unterbinden - schrieb ich ja bereits :)

Demirug
2003-07-09, 00:16:36
Original geschrieben von Vedek Bareil
weil der LOD halt auf diese "umgekehrte" Weise definiert ist (steht so in aths' Artikel) :)
Der niedrigste LOD (LOD 0) ist die Mipmap-Stufe mit der höchsten Auflösung.
Ist natürlich natürlich ne Definitionsfrage, aber dies scheint eben die gängige Variante zu sein (ich hab das auch schon in anderen Quellen so gefunden).
Ist zwar etwas verwirrend, aber macht unter folgendem Gesichtspunkt Sinn: es ist nicht allgemein festgelegt, wie viele Mipmap-Stufen verwendet werden, deren Zahl kann also variieren. Nimmt man z.B. 12, so ist, wenn man die LODs richtig herum nummeriert, die höchste Mipmap-Stufe LOD 12 (bzw. 11, wenn die niedrigstaufgelöste Stufe LOD 0 ist). Nimmt man dagegen nur 8 Stufen, ist sie LOD 8(7). D.h. die LOD-Nummer für die höchstaufelöste Mipmap wäre so von der Zahl der Mipmaps abhängig.
Nun möchte man (so nehme ich zumindest an) natürlich lieber eine davon unabhängige Nummerierung haben, damit, wenn man LOD x sagt, sofort feststeht, welche Map (die höchstaufgelöste oder die wieviel niedriger aufgelöste) es ist. Deswegen nummeriert man die LODs falsch herum, so daß die höchstaufgelöste Map immer LOD 0 ist, die nächsniedriger aufgelöste LOD 1 usw., egal wieviele Stufen denn nun verwendet werden.

die Definition ist wie gesagt genau anders herum: der als niedrigster nummerierter Level of Detail (LOD 0) hat den höchsten Detailgrad.

War ein Missverständniss. Wenn jemand bei Texturen von LOD spricht dann drehe ich das automatisch schon um. Deswegen war für mich "niedrigeren LOD" gleichbeutend mit einer Mip-Stufe mit einer grösseren Nummern. Die MipMap mit der Nummer 0 hat für mich immer den maximalen Level of Detail.

ich habe den Begriff der Schärfe nicht für das verwendet, was das AF macht, sondern für den optischen Effekt, der eintritt, wenn man von normalem Mipmapping bzw. trilinearem Filtern auf AF umschaltet. Daß dieser Effekt meiner Ansicht nach gar nicht dem AF selbst zuzuschreiben ist, sondern einfach nur dem niedrigeren LOD (= der Verwendung einer höher aufgelösten Mipmap), und daß das was das AF macht, eigentlich ein ganz anderer Effekt ist - nämlich der, das Texture Shimmering zu unterbinden - schrieb ich ja bereits :)

Ja wenn du das mit schärfe meinst dann bekommst du die maximale "Schärfe" wenn du das Mip-Mapping einfach abschaltest und auf Point-sampling gehst.

Xmas
2003-07-09, 00:17:13
Original geschrieben von Vedek Bareil
ich habe den Begriff der Schärfe nicht für das verwendet, was das AF macht, sondern für den optischen Effekt, der eintritt, wenn man von normalem Mipmapping bzw. trilinearem Filtern auf AF umschaltet. Daß dieser Effekt meiner Ansicht nach gar nicht dem AF selbst zuzuschreiben ist, sondern einfach nur dem niedrigeren LOD (= der Verwendung einer höher aufgelösten Mipmap), und daß das was das AF macht, eigentlich ein ganz anderer Effekt ist - nämlich der, das Texture Shimmering zu unterbinden - schrieb ich ja bereits :)
Nein, das eine geht mit dem anderen untrennbar einher.
Das Texture Shimmering wird generell durch Mip Mapping unterbunden, auch ohne AF. AF sorgt dann dafür dass eine detailiertere Mipmap genommen werden kann.

Demirug
2003-07-09, 00:41:58
Original geschrieben von Xmas
Nein, das eine geht mit dem anderen untrennbar einher.
Das Texture Shimmering wird generell durch Mip Mapping unterbunden, auch ohne AF. AF sorgt dann dafür dass eine detailiertere Mipmap genommen werden kann.

Ja und Nein. Das eine detailierte MipMap benutzt wird kommt durch eine verschiebung des LOD-Bias was ja auch ohne AF zu erreichen ist. Das aktivieren des AFs erzwingt aber wie du schon sagst diese Verschiebung.

Texture Shimmering wird dadurch unterbunden das man alle Texels welche zu einem Pixel gehören gewichtet verrechnet. Fallen nun aber in einem Pixel sehr viele Texel zusammen müsste man normalerweise diese ja alle einladen und verrechnen. Mip-Maps sind nun einfach eine möglichkeit den Wert von 4,16,64,... Texel schnell und ohne grossen Rechenaufwand zu erhalten zum Preis einer steigenden Fehlerrate.

Normalerweise wird die Mipmap so bestimmt das man den Pixel mit einem Sample abdecken kann. Aktiviert man AF wird diese Bestimmung dahingehen verschoben das jetzt nicht mehr ein Sample reichen muss um den Pixel abzudecken. Damit es nun nicht zu unschönen Effekten (=Shimmering) kommt muss man aus dieser nun detailierteren Mipmaps so viele Samples auslesen um die abdeckung wieder komplett zu machen. Damit es nicht ganz so aufwendig wird verzichtet man aber auf die komplette Abdeckung und filtert nur einen Streifen in der richtung der grössten Verzerrung.

Vedek Bareil
2003-07-09, 01:25:41
Original geschrieben von Xmas
Nein, das eine geht mit dem anderen untrennbar einher.
Das Texture Shimmering wird generell durch Mip Mapping unterbunden, auch ohne AF. nicht auch ohne AF, sondern nur ohne AF.
Bei aktiviertem AF wird die Shimmering-Beseitigung zwischen Mipmapping und AF aufgegeteilt: ein Teil des Shimmering wird nach wie vor durch das Mipmapping unterbunden, und der andere Teil durch das AF, wobei letzterer Anteil mit zunehmender AF-Stufe größer wird.

Du sagst ja selbst im nächsten Satz:
AF sorgt dann dafür dass eine detailiertere Mipmap genommen werden kann. d.h. AF bewirkt, daß trotz der detaillierteren Map kein Shimmering auftritt.
Würde man kein AF verwenden, aber trotzdem den gleichen niedrigeren LOD, würde es zu Shimmering kommen. Das Mipmapping könnte dieses nur teilweise unterbinden, weil es zu dessen vollständiger Vermeidung einen höheren LOD bräuchte.
Erst wenn man AF zuschaltet, wird auch das restliche Shimmering beseitigt.

Vedek Bareil
2003-07-09, 01:37:43
Original geschrieben von Demirug
Ja wenn du das mit schärfe meinst dann bekommst du die maximale "Schärfe" wenn du das Mip-Mapping einfach abschaltest und auf Point-sampling gehst. ja und nein. Wenn ich so vorgehe bekomme ich zwar Schärfe, aber außderdem Shimmering. Point Sampling vs. Bilinear spielt hier keine Rolle, da es mir um weit entfernte Texturen geht.
Will ich das Shimmering weg haben, so kann ich entweder Mipmapping aktivieren, das aber neben dem Shimmering auch die Schärfe beseitigt.
Oder ich lasse das Mipmapping aus und mache AF in einer sehr hohen Stufe (z.B. 64-fach, auch wenn das heute noch nicht machbar ist) an. Dann bleibt die Schärfe, aber das Shimmering ist weg.
Oder ich gehe einen Kompromiß ein und schalte nur 8-fach AF ein, das nur einen Teil des Shimmerings unterbindet, und aktiviere zusätzlich Mipmapping, das das restliche Shimmering beseitigt, um den Preis leicht (in noch akzeptablem Maße) verminderter Schärfe.

Vedek Bareil
2003-07-09, 01:44:40
Original geschrieben von Demirug
Texture Shimmering wird dadurch unterbunden das man alle Texels welche zu einem Pixel gehören gewichtet verrechnet. Fallen nun aber in einem Pixel sehr viele Texel zusammen müsste man normalerweise diese ja alle einladen und verrechnen. Mip-Maps sind nun einfach eine möglichkeit den Wert von 4,16,64,... Texel schnell und ohne grossen Rechenaufwand zu erhalten zum Preis einer steigenden Fehlerrate.

Normalerweise wird die Mipmap so bestimmt das man den Pixel mit einem Sample abdecken kann. Aktiviert man AF wird diese Bestimmung dahingehen verschoben das jetzt nicht mehr ein Sample reichen muss um den Pixel abzudecken. Damit es nun nicht zu unschönen Effekten (=Shimmering) kommt muss man aus dieser nun detailierteren Mipmaps so viele Samples auslesen um die abdeckung wieder komplett zu machen. Damit es nicht ganz so aufwendig wird verzichtet man aber auf die komplette Abdeckung und filtert nur einen Streifen in der richtung der grössten Verzerrung. das ist doch mal eine detaillierte Beschreibung der Funktionsweise von AF. Warum hat aths das in seinem Artikel nicht so hinbekommen? :)

Xmas
2003-07-09, 01:51:21
Original geschrieben von Vedek Bareil
nicht auch ohne AF, sondern nur ohne AF.
Bei aktiviertem AF wird die Shimmering-Beseitigung zwischen Mipmapping und AF aufgegeteilt: ein Teil des Shimmering wird nach wie vor durch das Mipmapping unterbunden, und der andere Teil durch das AF, wobei letzterer Anteil mit zunehmender AF-Stufe größer wird.

Du sagst ja selbst im nächsten Satz:
d.h. AF bewirkt, daß trotz der detaillierteren Map kein Shimmering auftritt.
Würde man kein AF verwenden, aber trotzdem den gleichen niedrigeren LOD, würde es zu Shimmering kommen. Das Mipmapping könnte dieses nur teilweise unterbinden, weil es zu dessen vollständiger Vermeidung einen höheren LOD bräuchte.
Erst wenn man AF zuschaltet, wird auch das restliche Shimmering beseitigt.
Ich habe Ursache und Wirkung eben andersherum betrachtet. Der einzige und eigentliche Zweck von Mipmapping ist es, Shimmering zu vermeiden, indem es eine schnelle Approximation von Flächenfilterung bietet. Hunderte Samples aus der Basistextur zu nehmen ist vom Aufwand her ja nicht tragbar.
AF hebt nun die Beschränkung auf dass der Filterkernel quadratisch sein muss. Hätte man nur die Basistextur ohne Mipmaps, könntest du noch so hohes AF nehmen, Shimmering würde zwar leicht gemildert aber lange nicht beseitigt. Denn verwendete AF-Methoden strecken den Filterkernel zwar, verbreitern ihn aber nicht oder kaum. Du kannst also damit nicht eine Fläche von 16x16 Texeln in der Basistextur filtern. Dazu ist Mipmapping da.

Vedek Bareil
2003-07-09, 02:30:00
Original geschrieben von Xmas
AF hebt nun die Beschränkung auf dass der Filterkernel quadratisch sein muss. Hätte man nur die Basistextur ohne Mipmaps, könntest du noch so hohes AF nehmen, Shimmering würde zwar leicht gemildert aber lange nicht beseitigt. Denn verwendete AF-Methoden strecken den Filterkernel zwar, verbreitern ihn aber nicht oder kaum. Du kannst also damit nicht eine Fläche von 16x16 Texeln in der Basistextur filtern. Dazu ist Mipmapping da. ich war in Gedanken bei stark schräg stehenen Texturen, wie z.B. Fußdböden oder Wänden, die ja auch den Hauptansatzpunkt für AF darstellen. Bei diesen wird das Shimmering nicht nur leicht gemildert, sondern schon ganz gewaltig, wie aus den Bildern in aths' Artikel (auf Seite 9) hervorgeht. Da ist beim bilinearen 8x-AF das Banding zwischen LOD 0 und 1 schon ziemlich weit nach hinten verschoben, dahin wo sonst schon LOD 2 oder 3 wäre. Und trotzdem nicht die Spur von Shimmering.
Aber ok, bei weniger schrägen Texturen sieht die Sache natürlich anders aus.

A propos aths' Artikel: auf Seite 7 schreibt er tatsächlich: Die scharfen Texturen kommen also eigentlich nicht durch das anisotrope Filtern, sondern durch eine LOD-Anpassung. Der Filter reduziert bzw. eliminiert lediglich das Texture Shimmering, das ansonsten auftreten würde. Ich hätte echt schwören können, daß das bei meiner letzten Lektüre des Artikels noch nicht da stand. Hat aths den Artikel zwischenzeitlich geupdatet? Oder hatte ich das bloß noch nicht zur Kenntnis genommen, weil ich es da noch nicht verstanden hatte? :D

betasilie
2003-07-09, 02:39:31
Original geschrieben von Vedek Bareil
Bei aktiviertem AF wird die Shimmering-Beseitigung zwischen Mipmapping und AF aufgegeteilt: ein Teil des Shimmering wird nach wie vor durch das Mipmapping unterbunden, und der andere Teil durch das AF, wobei letzterer Anteil mit zunehmender AF-Stufe größer wird.
...
Würde man kein AF verwenden, aber trotzdem den gleichen niedrigeren LOD, würde es zu Shimmering kommen. Das Mipmapping könnte dieses nur teilweise unterbinden, weil es zu dessen vollständiger Vermeidung einen höheren LOD bräuchte.
Erst wenn man AF zuschaltet, wird auch das restliche Shimmering beseitigt.
Ich glaube das fasst es ganz gut zusammen.

Wieso der Weg von ATI mit winkelabhängigen AF der richtige ist, macht diese Diskussion mal wieder klar. ... Klar, so perfekt funktioniert es dann doch noch nicht, aber der Ansatz ist richtig, denn man braucht nicht an allen Winkeln den vollen Samplesatz, um subjektiv im ganzen Bild die gleiche Filterqualität zu haben.

Demirug
2003-07-09, 07:07:37
Original geschrieben von Vedek Bareil
ich war in Gedanken bei stark schräg stehenen Texturen, wie z.B. Fußdböden oder Wänden, die ja auch den Hauptansatzpunkt für AF darstellen. Bei diesen wird das Shimmering nicht nur leicht gemildert, sondern schon ganz gewaltig, wie aus den Bildern in aths' Artikel (auf Seite 9) hervorgeht. Da ist beim bilinearen 8x-AF das Banding zwischen LOD 0 und 1 schon ziemlich weit nach hinten verschoben, dahin wo sonst schon LOD 2 oder 3 wäre. Und trotzdem nicht die Spur von Shimmering.
Aber ok, bei weniger schrägen Texturen sieht die Sache natürlich anders aus.

Zum unterdrücken des Shimmerings reicht bilinear auch in aller Regel raus. Der zusätzliche trilineare Filter wird eigentlich primär nur noch für das beseitigen des Bandings gebraucht.

Demirug
2003-07-09, 07:24:31
Original geschrieben von betareverse
Ich glaube das fasst es ganz gut zusammen.

Wieso der Weg von ATI mit winkelabhängigen AF der richtige ist, macht diese Diskussion mal wieder klar. ... Klar, so perfekt funktioniert es dann doch noch nicht, aber der Ansatz ist richtig, denn man braucht nicht an allen Winkeln den vollen Samplesatz, um subjektiv im ganzen Bild die gleiche Filterqualität zu haben.

Sorry aber dem kann ich mich jetzt nicht ganz anschliessen. Um das Shimmering zu unterdrücken bräuchten wir ja gar kein AF wenn wir uns mit ganz normalem Mip-Mapping begnügen würde.

Ziel eines Texturefilters ist es immer die Pixelfarbe möglichst genau zu bestimmen. Das optimale Ergebniss erreicht man genau dann wenn man alle Texel aus der Basisstufe (MipMap 0) welche den Pixel betreffen mit einbezieht. Kann man nun aber nicht so viele Texel mit einbeziehen muss eine Annäherung her weil man sonst Shimmerings bekommt. Je dichter man nun dabei am optimalen Filter bleibt desto besser das Ergebniss. Das winkelabhängige Verfahren von ATI entfernt sich jedoch bei den 22,5° Winkel sehr weit von diesem Optimum.

Ich kann also beim besten Willen nicht erkennen was an diesem Ansatz richtig sein soll. Der Winkel der Fläche ist IMHO das absolut unbrauchbarste Kriterium um zu bestimmen wie genau man den nun filtert.

aths
2003-07-09, 12:01:50
Original geschrieben von Vedek Bareil
weil der LOD halt auf diese "umgekehrte" Weise definiert ist (steht so in aths' Artikel) :)Dort steht soweit ich weiß was von LOD Bias.

Original geschrieben von Vedek Bareil
A propos aths' Artikel: auf Seite 7 schreibt er tatsächlich: Ich hätte echt schwören können, daß das bei meiner letzten Lektüre des Artikels noch nicht da stand. Hat aths den Artikel zwischenzeitlich geupdatet? Oder hatte ich das bloß noch nicht zur Kenntnis genommen, weil ich es da noch nicht verstanden hatte? :D Das steht da schon sehr, sehr lange. Der Artikel ist bezüglich AF teilweise etwas verwirrend formuliert, und er geht generell leider noch nicht auf die Vorteile von Fast TF ein, beides ist letztlich dem Alter dieses Textes anzurechnen.

Xmas
2003-07-09, 15:12:47
Original geschrieben von betareverse
Ich glaube das fasst es ganz gut zusammen.

Wieso der Weg von ATI mit winkelabhängigen AF der richtige ist, macht diese Diskussion mal wieder klar. ... Klar, so perfekt funktioniert es dann doch noch nicht, aber der Ansatz ist richtig, denn man braucht nicht an allen Winkeln den vollen Samplesatz, um subjektiv im ganzen Bild die gleiche Filterqualität zu haben.
Keineswegs, denn der Drehwinkel um die Z-Achse sollte gar keinen Einfluss auf die Filterqualität haben. Stell dir vor du drehst deinen Monitor und die Texturen werden unschärfer...

betasilie
2003-07-09, 19:03:31
Original geschrieben von Xmas
Keineswegs, denn der Drehwinkel um die Z-Achse sollte gar keinen Einfluss auf die Filterqualität haben. Stell dir vor du drehst deinen Monitor und die Texturen werden unschärfer...
Dann würde sich nichts ändern, da die unschärferen Texturen durch die höhere Auflösungdichte kompensiert wüden.

Original geschrieben von Demirug Sorry aber dem kann ich mich jetzt nicht ganz anschliessen. Um das Shimmering zu unterdrücken bräuchten wir ja gar kein AF wenn wir uns mit ganz normalem Mip-Mapping begnügen würde.

Aber auf Kosten der Strukturqualität.

Original geschrieben von Demirug Ziel eines Texturefilters ist es immer die Pixelfarbe möglichst genau zu bestimmen. Das optimale Ergebniss erreicht man genau dann wenn man alle Texel aus der Basisstufe (MipMap 0) welche den Pixel betreffen mit einbezieht. Kann man nun aber nicht so viele Texel mit einbeziehen muss eine Annäherung her weil man sonst Shimmerings bekommt. Je dichter man nun dabei am optimalen Filter bleibt desto besser das Ergebniss. Das winkelabhängige Verfahren von ATI entfernt sich jedoch bei den 22,5° Winkel sehr weit von diesem Optimum.

Das stimmt schon, aber bei 22,5° ist die subjektive Auflösung für den Betrachter der entsprechenden Fäche doch sowieso höher und daher ist im Idealfall eine niedrigere AF-Stufe und eine niedrigerer LOD nicht zu sehen.

Original geschrieben von Demirug Ich kann also beim besten Willen nicht erkennen was an diesem Ansatz richtig sein soll. Der Winkel der Fläche ist IMHO das absolut unbrauchbarste Kriterium um zu bestimmen wie genau man den nun filtert.
Mhhh, zumindest ist ein niedriger LOD bei flachen Winkeln nicht zu bemerken und demzufolge sollte doch dann auch das AF gesenkt werden können. (?) ... Denke ich mir zumindest so. :)

PS:
Ich meine das übrigens nicht direkt auf das AF von ATI bezogen, was sicherlich nicht ideal funktioniert, sondern allgemein.

Xmas
2003-07-10, 00:41:26
Original geschrieben von betareverse
Dann würde sich nichts ändern, da die unschärferen Texturen durch die höhere Auflösungdichte kompensiert wüden.
Höhere Auflösungsdichte??
Bitte nochmal lesen: es geht um Drehung um die Z-Achse. Also die Achse "in den Monitor hinein". Wenn du deinen Kopf zur Seite neigst, sollte sich die Texturschärfe nicht ändern.

betasilie
2003-07-10, 00:56:33
Original geschrieben von Xmas
Höhere Auflösungsdichte??
Bitte nochmal lesen: es geht um Drehung um die Z-Achse. Also die Achse "in den Monitor hinein". Wenn du deinen Kopf zur Seite neigst, sollte sich die Texturschärfe nicht ändern.
Da hast du recht. Von einer Z-Achsen-Rotation sollte die Filterstufe definitiv nicht abhängen.