DE102015002023B4 - Kompakte Tiefenebenendarstellung zum Sortieren letzter Architekturen - Google Patents

Kompakte Tiefenebenendarstellung zum Sortieren letzter Architekturen Download PDF

Info

Publication number
DE102015002023B4
DE102015002023B4 DE102015002023.4A DE102015002023A DE102015002023B4 DE 102015002023 B4 DE102015002023 B4 DE 102015002023B4 DE 102015002023 A DE102015002023 A DE 102015002023A DE 102015002023 B4 DE102015002023 B4 DE 102015002023B4
Authority
DE
Germany
Prior art keywords
tile
depth
representation
tiles
values
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE102015002023.4A
Other languages
English (en)
Other versions
DE102015002023A1 (de
Inventor
Jon N. Hasselgren
Magnus Andersson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE102015002023A1 publication Critical patent/DE102015002023A1/de
Application granted granted Critical
Publication of DE102015002023B4 publication Critical patent/DE102015002023B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/12Indexing scheme for image data processing or generation, in general involving antialiasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/32Indexing scheme for image data processing or generation, in general involving image mosaicing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20016Hierarchical, coarse-to-fine, multiscale or multiresolution image processing; Pyramid transform

Abstract

System (20) zur Verwendung in einem Graphikprozessor und zur Speicherung eines Tiefenpuffers für die Verarbeitung von Bildern, wobei das System (20) umfasst:einen Rastergraphikgenerator (22) der angepasst ist, um zu identifizieren, welche Kacheln von Pixeln durch ein gegenwärtig gerendertes Dreieck des Bilds vollständig oder teilweise verdeckt werden, wobei der Rastergraphikgenerator (22) ferner angepasst ist, die Pixel einer jeden vollständig oder teilweise verdeckten Kachel mehreren Pixelpipelines (24) des Systems (20) zuzuführen;die Pixelpipelines (24), die angepasst sind, die Tiefe und Farbe der jeweiligen Pixel der vollständig oder teilweise verdeckten Kacheln zu berechnen, und Pixel der vollständig oder teilweise verdeckten Kacheln zu verwerfen, die durch eine zuvor gezeichnete Geometrie verdeckt werden;eine Tiefeneinheit (28) mit einem Kacheltabellencache (30), der eine Tiefenmaskendarstellung für jede Kachel zwischenspeichert, und mit einem Kachelcache (41), der pro Sample erfasste Tiefenwerte der Kacheln zwischenspeichert; undeinen Kompressor (35) der eingerichtet ist, selektiv die Tiefenebenendarstellung der Kacheln zu komprimieren, und in einem Speicher (32) des Systems (20) zu speichern;wobei der Kompressor (35) eingerichtet ist, die Tiefenebenendarstellung einer vollständig verdeckten Kachel in einer Bit-Darstellung mit einer hohen Genauigkeit und die Tiefenebenendarstellung einer teilweise verdeckten Kachel in einer komprimierten Bit-Darstellung mit einer geringeren Genauigkeit als für vollständig verdeckte Kacheln zu speichern, wenn die aus der komprimierten Bit-Darstellung der Tiefenebenendarstellung der teilweise verdeckten Kachel rekonstruierten Tiefenwerte mit gerundeten Tiefenwerten übereinstimmen, die aus einer unkomprimierten Bit-Darstellung der Tiefenebenendarstellung der teilweise verdeckten Kachel rekonstruiert werden würden.

Description

  • Hintergrund
  • Dies betrifft im Allgemeinen die Graphikverarbeitung und insbesondere die Verdeckungsauslese (engl. occlusion culling).
  • Aussondern (engl. culling) bedeutet „aus der Menge entfernen“, und es läuft in der Graphik darauf hinaus, Arbeitsaufwand zu eliminieren, der das endgültige Bild nicht ändert. Dies schließt beispielsweise ein Pyramidenstumpf-Culling ein, wobei Objekte, die außerhalb des Pyramidenstumpfs liegen, nicht weiter verarbeitet werden, weil sie das endgültige Bild nicht beeinflussen.
  • Beim Maximum Depth Culling, das häufig als hierarchische Verdeckungsauslese bezeichnet wird, wird die maximale Tiefe zmax einer Kachel gespeichert und pro Kachel beibehalten. Falls die geschätzte konservative minimale Tiefe eines Dreiecks innerhalb einer Kachel größer als der zmax-Wert der Kachel ist, wird das Dreieck innerhalb dieser Kachel vollständig verdeckt. In diesem Fall brauchen pro Sample erfasste Tiefenwerte nicht aus dem Speicher gelesen zu werden, und es ist innerhalb der Kachel für dieses Dreieck keine weitere Verarbeitung erforderlich. Diese Technik wird manchmal als zmax-Auslese bezeichnet. Zusätzlich kann auch die minimale Tiefe zmin der Tiefen in einer Kachel gespeichert werden, und es können Tiefenauslesungen vermieden werden, falls ein Dreieck eine Kachel vollständig verdeckt und die geschätzte konservative maximale Tiefe des Dreiecks kleiner als zmin ist, wobei in diesem Fall das Dreieck alle Tiefen in der Kachel überschreibt (unter Annahme keines Alpha/Stencil-Tests usw.).
  • zmax wird anhand der pro Sample erfassten Tiefen in einer Kachel berechnet. Idealerweise sollte der zmax-Wert einer Kachel jedes Mal dann neu berechnet werden, wenn eine Tiefe, deren Wert zmax ist, überschrieben wird.
  • Eine Tiefenauslese-Einheit speichert die zmax-Darstellung, worauf beispielsweise durch einen Cache zugegriffen werden kann. Eine Kachel kann Ebenengleichungen vom Dreieck enthalten, welches die Kachel verdeckt, und die Auslese kann für nachfolgende Dreiecke unmittelbar gegen diese Darstellung ausgeführt werden (entweder gegen die bewerteten Tiefen von den Ebenengleichungen oder durch Berechnen von zmax der Ebenengleichungen innerhalb der Kachel). Wenn die Kachel diese Darstellung infolge von Speicheranforderungen oder anderen Kriterien nicht mehr aufrechterhalten kann, können die Ebenengleichungen durch einen oder viele zmin- und zmax-Werte für die gesamte Kachel oder für Unterkachelgebiete der Kachel ersetzt werden. Beispielsweise könnte eine 8 × 8-Kachel zwei zmin- und zwei zmax-Werte für jedes der 4 × 8-Unterkachelgebiete enthalten. Falls keine Rückkopplung verwendet wird, wobei berechnete zmax-Werte der Tiefenpuffereinheit zur hierarchischen Verdeckungsauslese-Einheit zurück gesendet werden, müssen die zmax-Werte konservativ aktualisiert werden und bleiben im Allgemeinen gleich, es sei denn, dass eine gesamte Unterkachel vollständig von einem Dreieck verdeckt wird.
  • Mehrfach-abgetastetes Anti-Aliasing (MSAA) ist ein Typ einer Überabtastung. Im Allgemeinen bewertet der Renderer ein Fragmentprogramm einmal pro Pixel und führt nur eine wahre Überabtastung der Tiefen- und Stencil-Werte aus. Im Allgemeinen bezieht sich die Mehrfachabtastung auf einen Spezialfall der Überabtastung, wobei nur einige Komponenten des endgültigen Bilds nicht vollständig überabgetastet werden.
  • Anti-Aliasing ist eine Technik zum Bekämpfen des Aliasings in einem abgetasteten Signal, um Bilder zu glätten, die durch computererzeugte Bildverarbeitung gerendert werden. Es wird dadurch versucht, Zackenlinien zu überwinden, die stufenförmige Linien sind, welche eigentlich glatt sein sollten.
  • Die Patentschrift US 7,382,368 B1 offenbart eine Flache Darstellung und Kompression von Tiefenwerten (z Werte). Ein z-Puffer speichert komprimierte z-Daten, die in einem planaren Format für eine oder mehrere Kacheln vorgehalten werden. Das komprimierte Format umfasst einen Satz kachelspezifischer Koeffizienten, die eine Ebenengleichung für jedes z-getestete Primitiv, das die Kachel schneidet, definieren. Der z-Puffer speichert eine maximale Anzahl von Sätzen kachelspezifischer Koeffizienten für jede Kachel, und wenn die maximale Anzahl von Sätzen für eine bestimmte Kachel überschritten wird, wird ein unkomprimiertes Format zum Speichern der z-Daten für die bestimmte Kachel verwendet.
  • Kurzbeschreibung der Zeichnung
  • Die Erfindung wird durch den Gegenstand der unabhängigen Patentansprüche definiert. Vorteilhafte Ausführungsformen sind Gegenstand der abhängigen Patentansprüche.
  • Figurenliste
  • Einige Ausführungsformen werden mit Bezug auf die folgenden Figuren beschrieben. Es zeigen:
    • 1 eine Art, in der Tiefenwerte anhand einer Ebenengleichung neu erzeugt werden, gemäß einer Ausführungsform,
    • 2 eine Graphik einer Ebenengleichung für eine Ausführungsform,
    • 3 ein Flussdiagramm für eine Ausführungsform,
    • 4 eine schematische Darstellung für eine Ausführungsform,
    • 5 ein Flussdiagramm für eine andere Ausführungsform,
    • 6 eine Systemdarstellung gemäß einer Ausführungsform und
    • 7 eine Vorderansicht einer Ausführungsform.
  • Detaillierte Beschreibung
  • Gemäß einigen Ausführungsformen kann eine geringere Genauigkeit verwendet werden, wenn Tiefenebenenwerte für teilweise verdeckte Kacheln gespeichert werden, während die volle Genauigkeit für vollständig verdeckte Kacheln verwendet wird. Die geringere Genauigkeit wird jedoch nur verwendet, wenn die rekonstruierten Tiefenwerte mit jenen identisch sind, die gemäß einer Ausführungsform unter Verwendung einer Tiefenebene vollständiger Genauigkeit erzeugt worden wären. Dies ermöglicht es in den meisten Fällen, eine Tiefenebenendarstellung mit weniger Bits zu verwenden, wodurch Bits für das Speichern zusätzlicher Informationen in der Art von Abdeckungsmasken oder zusätzlichen Tiefenebenen freigesetzt werden. Dies ermöglicht es, dass mehr Kacheln in der Tiefenauslese-Einheit dargestellt werden, wodurch gemäß einigen Ausführungsformen die Tiefenpufferbandbreite verringert wird.
  • Tiefenebenengleichungen (Ref, Dx,Dy) können in einem Gleitkommaformat hoher Genauigkeit dargestellt werden. Wenn der Tiefenwert eines Samples beurteilt wird, wird die Ebenengleichung als z(x,y) = Ref + x · Dx + y · Dy bewertet, wobei (x,y) die Sample-Koordinate ist. Alle Berechnungen werden im internen hochgenauen Format ähnlich dem IEEE-Gleitkommaformat mit doppelter Genauigkeit ausgeführt, und das Ergebnis wird schließlich auf einen IEEE-Gleitkommawert mit einfacher Genauigkeit (32 Bit) gerundet. Falls eine Kachel (typischerweise ein 8 × 4-Rechteck von Pixeln) als vollständig mit einem Dreieck verdeckt bestimmt wird, kann sie in Form einer Ebenengleichung gespeichert werden. Weil die Ebenengleichung ausreicht, um die Tiefenwerte aller Samples genau wiederherzustellen, wird der Tiefenpuffer nicht aktualisiert, wodurch jedes Mal dann, wenn eine Kachel im Ebenenmodus gespeichert werden kann, Bandbreite gespart wird. Eine alternative Ebenengleichung geringerer Genauigkeit kann verwendet werden, solange die für alle (verdeckten) Samples bewerteten Tiefenwerte mit den Tiefenwerten identisch sind, die mit der Ebenengleichung höherer Genauigkeit verwendet werden, nachdem auf Gleitkommatiefen einfacher Genauigkeit gerundet wurde. 1 (A - C) ist ein Beispiel dafür, wie ein Tiefenwert berechnet wird.
  • In der Ebenengleichung werden die Deltas (Dx, Dy) typischerweise in einfacher 32-Bit-Genauigkeit gespeichert, und der Referenzwert wird in einer höheren Genauigkeit gespeichert, wie in 1A dargestellt ist. Die Deltas werden dann, wie in 1B dargestellt ist, in das Format höherer Genauigkeit umgewandelt. Schließlich, wenn der Tiefenwert zusammengesetzt wird, werden der Referenzwert und die Deltas durch Verschieben von Mantissen auf den gleichen Exponenten normalisiert, wie in 1C dargestellt ist, und schließlich addiert, um den endgültigen Tiefenwert zusammenzusetzen. Nur die oberen 23 Bits verbleiben nach der endgültigen Umwandlung in einen Gleitkommawert, und die restlichen Bits werden nur verwendet, um das richtige Runden zu gewährleisten. In einer kompaktierten Ebenendarstellung wird zusätzlich zum Speichern der oberen 23 Bits eine Anzahl von Schutzbits verwendet, um das richtige Ergebnis nach dem Runden zu gewährleisten. Die Anzahl der Schutzbits, die erforderlich ist, um das richtige Runden zu gewährleisten, hängt von pro Sample erfasste Tiefendaten ab und kann schwierig zu berechnen sein. Als eine Optimierung kann von dem zulässigen Bit-Budget einer komprimierten Kachel ausgegangen werden und kann der Speicher subtrahiert werden, der für alle anderen Daten erforderlich ist. Dies ergibt direkt die Schutzbits, die innerhalb des aktuellen Budgets verfügbar sind, und es kann dann getestet werden, ob die kompaktierte Darstellung das richtige Ergebnis nach dem Runden gewährleistet. Typischerweise haben die Deltas viel kleinere Exponenten als der Referenzwert, weshalb die Mantissen-Bits der Deltas, die außerhalb des Schutzbitbereichs liegen, fortgelassen werden können. Ein Beispiel ist in 1C dargestellt.
  • 1 zeigt, wie Tiefenwerte anhand der Ebenengleichung neu erzeugt werden. Das Beispiel zeigt die Neuerzeugung des Tiefenwerts z(1,1) = Ref + Dx + Dy. 1A zeigt die ursprüngliche Ebenengleichung. Die Deltas (Dx, Dy) werden in einfacher 32-Bit-Genauigkeit gespeichert, und der Referenzwert wird in einer höheren Genauigkeit (beispielsweise 64 Bits) gespeichert. In 1B werden die Deltawerte in das gleiche Format hoher Genauigkeit wie der Referenzwert umgewandelt. In 1C werden die Exponenten normalisiert. Alle Werte werden mit dem gleichen Exponenten dargestellt, und die Mantissen werden entsprechend verschoben. Nur die oberen 23 Bits verbleiben, nachdem die endgültige Umwandlung in einen Gleitkommawert einfacher Genauigkeit vorgenommen wurde. Zusätzlich wird eine Anzahl zusätzlicher Schutzbits gespeichert, um das richtige Ergebnis nach dem Runden zu gewährleisten. Die Bits, die auf die rechte Seite der Schutzbitgrenze fallen, können entfernt werden, wodurch in diesem Beispiel insgesamt 37 Bits gespart werden.
  • Die meisten Kacheln sind mit 6 - 12 Schutzbits darstellbar. Die tatsächliche Anzahl der gesparten Bits hängt von den relativen Exponenten von Ref, Dx und Dy ab und variiert für relevante Arbeitsbelastungen typischerweise zwischen 10 und 60. Die gesparten Bits können verwendet werden, um zusätzliche Daten zu speichern, einschließlich der folgenden, jedoch ohne Einschränkung darauf: Verwenden einer komprimierten Abdeckungsmaske, Codieren zweier Ebenen, welche eine einzige Kachel überlappen, Speichern zusätzlicher min/max-Werte oder von Daten, die beim Aussondern der Gebiete helfen, die nicht vom Dreieck verdeckt werden.
  • Die vom Rastergraphikgenerator empfangenen Werte der Ebenengleichung werden bewertet, um eine kompakte Darstellung für die Vorzeichen und die Exponentenwerte zu bestimmen. Dann wird bestimmt, ob die pro Sample erfasste Abdeckungsmaske entweder unter Verwendung horizontaler oder vertikaler Abbrüche komprimiert werden kann, wobei es sich um eine später detailliert beschriebene komprimierte Bitmaskendarstellung handelt. Weil das Bit-Budget typischerweise sehr eng ist, kann eine Konfiguration mit Ein- oder Zwei-Pixelhorizontalen-Abbrüchen oder einem Ein-Pixel-vertikalen-Abbruch verwendet werden. Nach dem Speichern von Vorzeichen, Exponenten und der komprimierten pro Sample erfasste Abdeckungsmaske können die restlichen Bits für das Codieren der Mantissen-Bits geringerer Genauigkeit der Tiefenebenengleichung verwendet werden. Es wird eine einfache Gleichung gelöst, um zu bestimmen, wie viele Schutzbits für die Mantissen von Ref, Dx und Dy verbraucht werden können. Dann wird die Genauigkeit verringert, indem sie auf die erlaubte Bitanzahl, ähnlich 1C, gerundet werden, woraus sich Werte geringerer Genauigkeit R e ƒ ˜ , D x ˜ u n d D y ˜
    Figure DE102015002023B4_0001
    ergeben.
  • Die genaue Ebenengleichung (Linie G in 2) wird bei gegebenen Samples bewertet und zu Gleitkommawerten gerundet (den Kreuzen in 2). Ein Intervall von Werten voller Genauigkeit ẑ = [z,z̅], die alle auf den 32-Bit-Tiefenwert des gegebenen Samples gerundet werden, wird berechnet. Diese Intervalle werden unter Verwendung der Deltas geringerer Genauigkeit auf den Referenzpunkt (x = 0) rückprojiziert, um ein Intervall R e ƒ ^
    Figure DE102015002023B4_0002
    möglicher Referenzwerte zu erhalten, wobei die Rückprojektion durch R e ƒ ^ = [ R e ƒ _ , R e ƒ ¯ ] = z ^ x D ˜ x y D ˜ y = [ z _ x D ˜ x y D ˜ y , z ¯ x D ˜ y y D ˜ y ]
    Figure DE102015002023B4_0003
    gegeben ist.
  • Ein letztes mögliches Intervall kann berechnet werden, indem das Maximum Ref aller Samples, das auf den nächsten quantisierten Wert für die Darstellung geringerer Genauigkeit (dadurch vorgeschrieben, wie viele Schutzbits sich geleistet werden können) beschränkt ist, gebildet wird und das Minimum Ref, das den nächstenquantisierten Wert als Untergrenze aufweist, gebildet wird. Die Kachel ist darstellbar, falls das Intervall nicht leer ist, Ref < Ref ist, und es kann in einem solchen Fall R e ƒ ˜
    Figure DE102015002023B4_0004
    als ein quantisierter Wert in R e ƒ ^
    Figure DE102015002023B4_0005
    herausgegriffen werden. Falls die Kachel nicht komprimierbar ist, können andere Darstellungen, wie der zmax-Modus, verwendet werden und werden alle Tiefenwerte zur Weiterverarbeitung zum Backend z gesendet. Das hier beschriebene Verfahren zum Anpassen der Ebenengleichung passt nur den R e ƒ ˜ Wert
    Figure DE102015002023B4_0006
    an. Es ist jedoch auch möglich, alle Werte ( R e ƒ ˜ , D x ˜ , D y ˜ )
    Figure DE102015002023B4_0007
    in der Ebenengleichung abzustimmen, wodurch möglicherweise erlaubt wird, dass mehr Kacheln komprimiert werden, jedoch bei höherem Rechenaufwand.
  • Mit Bezug auf 3 sei bemerkt, dass die kompakte Ebenengleichungssequenz 10 in Software, Firmware und/oder Hardware implementiert werden kann. Bei Software- und Firmwareausführungsformen kann sie durch Computer ausgeführte Befehle implementiert werden, die in einem oder mehreren nicht flüchtigen computerlesbaren Medien, wie magnetischen, optischen oder Halbleiterspeichern, gespeichert sind.
  • Die Sequenz beginnt wie angegeben in Block 11 mit dem Analysieren der Ebenengleichung, um eine kompakte Darstellung für die Vorzeichen und Exponentenwerte zu bestimmen, wie in Block 12 angegeben ist. Dann wird bestimmt, ob die pro Sample erfasste Abdeckungsmaske komprimiert werden kann, wie an einem Diamanten 13 angegeben ist.
  • Als nächstes werden die Vorzeichen, Exponenten und die komprimierte pro Sample erfasste Abdeckungsmaske gespeichert, wie in Block 14 angegeben ist. Mantissen-Bits geringerer Genauigkeit der Tiefenebenengleichung werden codiert, wie in Block 15 angegeben ist.
  • Die Anzahl der erforderlichen Schutzbits, die für Mantissen aufgewendet werden können, kann wie in Block 16 angegeben bestimmt werden. Schließlich wird die genaue Ebenengleichung angepasst, um sicherzustellen, dass alle Werte richtig sind, wie in Block 18 angegeben ist.
  • Mit Bezug auf 4 sei bemerkt, dass eine Tiefenpufferarchitektur 20 einen Rastergraphikgenerator 22 aufweist, um zu identifizieren, welche Pixel innerhalb des gegenwärtig gerenderten Dreiecks liegen. Um die Speicherkohärenz für den Rest der Architektur zu maximieren, ist es häufig vorteilhaft, zuerst zu identifizieren, welche Kacheln (eine Sammlung von W × H-Pixeln) das Dreieck überlappen. Wenn der Rastergraphikgenerator eine Kachel findet, welche das Dreieck teilweise überlappt, verteilt er die Pixel in dieser Kachel über eine Anzahl von Pixelpipelines 24. Der Zweck jeder Pixelpipeline besteht darin, die Tiefe und die Farbe eines Pixels zu berechnen. Jede Pixelpipeline enthält eine Tiefentesteinheit 26, die dafür verantwortlich ist, Pixel zu verwerfen, die durch die zuvor gezeichnete Geometrie verdeckt werden. Die Tiefeneinheit 28 weist einen Speicher 32 auf, der gemäß einer Ausführungsform ein Direktzugriffsspeicher ist. Sie umfasst auch einen Kacheltabellencache 30, der die zmax-Maskendarstellung für jede Kachel zwischenspeichert und durch den Speicher 32 unterstützt wird, einen Kachelcache 41, der auch durch den Speicher 32 unterstützt wird und pro Sample erfasste Tiefenwerte für einen schnellen Zugriff zwischenspeichert, optional eine zmax-Rückkopplungsberechnung 36, welche die zmax-Darstellung in der Kacheltabelle 30 jedes Mal dann aktualisiert, wenn eine Kachel aus dem Kachelcache 41 entfernt wird, einen Kompressor 35 und einen Dekompressor 37 sowie einen Abdeckungsmaskenpuffer 34. Der Kacheltabellencache speichert die zmax-Darstellung und Header-Informationen, beispielsweise ein oder mehrere Hinweiszeichen, die angeben, welcher Kompressionsalgorithmus für das Komprimieren von Kacheltiefenwerten verwendet wird, getrennt von den Tiefenpufferdaten.
  • Der Kompressor 35 komprimiert im Allgemeinen die Kacheltiefenwerte zu einer festen Bitrate und versagt, falls er die Kachel nicht ohne Informationsverlust in einer gegebenen Bitanzahl darstellen kann. Wenn eine Tiefenkachel in den Speicher geschrieben wird, wird typischerweise der Kompressor mit der geringsten Bitrate ausgewählt, welchem es gelingt, die Kachel zu komprimieren, ohne dass übermäßig viele Informationen verloren gehen. Die Hinweiszeichen in der Kacheltabelle werden mit einer Kennung aktualisiert, die für diesen Kompressor eindeutig ist, und komprimierte Daten werden in den Speicher geschrieben. Wenn eine Kachel aus dem Speicher gelesen wird, wird die Kompressorkennung aus der Kacheltabelle gelesen, und die Daten werden unter Verwendung des entsprechenden Dekompressionsalgorithmus 37 dekomprimiert. Ein Puffer 34 kann auch die Abdeckungsmaske speichern.
  • Der Maskenalgorithmus, der verwendet wird, um die Teilabdeckungsmaske, die in den gespeicherten Bits gespeichert werden kann, zu kompaktieren, funktioniert folgendermaßen: Zuerst sei angenommen, dass jede Pixelzeile in einer Kachel aus angrenzenden Pixelgebieten besteht, die entweder vollständig verdeckt sind oder vollständig nicht verdeckt sind, weshalb es als ein „massives Gebiet“ bezeichnet wird, und dass die Maske dieser Gebiete nur unter Verwendung eines Bits gespeichert wird. Jedes massive Gebiet ist durch ein „Abbruchgebiet“ getrennt, das ein Gebiet ist, wo ein Bit für jeden Abtastwert gespeichert ist, um anzugeben, ob es verdeckt ist. Nach jedem Abbruch wird ein zusätzliches Bit gespeichert, um anzugeben, ob das folgende massive Gebiet, wozu es gehört, verdeckt ist.
  • Gemäß einigen Ausführungsformen können verschiedene Konfigurationen für die Abbrüche verwendet werden. Beispielsweise kann ein einziger zwei Pixel breiter Abbruch für jede Zeile innerhalb des gewünschten Bit-Budgets unterstützt werden. Eine andere Alternative besteht darin, zwei unabhängige Abbrüche zu unterstützen, wobei die Abbrüche nur ein Pixel breit sind, woraus sich weniger Pixel ergeben, jedoch eine größere Flexibilität in Bezug darauf, wo die Pixel angeordnet werden. In der Praxis wird die beste Funktionsweise erhalten, indem einige verschiedene Abbruchkonfigurationen während der Kompression getestet werden, diejenige herausgegriffen wird, die in die kleinste Anzahl von Bits passt, und einige Kopfteil-Bits gespeichert werden, um anzugeben, welche Konfiguration für eine bestimmte Kachel verwendet wurde.
  • Der Prozess des Findens der massiven Gebiete und der Abbruchgebiete kann folgendermaßen implementiert werden. Zuerst wird eine Variable L, die gleich der Abdeckungsmaske des ersten Samples im ersten Pixel ist, festgelegt. Dann tastet die Sequenz alle Samples in allen Pixeln ab, beispielsweise von links nach rechts. Sobald ein Abtastwert mit einer Abdeckungsmaske gefunden wurde, die von L abweicht, wird das einschließende Pixel als ein Abbruch B markiert. Nachdem Maskenbits für alle Samples in allen Pixeln im Abbruchgebiet explizit gespeichert wurden (ausgehend von B und eine Anzahl von Pixeln überstreichend), wird L als das Maskenbit des ersten Samples im ersten Pixel nach dem Abbruchgebiet reinitialisiert, gefolgt von einer iterativen Suche nach dem nächsten Abbruch. Die Maske ist nicht komprimierbar, falls jede Zeile mehr Abbrüche erfordert als durch die Konfiguration erlaubt ist.
  • Es ist auch möglich, Achsen auszutauschen und die Abbrüche für vertikale Spalten zu spezifizieren. Eine andere Variante für das Suchen nach Abbrüchen in der Spalten- oder in der Zeilenreihenfolge besteht darin, andere raumfüllende Kurven bereitzustellen, welche die Kacheln vollständig oder teilweise abdecken, wie Hilbert- oder Morton-Kurven. In diesen Fällen braucht nichts geändert zu werden, und die Pixelreihenfolge kann sich aus dem Modus implizit ergeben. Ferner kann angenommen werden, dass alle massiven Gebiete links oder rechts des Abbruchgebiets zur Zmax-Schicht gehören. Für die Szenarien, bei denen dies üblich ist, kann ein Modus verwendet werden, bei dem Schichtinformationen in einem einzigen Bit codiert werden können.
  • Gemäß einigen Ausführungsformen kann eine in 5 dargestellte Abdeckungsmaskenkompaktierungssequenz 70 in Software, Firmware und/oder Hardware implementiert werden. Gemäß Software- und Firmwareausführungsformen kann sie durch computerausgeführte Befehle implementiert werden, die in einem oder mehreren nicht flüchtigen computerlesbaren Medien in der Art eines Halbleiterspeichers, eines magnetischen oder eines optischen Speichers gespeichert sind. Gemäß einer Ausführungsform kann der Direktzugriffsspeicher 32 für diesen Zweck verwendet werden, wie in 4 dargestellt ist.
  • Die in 5 dargestellte Sequenz 70 beginnt mit dem Durchsuchen jeder Zeile/Spalte, um die Pixel zu finden, in denen sich eine Abdeckungsmaske ändert, wie in Block 78 dargestellt ist. Dies sind die Pixel, die mit einer pro Sample erfasste Maske dargestellt werden müssen. Als nächstes wird die Abdeckungsmaskendarstellung geändert (Block 80), wie vorstehend beschrieben wurde.
  • In einer Prüfung bei einem Diamanten 82 wird bestimmt, ob sich die Kachel nicht unter Verwendung des ausgewählten Modus darstellen lässt. Falls dies nicht der Fall ist, muss in Block 84 eine Option ausgewählt werden. Eine Option besteht darin, unter Verwendung einer anderen Zeilen-/Spalten-Orientierung zu Block 78 zurückzukehren. Eine andere Option besteht darin, mit einer anderen Parametereinstellung zu Block 80 zurückzukehren. Falls keine weiteren Varianten verfügbar sind, muss eine andere Darstellung in der Art des ursprünglichen Pro-Pixel-Zmax-Modus oder irgendeine andere Darstellung verwendet werden, wie in Block 86 angegeben ist.
  • 6 zeigt eine Ausführungsform eines Systems 700. Gemäß Ausführungsformen kann das System 700 ein Mediensystem sein, wenngleich es nicht auf diesen Zusammenhang beschränkt ist. Beispielsweise kann das System 700 in einen Personalcomputer (PC), einen Laptopcomputer, einen Ultra-Laptopcomputer, ein Tablett, einen Touchpad, einen tragbaren Computer, einen handgehaltenen Computer, einen Palmtop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Kombination aus einem Mobiltelefon und einem PDA, ein Fernsehgerät, eine intelligente Vorrichtung (beispielsweise ein Smartphone, ein Smart-Tablett oder ein Smart-Fernsehgerät), eine mobile Internetvorrichtung (MID), eine Nachrichtenaustauschvorrichtung, eine Datenkommunikationsvorrichtung und dergleichen eingebaut sein.
  • Gemäß Ausführungsformen umfasst das System 700 eine Plattform 702, die mit einer Anzeige 720 gekoppelt ist. Die Plattform 702 kann Inhalt von einer Inhaltsvorrichtung in der Art einer Inhaltsdienstvorrichtung (von Inhaltsdienstvorrichtungen) 730 oder einer Inhaltsauslieferungsvorrichtung (von Inhaltsauslieferungsvorrichtungen) 740 oder anderen ähnlichen Inhaltsquellen empfangen. Eine Navigationssteuereinrichtung 750, die ein oder mehrere Navigationsmerkmale aufweist, kann verwendet werden, um beispielsweise mit der Plattform 702 und/oder der Anzeige 720 zusammenzuarbeiten. Jede dieser Komponenten wird nachstehend in weiteren Einzelheiten beschrieben.
  • Gemäß Ausführungsformen kann die Plattform 702 eine beliebige Kombination eines Chipsatzes 705, eines Prozessors 710, eines Speichers 712, einer Speichervorrichtung 714, eines Graphikuntersystems 715, von Anwendungen 716 und/oder eines Radios 718 aufweisen. Der Chipsatz 705 kann eine Kommunikation zwischen dem Prozessor 710, dem Speicher 712, der Speichervorrichtung 714, dem Graphikuntersystem 715, Anwendungen 716 und/oder dem Radio 718 bereitstellen. Beispielsweise kann der Chipsatz 705 einen Speichervorrichtungsadapter (nicht dargestellt) aufweisen, der eine Kommunikation mit der Speichervorrichtung 714 bereitstellen kann.
  • Der Prozessor 710 kann als Computerprozessor mit einem komplexen Befehlssatz (CISC) oder Computerprozessor mit einem reduzierten Befehlssatz (RISC), mit dem x86-Befehlssatz kompatible Prozessoren, Mehrkernprozessoren oder als irgendein anderer Mikroprozessor oder irgendeine andere Zentralverarbeitungseinheit (CPU) implementiert sein. Gemäß Ausführungsformen kann der Prozessor 710 einen Zweikernprozessor (Zweikernprozessoren), einen Zweikern-Mobilprozessor (Zweikern-Mobilprozessoren) usw. umfassen. Der Prozessor kann die Sequenzen aus den 3 und 5 zusammen mit dem Speicher 712 implementieren. Diese Sequenzen können gemäß einigen Ausführungsformen durch einen Graphikprozessor des Graphikuntersystems 715 ausgeführt werden.
  • Der Speicher 712 kann als eine flüchtige Speichervorrichtung in der Art eines Direktzugriffsspeichers (RAM), eines dynamischen Direktzugriffsspeichers (DRAM) oder eines statischen RAM (SRAM) implementiert sein, ist jedoch nicht auf diese beschränkt.
  • Die Speichervorrichtung 714 kann als eine nicht flüchtige Speichervorrichtung in der Art eines Magnetplattenlaufwerks, eines optischen Plattenlaufwerks, eines Bandlaufwerks, einer internen Speichervorrichtung, einer angebrachten Speichervorrichtung, eines Flash-Speichers, eines batteriegestützten SDRAM (synchronen DRAM) und/oder einer über ein Netz zugänglichen Speichervorrichtung implementiert sein, ist jedoch nicht darauf beschränkt. Gemäß Ausführungsformen kann die Speichervorrichtung 714 eine Technologie zum Erhöhen der Schutzwirkung für die Speichervorrichtung 714 für wertvolle digitale Medien aufweisen, beispielsweise wenn mehrere Festplattenlaufwerke aufgenommen sind.
  • Das Graphikuntersystem 715 kann eine Verarbeitung von Bildern in der Art stehender Bilder oder von Video für die Anzeige ausführen. Das Graphikuntersystem 715 kann beispielsweise eine Graphikverarbeitungseinheit (GPU) oder eine visuelle Verarbeitungseinheit (VPU) sein. Eine analoge oder digitale Schnittstelle kann verwendet werden, um das Graphikuntersystem 715 und die Anzeige 720 kommunikativ zu koppeln. Beispielsweise kann die Schnittstelle eine Multimediaschnittstelle hoher Definition, ein Displayport, eine drahtlose HDMI-Schnittstelle sein und/oder durch drahtlose HD-kompatible Techniken gegeben sein. Das Graphikuntersystem 715 könnte in den Prozessor 710 oder den Chipsatz 705 integriert sein. Das Graphikuntersystem 715 könnte eine autonome Karte sein, die mit dem Chipsatz 705 kommunikativ gekoppelt ist.
  • Die hier beschriebenen Graphik- und/oder Videoverarbeitungstechniken können in verschiedenen Hardwarearchitekturen implementiert werden. Beispielsweise kann Graphik- und/oder Videofunktionalität in einen Chipsatz integriert werden. Alternativ kann ein diskreter Graphik- und/oder Videoprozessor verwendet werden. Gemäß einer weiteren Ausführungsform können die Graphik- und/oder Videofunktionen durch einen Prozessor für allgemeine Zwecke, einschließlich eines Mehrkernprozessors, implementiert werden. Gemäß einer weiteren Ausführungsform können die Funktionen in einer elektronischen Endkundenvorrichtung implementiert werden.
  • Das Radio 718 kann ein oder mehrere Radios einschließen, die in der Lage sind, Signale unter Verwendung verschiedener geeigneter Drahtloskommunikationstechniken zu senden und zu empfangen. Solche Techniken können Kommunikationen über ein oder mehrere Drahtlosnetze einschließen. Als Beispiel dienende Drahtlosnetze umfassen (sind jedoch nicht darauf beschränkt) drahtlose lokale Netze (WLAN), drahtlose persönliche Netze (WPAN), drahtlose Großstadtnetze (WMAN), Mobilfunknetze und Satellitennetze. Bei der Kommunikation über solche Netze kann das Radio 718 nach einem oder mehreren anwendbaren Standards in einer beliebigen Version arbeiten.
  • Gemäß Ausführungsformen kann die Anzeige 720 einen beliebigen Fernsehbildschirm oder eine beliebige Fernsehanzeige umfassen. Die Anzeige 720 kann beispielsweise einen Computeranzeigebildschirm, eine Berührungsbildschirmanzeige, einen Videobildschirm, eine fernsehartige Vorrichtung und/oder ein Fernsehgerät umfassen. Die Anzeige 720 kann digital und/oder analog sein. Gemäß Ausführungsformen kann die Anzeige 720 eine holographische Anzeige sein. Auch kann die Anzeige 720 eine transparente Oberfläche sein, die eine visuelle Projektion empfangen kann. Solche Projektionen können verschiedene Informationsformen, Bilder und/oder Objekte übermitteln. Beispielsweise können diese Projektionen eine sichtbare Überlagerung für eine mobile Erweiterte-Realität-(MAR)-Anwendung sein. Unter der Kontrolle einer oder mehrerer Softwareanwendungen 716 kann die Plattform 702 eine Benutzerschnittstelle 722 auf der Anzeige 720 anzeigen.
  • Gemäß Ausführungsformen kann die Inhaltsdienstvorrichtung (können die Inhaltsdienstvorrichtungen) 730 durch einen beliebigen nationalen, internationalen und/oder unabhängigen Dienst, der demgemäß beispielsweise über das Internet für die Plattform 702 zugänglich ist, gehostet werden. Die Inhaltsdienstvorrichtung (Inhaltsdienstvorrichtungen) 730 kann (können) mit der Plattform 702 und/oder der Anzeige 720 gekoppelt sein. Die Plattform 702 und/oder die Inhaltsdienstvorrichtung (Inhaltsdienstvorrichtungen) 730 können mit einem Netz 760 gekoppelt sein, um Medieninformationen zum Netz 760 und von diesem zu übermitteln (beispielsweise zu senden und/oder zu empfangen). Die Inhaltsauslieferungsvorrichtung (Inhaltsauslieferungsvorrichtungen) 740 können auch mit der Plattform 702 und/oder der Anzeige 720 gekoppelt sein.
  • Gemäß Ausführungsformen kann die Inhaltsdienstvorrichtung (können die Inhaltsdienstvorrichtungen) 730 einen Kabelfernsehkasten, einen Personalcomputer, ein Netz, ein Telefon, internetfähige Vorrichtungen oder ein Gerät, das in der Lage ist, digitale Informationen und/oder digitalen Inhalt auszuliefern, und eine beliebige andere ähnliche Vorrichtung, die in der Lage ist, Inhalt zwischen Inhaltsanbietern und der Plattform 702 und der Anzeige 720 über das Netz 760 oder direkt unidirektional oder bidirektional zu übermitteln, umfassen. Es sei bemerkt, dass der Inhalt unidirektional und/oder bidirektional zu einer der Komponenten im System 700 und einem Inhaltsanbieter und von diesen über das Netz 760 übermittelt werden kann. Beispiele von Inhalt können beliebige Medieninformationen einschließen, einschließlich beispielsweise Video-, Musik-, medizinischer und Spielinformationen usw.
  • Die Inhaltsdienstvorrichtung (Inhaltsdienstvorrichtungen) 730 empfängt (empfangen) Inhalt in der Art eines Kabelfernsehprogramms, einschließlich Medieninformationen, digitaler Informationen und/oder anderen Inhalts. Beispiele von Inhaltsanbietern können beliebige Kabel- oder Satellitenfernseh- oder Radio- oder Internetinhaltsanbieter einschließen. Die bereitgestellten Beispiele sollen Ausführungsformen der Erfindung nicht einschränken.
  • Gemäß Ausführungsformen kann die Plattform 702 Steuersignale von der Navigationssteuereinrichtung 750 mit einem oder mehreren Navigationsmerkmalen empfangen. Die Navigationsmerkmale der Steuereinrichtung 750 können beispielsweise verwendet werden, um mit der Benutzerschnittstelle 722 zu interagieren. Gemäß Ausführungsformen kann die Navigationssteuereinrichtung 750 eine Zeigevorrichtung sein, die eine Computerhardwarekomponente (insbesondere eine Human-Interface-Vorrichtung) sein kann, die es einem Benutzer ermöglicht, räumliche (beispielsweise kontinuierliche und mehrdimensionale) Daten in einen Computer einzugeben. Viele Systeme, wie graphische Benutzerschnittstellen (GUI) und Fernsehgeräte und Bildschirme, ermöglichen es dem Benutzer, den Computer oder das Fernsehgerät unter Verwendung physikalischer Gesten zu steuern und ihm dadurch Daten bereitzustellen.
  • Bewegungen der Navigationsmerkmale der Steuereinrichtung 750 können auf einer Anzeige (beispielsweise einer Anzeige 720) durch Bewegungen eines Zeigers, eines Cursors, eines Fokusrings oder anderer Sichtindikatoren, die auf der Anzeige angezeigt werden, echoartig wiedergegeben werden. Beispielsweise können, durch Softwareanwendungen 716 gesteuert, die Navigationsmerkmale, die sich auf der Navigationssteuereinrichtung 750 befinden, auf virtuelle Navigationsmerkmale abgebildet werden, die beispielsweise auf der Benutzerschnittstelle 722 angezeigt werden. Gemäß Ausführungsformen kann die Steuereinrichtung 750 keine getrennte Komponente sein, sondern in die Plattform 702 und/oder die Anzeige 720 integriert sein. Ausführungsformen sind jedoch nicht auf die Elemente oder auf den Zusammenhang, der hier dargestellt oder beschrieben ist, beschränkt.
  • Gemäß Ausführungsformen können Treiber (nicht dargestellt) eine Technologie aufweisen, um es Benutzern zu ermöglichen, die Plattform 702 beispielsweise in der Art eines Fernsehgeräts mit der Berührung einer Taste nach dem anfänglichen Hochfahren, sofern dies ermöglicht es, sofort ein- und auszuschalten. Eine Programmlogik kann es der Plattform 702 ermöglichen, Inhalt zu Medienadaptern oder einer anderen Inhaltsdienstvorrichtung (anderen Inhaltsdienstvorrichtungen) 730 oder einer anderen Inhaltsauslieferungsvorrichtung (anderen Inhaltsauslieferungsvorrichtungen) 740 zu streamen, wenn die Plattform „ausgeschaltet“ ist. Zusätzlich kann der Chipsatz 705 eine Hardware- und/oder Softwareunterstützung beispielsweise für 5.1-Surround-Sound-Audio und/oder High-Definition-7.1-Surround-Sound-Audio aufweisen. Treiber können einen Graphiktreiber für integrierte Graphikplattformen einschließen. Gemäß Ausführungsformen kann der Graphiktreiber eine Peripheriekomponentenverbindungs-(PCI)-Express-Graphikkarte aufweisen.
  • Gemäß verschiedenen Ausführungsformen können eine oder mehrere der im System 700 dargestellten Komponenten integriert werden. Beispielsweise können die Plattform 702 und die Inhaltsdienstvorrichtung (Inhaltsdienstvorrichtungen) 730 integriert werden oder können die Plattform 702 und die Inhaltsauslieferungsvorrichtung (die Inhaltsauslieferungsvorrichtungen) 740 integriert werden oder können beispielsweise die Plattform 702, die Inhaltsdienstvorrichtung (Inhaltsdienstvorrichtungen) 730 und die Inhaltsauslieferungsvorrichtung (Inhaltsauslieferungsvorrichtungen) 740 integriert werden. Gemäß verschiedenen Ausführungsformen können die Plattform 702 und die Anzeige 720 eine integrierte Einheit sein. Die Anzeige 720 und die Inhaltsdienstvorrichtung (Inhaltsdienstvorrichtungen) 730 können integriert werden, oder die Anzeige 720 und die Inhaltsauslieferungsvorrichtung (Inhaltsauslieferungsvorrichtungen) 740 können beispielsweise integriert werden. Diese Beispiele sollen die Erfindung nicht einschränken.
  • Gemäß verschiedenen Ausführungsformen kann das System 700 als ein drahtloses System, ein verdrahtetes System oder eine Kombination von beiden implementiert werden. Wenn es als ein drahtloses System implementiert wird, kann das System 700 Komponenten oder Schnittstellen aufweisen, die für die Kommunikation über ein drahtloses geteiltes Medium geeignet sind, wie eine oder mehrere Antennen, Sender, Empfänger, Transceiver, Verstärker, Filter, Steuerlogik und dergleichen. Ein Beispiel eines drahtlosen geteilten Mediums kann Abschnitte eines Drahtlosspektrums in der Art des HF-Spektrums usw. einschließen. Wenn es als ein verdrahtetes System implementiert wird, kann das System 700 Komponenten und Schnittstellen aufweisen, die für die Kommunikation über verdrahtete Kommunikationsmedien geeignet sind, wie Ein-/Ausgabe-(I/O)-Adapter, physikalische Verbinder zum Verbinden des I/O-Adapters mit einem entsprechenden verdrahteten Kommunikationsmedium, eine Netzschnittstellenkarte (NIC), eine Plattensteuereinrichtung, eine Videosteuereinrichtung, eine Audiosteuereinrichtung usw. Beispiele verdrahteter Kommunikationsmedien können einen Draht, ein Kabel, Metallleitungen, eine gedruckte Leiterplatte (PCB), eine rückseitige Ebene, ein Schaltnetz, ein Halbleitermaterial, einen Twisted-Pair-Draht, ein Koaxialkabel, eine Faseroptik usw. einschließen.
  • Die Plattform 702 kann einen oder mehrere logische oder physikalische Kanäle zur Übermittlung von Informationen einrichten. Die Informationen können Medieninformationen und Steuerinformationen einschließen. Medieninformationen können sich auf beliebige Daten beziehen, die Inhalt darstellen, der für einen Benutzer bestimmt ist. Beispiele von Inhalt können beispielsweise Daten von einem Gespräch, einer Videokonferenz, Streaming-Video, einer elektronischen Nachricht („E-Mail“), einer Sprachnachricht, alphanumerische Symbole, Graphiken, Bilddaten, Videodaten, Textdaten usw. einschließen. Daten von einem Gespräch können beispielsweise Sprachinformationen, Ruheperioden, Hintergrundgeräusche, Annehmlichkeitsgeräusche, Töne usw. einschließen. Steuerinformationen können sich auf jegliche Daten beziehen, die Befehle, Anweisungen oder Steuerwörter darstellen, die für ein automatisches System bestimmt sind. Beispielsweise können Steuerinformationen verwendet werden, um Medieninformationen durch ein System zu leiten oder einen Knoten anzuweisen, die Medieninformationen in einer vorgegebenen Weise zu verarbeiten. Die Ausführungsformen sind jedoch nicht auf die Elemente oder den Zusammenhang beschränkt, die oder der in 6 dargestellt oder beschrieben sind.
  • Wie vorstehend beschrieben, kann das System 700 in verschiedenen physikalischen Stilen oder Formfaktoren verwirklicht werden. 7 zeigt Ausführungsformen einer Vorrichtung 800 mit einem kleinen Formfaktor, worin das System 700 verwirklicht werden kann. Gemäß Ausführungsformen kann beispielsweise die Vorrichtung 800 als eine mobile Rechenvorrichtung implementiert werden, welche drahtlose Fähigkeiten aufweist. Eine mobile Rechenvorrichtung kann sich auf eine beliebige Vorrichtung beziehen, die ein Verarbeitungssystem und eine mobile Leistungsquelle oder -versorgung, beispielsweise in der Art einer oder mehrerer Batterien, aufweist.
  • Wie vorstehend beschrieben, können Beispiele einer mobilen Rechenvorrichtung einen Personalcomputer (PC), einen Laptopcomputer, einen Ultra-Laptopcomputer, ein Tablett, einen Touchpad, einen tragbaren Computer, einen handgehaltenen Computer, einen Palmtop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Kombination aus einem Mobiltelefon und einem PDA, ein Fernsehgerät, eine intelligente Vorrichtung (beispielsweise ein Smartphone, ein Smart-Tablett oder ein Smart-Fernsehgerät), eine mobile Internetvorrichtung (MID), eine Nachrichtenaustauschvorrichtung, eine Datenkommunikationsvorrichtung und dergleichen einschließen.
  • Beispiele einer mobilen Rechenvorrichtung können auch Computer einschließen, die dafür eingerichtet sind, von einer Person getragen zu werden, wie einen Armbandcomputer, einen Fingercomputer, einen Ringcomputer, einen Brillencomputer, einen Gürtelklammercomputer, einen Armbandcomputer, Schuhcomputer, Kleidungscomputer und andere tragbare Computer. Gemäß Ausführungsformen kann eine mobile Rechenvorrichtung beispielsweise als ein Smartphone implementiert werden, das in der Lage ist, Computeranwendungen sowie Sprachkommunikationen und/oder Datenkommunikationen auszuführen. Wenngleich einige Ausführungsformen als Beispiel mit einer als Smartphone implementierten mobilen Rechenvorrichtung beschrieben werden können, ist zu verstehen, dass andere Ausführungsformen auch unter Verwendung anderer drahtloser mobiler Rechenvorrichtungen implementiert werden können. Die Ausführungsformen sind nicht auf diesen Zusammenhang beschränkt.
  • Der Prozessor 710 kann gemäß einigen Ausführungsformen mit einer Kamera 722 und einem Sensor 720 des globalen Positionsbestimmungssystems kommunizieren. Ein Speicher 712, der mit dem Prozessor 710 gekoppelt ist, kann computerlesbare Befehle zum Implementieren der in den 3 und 5 dargestellten Sequenzen in Software- und/oder Firmwareausführungsformen speichern.
  • Wie in 7 dargestellt ist, kann die Vorrichtung 800 ein Gehäuse 802, eine Anzeige 804, eine Ein-/Ausgabe-(I/O)-Vorrichtung 806 und eine Antenne 808 aufweisen. Die Vorrichtung 800 kann auch Navigationsmerkmale 812 aufweisen. Die Anzeige 804 kann eine beliebige geeignete Anzeigeeinheit zum Anzeigen von Informationen, die für eine mobile Rechenvorrichtung geeignet ist, aufweisen. Die I/O-Vorrichtung 806 kann eine beliebige geeignete I/O-Vorrichtung zum Eingeben von Informationen in eine mobile Rechenvorrichtung aufweisen. Beispiele für die I/O-Vorrichtung 806 können eine alphanumerische Tastatur, eine numerische Tastatur, ein Berührungsfeld, Eingabetasten, Tastenknöpfe, Schalter, Wippschalter, Mikrofone, Lautsprecher, eine Spracherkennungsvorrichtung und -software usw. einschließen. Informationen können auch durch ein Mikrofon in die Vorrichtung 800 eingegeben werden. Solche Informationen können durch eine Spracherkennungsvorrichtung digitalisiert werden. Die Ausführungsformen sind nicht auf diesen Zusammenhang beschränkt.
  • Verschiedene Ausführungsformen können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beiden implementiert werden. Beispiele von Hardwareelementen können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (beispielsweise Transistoren, Widerstände, Kondensatoren, Induktoren usw.), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD), digitale Signalprozessoren (DSP), ein feldprogrammierbares Gate-Array (FPGA), Logikgatter, Register, eine Halbleitervorrichtung, Chips, Mikrochips, Chipsätze usw. einschließen. Beispiele von Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Methoden, Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen (API), Befehlssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder irgendeine Kombination davon einschließen. Die Bestimmung, ob eine Ausführungsform unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann von einer beliebigen Anzahl von Faktoren abhängen, in der Art der gewünschten Rechengeschwindigkeit, Leistungsniveaus, Wärmetoleranzen, des Verarbeitungszyklusbudgets, Dateneingaberaten, Datenausgaberaten, Speicherressourcen, Datenbusgeschwindigkeiten und anderer Entwurfs- und Leistungsrandbedingungen.

