Mipmap - Mipmap

In der Computergrafik , Mipmaps (auch MIP - Karten ) oder Pyramiden sind im Voraus berechnet, optimierte Sequenzen von Bildern , von denen jeder eine progressiv geringere Auflösung Darstellung der vorherigen. Die Höhe und Breite jedes Bildes oder jeder Ebene in der Mipmap ist um den Faktor zwei kleiner als die vorherige Ebene. Mipmaps müssen nicht quadratisch sein. Sie sollen die Rendergeschwindigkeit erhöhen und das Aliasing reduzieren Artefakte. Ein hochauflösendes Mipmap-Bild wird für Proben mit hoher Dichte verwendet, z. B. für Objekte in der Nähe der Kamera. Bilder mit niedrigerer Auflösung werden verwendet, wenn das Objekt weiter entfernt erscheint. Dies ist ein effizienter Weg von Downfiltering ( Verkleinerungs ) eine Textur als alle Entnahme- Texeln in der ursprünglichen Textur , die auf einen Bildschirm beitragen würde Pixel ; Es ist schneller, eine konstante Anzahl von Samples aus den entsprechend heruntergefilterten Texturen zu entnehmen. Mipmaps werden in 3D weit verbreiteten Computerspielen , Flugsimulatoren , andere 3D - Bildgebungssysteme für die Texturfilterung und 2D- und 3D - GIS - Software . Ihre Verwendung wird als Mipmapping bezeichnet . Die Buchstaben MIP im Namen sind eine Abkürzung für die lateinische Phrase multum in parvo und bedeuten "viel in wenig".

Da Mipmaps per Definition vorab zugewiesen sind , ist zusätzlicher Speicherplatz erforderlich, um sie nutzen zu können. Sie hängen auch mit der Wavelet-Komprimierung zusammen . Mipmap-Texturen werden in 3D-Szenen verwendet, um die zum Rendern einer Szene erforderliche Zeit zu verkürzen. Sie verbessern auch die Bildqualität, indem sie Aliasing- und Moiré-Muster reduzieren , die bei großen Betrachtungsabständen auftreten, was 33% mehr Speicher pro Textur kostet .

Überblick

Bild zeigt, wie Mipmaps das Aliasing bei großen Entfernungen reduzieren.
Bild zeigt, wie Mipmaps das Aliasing bei großen Entfernungen reduzieren . (Aliasing verursacht im linken Bild ein Moiré-Muster .)

Mipmaps werden verwendet für:

  • Detaillierungsgrad (LOD)
  • Verbesserung der Bildqualität. Das Rendern aus großen Texturen, in denen nur kleine, nicht zusammenhängende Teilmengen von Texeln verwendet werden, kann leicht Moiré-Muster erzeugen .
  • Beschleunigung der Renderzeiten, entweder durch Verringern der Anzahl der zum Rendern jedes Pixels abgetasteten Texel oder durch Erhöhen der Speicherlokalität der entnommenen Abtastwerte;
  • Reduzierung der Belastung der GPU oder CPU .

Ursprung

Mipmapping wurde 1983 von Lance Williams erfunden und ist in seiner Arbeit Pyramidal Parametrics beschrieben . Aus der Zusammenfassung: "In diesem Artikel wird eine 'pyramidenförmige parametrische' Vorfilter- und Abtastgeometrie entwickelt, die Aliasing-Effekte minimiert und Kontinuität innerhalb und zwischen Zielbildern sicherstellt." Die referenzierte Pyramide kann als Satz von voreinander gestapelten Mipmaps vorgestellt werden.

Der Ursprung des Begriffs mipmap ist ein Initialismus der lateinischen Phrase multum in parvo ("viel auf kleinem Raum") und der Karte, die der Bitmap nachempfunden ist. Der Begriff Pyramiden wird in einem GIS- Kontext immer noch häufig verwendet . In der GIS-Software werden Pyramiden hauptsächlich zur Beschleunigung der Renderzeiten verwendet.

Mechanismus

Beispiel für die Speicherung von Mipmap-Bildern: Das Hauptbild links wird von gefilterten Kopien mit reduzierter Größe begleitet.

