OpenGL / DirectX: Wie verbessert Mipmapping die Leistung?

8

Ich verstehe das Mipmapping ziemlich gut. Was ich nicht verstehe (auf einer Hardware / Treiber-Ebene) ist, wie Mipmapping die Leistung einer Anwendung verbessert (zumindest wird dies oft behauptet). Der Treiber weiß nicht, bis der Fragment-Shader ausgeführt wird, auf welche Mipmap-Ebene zugegriffen wird, also müssen sowieso alle Mipmap-Ebenen im VRAM vorhanden sein, oder liege ich falsch?

Was genau verursacht die Leistungsverbesserung?

    
user1282931 01.10.2013, 18:52
quelle

2 Antworten

14

Sie sind sich sicher bewusst, dass jedes Texel in den unteren LODs der Mip-Kette einen höheren Prozentsatz des gesamten Texturbildbereichs abdeckt, richtig?

Wenn Sie eine Textur an einem entfernten Ort abtasten, verwendet die Hardware eine niedrigere LOD. Wenn dies geschieht, wird die Probenumgebung, die zum Auflösen der Verkleinerung erforderlich ist, kleiner, so dass weniger (nicht zwischengespeicherte) Abrufvorgänge erforderlich sind. Es geht um die Menge an Speicher, die tatsächlich während der Texturabtastung abgerufen werden muss, und nicht um die Menge an belegtem Speicher (vorausgesetzt, Sie laufen nicht in Textur-Thrashing).

Ich denke, dass dies wahrscheinlich eine visuelle Darstellung verdient, daher werde ich mir das folgende Diagramm aus der ausgezeichneten Reihe von Tutorials bei arcsynthesis.org .

Ссылка

Auf der linken Seite sehen Sie, was passiert, wenn Sie die ganze Zeit naiv eine einzelne LOD abtasten (dieses Diagramm zeigt übrigens eine lineare Minifikationsfilterung) und auf der rechten Seite sehen Sie, was mit dem Mipmapping passiert. Es verbessert nicht nur die Bildqualität, indem es der effektiven Größe des Fragments besser entspricht, sondern weil die Anzahl der Texel in den unteren Mipmap-LODs geringer ist, kann es viel effizienter zwischengespeichert werden.

    
Andon M. Coleman 01.10.2013, 21:45
quelle
2

Mipmaps sind mindestens aus zwei Gründen nützlich:

  • visuelle Qualität - Szenen sehen in der Ferne viel besser aus, es gibt mehr Unschärfe (die normalerweise besser aussieht als flackernde Pixel). Zusätzlich kann eine anisotrope Filterung verwendet werden, die die visuelle Qualität stark verbessert.
  • Leistung : Da für entfernte Objekte kleinere Textur verwendet werden kann, sollte die gesamte Operation schneller sein: manchmal kann der gesamte Mip im Textur-Cache platziert werden. Es wird Cache-Kohärenz genannt.
  • Im Allgemeinen brauchen Mipmaps nur 33% mehr Speicher, so dass die Kosten für eine bessere Qualität und einen potenziellen Leistungsgewinn ziemlich niedrig sind. Beachten Sie, dass die tatsächliche Leistungsverbesserung für eine bestimmte Szenenstruktur gemessen werden sollte.

Siehe Info hier: Ссылка

    
fen 01.10.2013 19:11
quelle