Claims (10)

  1. System (20) zur Verwendung in einem Graphikprozessor und zur Speicherung eines Tiefenpuffers für die Verarbeitung von Bildern, wobei das System (20) umfasst: einen Rastergraphikgenerator (22) der angepasst ist, um zu identifizieren, welche Kacheln von Pixeln durch ein gegenwärtig gerendertes Dreieck des Bilds vollständig oder teilweise verdeckt werden, wobei der Rastergraphikgenerator (22) ferner angepasst ist, die Pixel einer jeden vollständig oder teilweise verdeckten Kachel mehreren Pixelpipelines (24) des Systems (20) zuzuführen; die Pixelpipelines (24), die angepasst sind, die Tiefe und Farbe der jeweiligen Pixel der vollständig oder teilweise verdeckten Kacheln zu berechnen, und Pixel der vollständig oder teilweise verdeckten Kacheln zu verwerfen, die durch eine zuvor gezeichnete Geometrie verdeckt werden; eine Tiefeneinheit (28) mit einem Kacheltabellencache (30), der eine Tiefenmaskendarstellung für jede Kachel zwischenspeichert, und mit einem Kachelcache (41), der pro Sample erfasste Tiefenwerte der Kacheln zwischenspeichert; und einen Kompressor (35) der eingerichtet ist, selektiv die Tiefenebenendarstellung der Kacheln zu komprimieren, und in einem Speicher (32) des Systems (20) zu speichern; wobei der Kompressor (35) eingerichtet ist, die Tiefenebenendarstellung einer vollständig verdeckten Kachel in einer Bit-Darstellung mit einer hohen Genauigkeit und die Tiefenebenendarstellung einer teilweise verdeckten Kachel in einer komprimierten Bit-Darstellung mit einer geringeren Genauigkeit als für vollständig verdeckte Kacheln zu speichern, wenn die aus der komprimierten Bit-Darstellung der Tiefenebenendarstellung der teilweise verdeckten Kachel rekonstruierten Tiefenwerte mit gerundeten Tiefenwerten übereinstimmen, die aus einer unkomprimierten Bit-Darstellung der Tiefenebenendarstellung der teilweise verdeckten Kachel rekonstruiert werden würden.
  2. System (20) nach Anspruch 1, wobei die Darstellung der Tiefenwerte der Pixel der teilweise verdeckten Kacheln mittels einer Ebenengleichungen z(x, y) = Ref + x · Dx + y · Dy erfolgt, wobei (x, y) eine Pixel-Koordinate der Kachel ist, REF ein Referenzwert der Ebenengleichung ist, und Dx und Dy Delta-Werte der Ebenengleichung darstellen; wobei die Werte REF, Dx und Dy jeweils in einem von drei Blöcken von Bits gespeichert werden, die in der Anzahl der Bits pro Block der Anzahl von Bits einer Gleitkomma-Zahl mit der hohen Genauigkeit entsprechen, wobei der Kompressor (35) eingerichtet ist, die komprimierte Bit-Darstellung einer teilweise verdeckten Kachel zu erzeugen indem: die Werte Dx und Dy zunächst in Gleitkomma-Zahlen mit der hohen Genauigkeit konvertiert und anschließend die Werte REF, Dx und Dy durch verschieben der Mantissen auf einen gleichen Exponenten normalisiert werden; der normalisierte Wert RFF als Gleitkomma-Zahl mit der hohen Genauigkeit in dem ersten der Blöcke gespeichert wird, und für die normalisierten Werte Dx und Dy, nur die oberen 23 Bits der normalisierten Werte Dx und Dy zusammen mit einer Anzahl von Schutzbits in jeweils dem zweiten und dritten Block gespeichert werden, wobei die Anzahl der Schutzbits so gewählt wird, um Tiefenwerte unter Berücksichtigung des Rundungsfehler richtig rekonstruieren zu können; die in dem zweiten und dritten Block verbleibenden Bits dazu verwendet werden, um eine komprimierte Abdeckungsmaske der teilweise verdeckten Kachel zu speichern oder um zwei Ebenen zu codieren, die eine einzige Kachel überlappen.
  3. System nach einem der Anspruch 2, wobei die Anzahl der Schutzbits im Bereich [6, 12] liegt.
  4. System nach einem der Ansprüche 1 bis 3, wobei der Kacheltabellencache (30), der eine Tiefenmaskendarstellung für jede Kachel speichert, anzeigt, ob eine jeweilige Kachel in der komprimierten Bit-Darstellung im Speicher (32) gespeichert wurde.
  5. System nach Anspruch 4, ferner umfassend einen Dekompressor (37) der eingerichtet ist, eine Kachel aus dem Speicher (32) zu laden und basierend auf der Anzeige des für die Speicherung einer Kachel verwendeten Bit-Darstellung im Kacheltabellencache (30), die Kachel zu dekomprimieren.
  6. Ein oder mehrere nicht flüchtige computerlesbare Medien, welche von einem Graphikprozessor ausgeführte Befehle speichern, um eine Sequenz auszuführen, welche folgende Schritte aufweist: Identifizieren, welche Kacheln von Pixeln durch ein gegenwärtig gerendertes Dreieck des Bilds vollständig oder teilweise verdeckt werden, und Zuführen der Pixel einer jeden vollständig oder teilweise verdeckten Kachel an mehreren Pixelpipelines (24); Berechnung der Tiefe und Farbe der jeweiligen Pixel der vollständig oder teilweise verdeckten Kacheln und Verwerfen von Pixeln der vollständig oder teilweise verdeckten Kacheln, die durch eine zuvor gezeichnete Geometrie verdeckt werden in den Pixelpipelines (24); Zwischenspeichern einer Tiefenmaskendarstellung für jede Kachel in einem Kacheltabellencache (30) und pro Sample erfasster Tiefenwerte der Kacheln in einem Kachelcache (41); und selektives Komprimieren der Tiefenebenendarstellung der Kacheln mittels eines Kompressors (35), und Speichern der selektiv komprimieren Kacheln in einem Speicher (32) des Systems (20); wobei der Kompressor (35) die Tiefenebenendarstellung einer vollständig verdeckten Kachel in einer Bit-Darstellung mit einer hohen Genauigkeit und die Tiefenebenendarstellung einer teilweise verdeckten Kachel in einer komprimierten Bit-Darstellung mit einer geringeren Genauigkeit als für vollständig verdeckte Kacheln speichert, wenn die aus der komprimierten Bit-Darstellung der Tiefenebenendarstellung der teilweise verdeckten Kachel rekonstruierten Tiefenwerte mit gerundeten Tiefenwerten übereinstimmen, die aus einer unkomprimierten Bit-Darstellung der Tiefenebenendarstellung der teilweise verdeckten Kachel rekonstruiert werden würden.
  7. Das eine oder die mehreren nicht flüchtige computerlesbaren Medien nach Anspruch 6, wobei die Darstellung der Tiefenwerte der Pixel der teilweise verdeckten Kacheln mittels einer Ebenengleichungen z(x,y) = Ref + x · Dx + y · Dy erfolgt, wobei (x, y) eine Pixel-Koordinate der Kachel ist, REF ein Referenzwert der Ebenengleichung ist, und Dx und Dy Delta-Werte der Ebenengleichung darstellen; wobei die Werte REF, Dx und Dy jeweils in einem von drei Blöcken von Bits gespeichert werden, die in der Anzahl der Bits pro Block der Anzahl von Bits einer Gleitkomma-Zahl mit der hohen Genauigkeit entsprechen, wobei die vom Graphikprozessor ausgeführte Befehle bewirken, dass der Kompressor (35) die komprimierte Bit-Darstellung einer teilweise verdeckten Kachel erzeugt indem: die Werte Dx und Dy zunächst in Gleitkomma-Zahlen mit der hohen Genauigkeit konvertiert und anschließend die Werte REF, Dx und Dy durch verschieben der Mantissen auf einen gleichen Exponenten normalisiert werden; der normalisierte Wert RFF als Gleitkomma-Zahl mit der hohen Genauigkeit in dem ersten der Blöcke gespeichert wird, und für die normalisierten Werte Dx und Dy, nur die oberen 23 Bits der normalisierten Werte Dx und Dy zusammen mit einer Anzahl von Schutzbits in jeweils dem zweiten und dritten Block gespeichert werden, wobei die Anzahl der Schutzbits so gewählt wird, um Tiefenwerte unter Berücksichtigung des Rundungsfehler richtig rekonstruieren zu können; die in dem zweiten und dritten Block verbleibenden Bits dazu verwendet werden, eine komprimierte Abdeckungsmaske der teilweise verdeckten Kachel zu speichern oder um zwei Ebenen zu codieren, die eine einzige Kachel überlappen.
  8. Das eine oder die mehreren nicht flüchtige computerlesbaren Medien nach Anspruch 7, wobei die Anzahl der Schutzbits im Bereich [6, 12] liegt.
  9. Das eine oder die mehreren nicht flüchtige computerlesbaren Medien nach einem der Ansprüche 6 bis 8, wobei die vom Graphikprozessor ausgeführte Befehle bewirken, dass der Kacheltabellencache (30), der eine Tiefenmaskendarstellung für jede Kachel speichert, anzeigt, ob eine jeweilige Kachel in der komprimierten Bit-Darstellung im Speicher (32) gespeichert wurde.
  10. Das eine oder die mehreren nicht flüchtige computerlesbaren Medien nach einem der Ansprüche 6 bis 9, wobei die vom Graphikprozessor ausgeführte Befehle bewirken, dass die Sequenz von ausgeführten Schritten ferner umfasst, eine Kachel aus dem Speicher (32) zu laden und basierend auf der Anzeige des für die Speicherung einer Kachel verwendeten Bit-Darstellung im Kacheltabellencache (30), die Kachel zu dekomprimieren.