Jedes Bitmap - Bild des Mipmap - Sets ist eine verkleinerte Kopie der Haupt- Textur , aber zu einer bestimmten reduzierten Detailebene. Obwohl die Haupttextur immer noch verwendet wird, wenn die Ansicht ausreicht, um sie vollständig zu rendern, wechselt der Renderer zu einem geeigneten Mipmap-Bild (oder interpoliert tatsächlich zwischen den beiden nächsten, wenn die trilineare Filterung aktiviert ist), wenn die Textur aktiviert ist aus der Ferne oder in geringer Größe betrachtet. Die Rendergeschwindigkeit erhöht sich, da die Anzahl der pro Anzeigepixel verarbeiteten Texturpixel ( Texel ) für ähnliche Ergebnisse mit den einfacheren Mipmap-Texturen viel geringer sein kann. Wenn eine begrenzte Anzahl von Texturabtastwerten pro Anzeigepixel verwendet wird (wie dies bei der bilinearen Filterung der Fall ist ), werden Artefakte reduziert, da die Mipmap-Bilder effektiv bereits gegen Aliasing sind . Das Skalieren nach unten und oben wird auch mit Mipmaps effizienter.

Wenn die Textur eine Grundgröße von 256 x 256 Pixel hat, kann der zugehörige Mipmap-Satz eine Reihe von 8 Bildern enthalten, die jeweils ein Viertel der Gesamtfläche des vorherigen ausmachen: 128 × 128 Pixel, 64 × 64, 32 × 32 16 × 16, 8 × 8, 4 × 4, 2 × 2, 1 × 1 (ein einzelnes Pixel). Wenn beispielsweise eine Szene diese Textur in einem Raum von 40 × 40 Pixel rendert, dann entweder eine vergrößerte Version des 32 × 32 (ohne trilineare Interpolation ) oder eine Interpolation des 64 × 64 und des 32 × 32 Es würden Mipmaps (mit trilinearer Interpolation) verwendet. Der einfachste Weg, diese Texturen zu erzeugen, ist die sukzessive Mittelung. Es können jedoch auch ausgefeiltere Algorithmen (möglicherweise basierend auf Signalverarbeitung und Fourier-Transformationen ) verwendet werden.

Das Anzeigen jedes Farbkanals jeder Ebene einer RGB-Mipmap als separate Ebene (links) zeigt, dass die gesamte Mipmap ein Quadrat mit der vierfachen Fläche bildet. Da jede Ebene 1 3 Speicherplatz benötigt, benötigen Mipmaps daher 4 3 Speicherplatz. dh 1 3 ≈ 33% mehr.

Die für alle diese Mipmaps erforderliche Speicherplatzvergrößerung beträgt ein Drittel der ursprünglichen Textur, da die Summe der Flächen 1/4 + 1/16 + 1/64 + 1/256 + ⋯ gegen 1/3 konvergiert. Im Fall eines RGB-Bildes mit drei Kanälen, die als separate Ebenen gespeichert sind, kann die gesamte Mipmap so dargestellt werden, dass sie genau in einen quadratischen Bereich passt, der doppelt so groß ist wie die Abmessungen des Originalbilds auf jeder Seite (doppelt so groß auf jeder Seite sind vier mal die ursprüngliche Fläche - eine Ebene der ursprünglichen Größe für Rot, Grün und Blau ergibt dreimal die ursprüngliche Fläche, und da die kleineren Texturen 1/3 des Originals einnehmen, ist 1/3 von drei eine, also sie nimmt den gleichen Gesamtraum ein wie nur eine der ursprünglichen roten, grünen oder blauen Ebenen). Dies ist die Inspiration für das Tag Multum in Parvo .

Anisotrope Filterung

Wenn eine Textur in einem steilen Winkel betrachtet wird, sollte die Filterung nicht in jeder Richtung gleichmäßig sein (sie sollte eher anisotrop als isotrop sein ), und es ist eine Kompromissauflösung erforderlich. Wenn eine höhere Auflösung verwendet wird, nimmt die Cache-Kohärenz ab und das Aliasing wird in eine Richtung erhöht, aber das Bild ist tendenziell klarer. Wenn eine niedrigere Auflösung verwendet wird, wird die Cache-Kohärenz verbessert, aber das Bild ist zu verschwommen. Dies wäre ein Kompromiss zwischen dem MIP-Detaillierungsgrad (LOD) für Aliasing und Unschärfe. Die anisotrope Filterung versucht jedoch, diesen Kompromiss zu lösen, indem für jedes Pixel ein nicht isotroper Textur-Footprint abgetastet wird, anstatt lediglich die MIP-LOD anzupassen. Diese nicht isotrope Texturabtastung erfordert entweder ein ausgefeilteres Speicherschema oder eine Summe von mehr Texturabrufen bei höheren Frequenzen.

Summenbereichstabellen

Summenbereichstabellen können Speicherplatz sparen und mehr Auflösungen bereitstellen. Sie beeinträchtigen jedoch erneut die Cache-Kohärenz und benötigen breitere Typen, um die Teilsummen zu speichern, die größer als die Wortgröße der Basistextur sind. Moderne Grafikhardware unterstützt sie daher nicht.

Siehe auch

Verweise