DE102015002023.4A 2014-03-18 2015-02-17 Kompakte Tiefenebenendarstellung zum Sortieren letzter Architekturen Active DE102015002023B4 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US14/217,774 US9418471B2 (en) 2014-03-18 2014-03-18 Compact depth plane representation for sort last architectures
US14/217,774 2014-03-18

Publications (2)

Publication Number Publication Date
DE102015002023A1 DE102015002023A1 (de) 2015-09-24
DE102015002023B4 true DE102015002023B4 (de) 2022-05-12

Family

ID=54053699

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015002023.4A Active DE102015002023B4 (de) 2014-03-18 2015-02-17 Kompakte Tiefenebenendarstellung zum Sortieren letzter Architekturen

Country Status (4)

Country Link
US (1) US9418471B2 (de)
CN (1) CN104933750B (de)
DE (1) DE102015002023B4 (de)
TW (1) TWI571107B (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9824412B2 (en) * 2014-09-24 2017-11-21 Intel Corporation Position-only shading pipeline
GB2539509B (en) * 2015-06-19 2017-06-14 Advanced Risc Mach Ltd Method of and apparatus for processing graphics
US10380789B2 (en) * 2016-09-16 2019-08-13 Intel Corporation Method and apparatus for efficient depth prepass
US10409614B2 (en) * 2017-04-24 2019-09-10 Intel Corporation Instructions having support for floating point and integer data types in the same register
GB2565301A (en) * 2017-08-08 2019-02-13 Nokia Technologies Oy Three-dimensional video processing
GB2574361B (en) 2017-12-18 2021-03-24 Advanced Risc Mach Ltd Graphics Processing
US10726610B2 (en) 2018-08-29 2020-07-28 Arm Limited Efficient graphics processing using metadata

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7382368B1 (en) 2004-06-28 2008-06-03 Nvidia Corporation Planar z representation for z compression

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7791617B2 (en) * 2005-12-19 2010-09-07 Nvidia Corporation Method and system for rendering polygons having abutting edges
US8928676B2 (en) * 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US9070213B2 (en) * 2006-07-26 2015-06-30 Nvidia Corporation Tile based precision rasterization in a graphics pipeline
US7659893B1 (en) * 2006-10-02 2010-02-09 Nvidia Corporation Method and apparatus to ensure consistency of depth values computed in different sections of a graphics processor
GB2497302B (en) * 2011-12-05 2017-04-12 Advanced Risc Mach Ltd Methods of and apparatus for processing computer graphics

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7382368B1 (en) 2004-06-28 2008-06-03 Nvidia Corporation Planar z representation for z compression

Also Published As

Publication number Publication date
US9418471B2 (en) 2016-08-16
TWI571107B (zh) 2017-02-11
DE102015002023A1 (de) 2015-09-24
CN104933750A (zh) 2015-09-23
US20150269771A1 (en) 2015-09-24
TW201537957A (zh) 2015-10-01
CN104933750B (zh) 2020-09-04

Similar Documents

Publication Publication Date Title
DE102015002023B4 (de) Kompakte Tiefenebenendarstellung zum Sortieren letzter Architekturen
DE102013114279B4 (de) Oberflächenverarbeitung mit Mehrfachabtastung unter Verwendung einer einzelnen Abtastung
DE102015002218B4 (de) Vermeiden des Sendens unveränderlicher Gebiete zur Anzeige
DE112014002469B4 (de) System und Verfahren zur Erzeugung von Bildern für eine augennaheLichtfeldanzeige
DE112013004618T5 (de) Tiefenpufferung
DE102015001814A1 (de) Farbkomprimierung unter Verwendung einer selektiven Farbtransformation
US20130265305A1 (en) Compressed Depth Cache
DE112016006081T5 (de) Automatische Echtzeit-Fahrzeugkamerakalibrierung
DE102013114373A1 (de) Konsistente Vertex-Einrastung für Rendering mit variabler Auflösung
US20100008572A1 (en) Advanced Anti-Aliasing With Multiple Graphics Processing Units
DE102019120661A1 (de) Videoverfeinerungsmechanismus
US9934604B2 (en) Culling using masked depths for MSAA
DE112013003714T5 (de) Stochastische Tiefenpufferkompression mittels verallgemeinerter Ebenencodierung
US9251731B2 (en) Multi-sampling anti-aliasing compression by use of unreachable bit combinations
DE112016004109T5 (de) Echtzeit-mehrfach-fahrzeugdetektion und -tracking
DE102021207678A1 (de) Streamen eines komprimierten lichtfelds
US9741154B2 (en) Recording the results of visibility tests at the input geometry object granularity
DE102019216979A1 (de) Oberflächenrekonstruktion für interaktive augmented reality
DE112013004920T5 (de) Polygonrasterisierung mit reduzierter Bitanzahl
DE102021127982A1 (de) Streaming eines lichtfeldes mit verlustfreier oder verlustbehafteter kompression
DE112013005204T5 (de) Verringern des mit Frequenzänderungen von Prozessoren verbundenen Aufwands
TWI517089B (zh) 色彩緩衝器快取技術
DE112012006970T5 (de) Verteilte Grafikverarbeitung
DE102015115576A1 (de) Grafikverarbeitungseinheit, ein Grafikverarbeitungssystem mit derselben, und ein dieselbe verwendendes Anti-Aliasing-Verfahren
CN106462936B (zh) 深度偏移压缩

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R002 Refusal decision in examination/registration proceedings
R006 Appeal filed
R007 Decision rectified on appeal
R018 Grant decision by examination section/examining division
R020 Patent grant now final