DE60306813T2 - Grafikverarbeitugsvorrichtung, verfahren und computerprogrammprodukte mit minimaltiefenokklusions-culling und zickzack-durchquerung - Google Patents

Grafikverarbeitugsvorrichtung, verfahren und computerprogrammprodukte mit minimaltiefenokklusions-culling und zickzack-durchquerung Download PDF

Info

Publication number
DE60306813T2
DE60306813T2 DE60306813T DE60306813T DE60306813T2 DE 60306813 T2 DE60306813 T2 DE 60306813T2 DE 60306813 T DE60306813 T DE 60306813T DE 60306813 T DE60306813 T DE 60306813T DE 60306813 T2 DE60306813 T2 DE 60306813T2
Authority
DE
Germany
Prior art keywords
coverage
image field
pixels
image
frame
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.)
Expired - Lifetime
Application number
DE60306813T
Other languages
English (en)
Other versions
DE60306813D1 (de
Inventor
Jacob STRÖM
Tomas AKENINE-MÖLLER
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.)
Telefonaktiebolaget LM Ericsson AB
Original Assignee
Telefonaktiebolaget LM Ericsson AB
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 Telefonaktiebolaget LM Ericsson AB filed Critical Telefonaktiebolaget LM Ericsson AB
Publication of DE60306813D1 publication Critical patent/DE60306813D1/de
Application granted granted Critical
Publication of DE60306813T2 publication Critical patent/DE60306813T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • 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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)
  • Aiming, Guidance, Guns With A Light Source, Armor, Camouflage, And Targets (AREA)

Description

  • ALLGEMEINER STAND DER TECHNIK
  • TECHNISCHES GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft das Gebiet der Computergrafik und betrifft insbesondere Grafikverarbeitungsverfahren, -vorrichtungen und -computerprogrammprodukte.
  • BESCHREIBUNG DES STANDES DER TECHNIK
  • Mobiltelefone werden auf der ganzen Welt benutzt. Da sie in der Regel auch mit Bildschirmen ausgestattet sind, ist es auch möglich, auf diesen Geräten Bilder wiederzugeben. Es ist sehr wahrscheinlich, dass dieses Leistungsmerkmal das Mobiltelefon heute zur am weitesten verbreiteten Wiedergabeplattform macht. Allerdings war diese Art der Wiedergabe bisher meistens auf sehr einfache zweidimensionale Grafiken beschränkt, und erst seit kurzem sind in diesem Zusammenhang auch dreidimensionale Grafiken anzutreffen. Ein verstärktes Interesse an Mobiltelefon-Grafiken ist an den Aktivitäten aufkommender Standards abzulesen, wie beispielsweise Java Specification Request 184 (siehe z. B. www.jcp.org) und OpenGL ES für eingebettete Systeme (siehe z. B. www.khronos.org). Zu Anwendungen, bei denen wahrscheinlich dreidimensionale Grafiken zum Einsatz kommen, gehören Mensch-Maschine-Schnittstellen (MMS), Bildschirmschoner, Landkarten, animierte Nachrichten und natürlich Spiele.
  • Mobiltelefonen sind zwei Kennzeichen eigen, die sie grundlegend beispielsweise von PC-Systemen mit Grafikkarten unterscheiden. Zunächst einmal haben sie sehr kleine Anzeigen, und zweitens haben sie sehr wenig Ressourcen für die Wiedergabe. Diese Kennzeichen werden als nächstes kurz besprochen.
  • Derzeitige Mobiltelefone mit Farbanzeigen haben oft eine Auflösung von [176-320] × [144-240], d. h. die Anzeigen sind sehr klein. Der QCIF-Standard definiert eine Auflösung von 176 × 144, und der QVGR-Standard verwendet 320 × 240. Zwar wird man auch höhere Auflösungen, wie beispielsweise 1024 × 768, bei Mobiltelefonen finden, doch es ist recht wahrscheinlich, dass man dies nur bei den absoluten Spitzengeräten unter den Mobiltelefonen antreffen wird, so dass es den meisten Nutzern nicht zur Verfügung steht. Außerdem verbrauchen derart hohe Auflösungen vermutlich mehr Strom, wodurch sich die Batterienutzungsdauer verkürzen kann. Man kann deshalb davon ausgehen, dass die kleinen Auflösungen, wie beispielsweise QCIF und QVGA, überwiegen werden.
  • Was die Farbenanzahl der Anzeige angeht, ist ein Bereich von 256 bis 65.536 Farben üblich. Zusätzlich zu der geringen Auflösung hält der Benutzer die Anzeige oft dicht vor die Augen, wodurch der durchschnittliche Auge-Pixel-Winkel im Vergleich zu dem eines PC-Systems groß ist. Das führt zu dem Schluss, dass diese Anzeigebedingungen bedeuten, dass jeder Pixel auf einem Mobiltelefon letztendlich mit einer höheren Qualität als bei einem PC-System wiedergegeben werden müsste. Man nennt dies mitunter das "Gesetz des umgekehrten Verhältnisses zwischen Bildschirmgröße und Wiedergabequalität".
  • Es gibt verschiedene Gründe dafür, dass ein Mobiltelefon nur über geringe Ressourcen verfügt. Weil sie in der Regel über wiederaufladbare Batterien mit Strom versorgt werden, sollte jede Art der Wiedergabe vorzugsweise möglichst wenig Strom verbrauchen. Darüber hinaus schreitet die Batterietechnologie nicht mit der gleichen Geschwindigkeit voran wie das Mooresche Gesetz. Des Weiteren sind externe Speicherzugriffe am häufigsten die Operation in einem Computersystem, die den meisten Strom verbrauchen. Das bedeutet, dass die Bandbreitenressourcen mit großem Bedacht genutzt werden sollten und dass eine Spitzenbandbreite von vornherein äußerst begrenzt ist.
  • Um die Stückkosten niedrig zu halten, werden Mobiltelefone im Allgemeinen mit sehr wenig Speicher ausgerüstet, und nur wenig Chipfläche wird den Grafikoperationen zugewiesen. Wenig verfügbare Bandbreite, ein kleiner Chipflächenbereich und eine kleine Speichermenge helfen allesamt dabei, die Stückkosten niedrig zu halten, doch vor allem tragen diese Faktoren in der Mehrzahl der Fälle dazu bei, dass weniger Strom verbraucht wird als bei einem System mit mehr Ressourcen. Typische Beispiele echter Mobiltelefondaten sind:
    • 1) ein oder ein halber 32-Bit-Speicherzugriff je Taktzyklus,
    • 2) CPUs mit 10-200 MHz, und 3) 1-16 MB an einigermaßen schnellem Speicher.
  • Die Echtzeitwiedergabe dreidimensionaler Grafiken hat eine Reihe interessanter Anwendungen in mobilen Endgeräten, darunter Spiele, Mensch-Maschine-Schnittstellen, Nachrichtenübermittlung und m-Commerce. Weil eine dreidimensionale Wiedergabe in der Regel eine rechenaufwändige Aufgabe ist, muss oft eigens dafür zuständige Hardware eingebaut werden, um eine ausreichende Leistung zu erzielen. Innovative Wege zum Verringern der Komplexität und der Bandbreitennutzung dieser Hardwarearchitektur sind somit von großer Bedeutung.
  • In einer großen Zahl von Fällen wird ein z-Puffer (Tiefenpuffer) benutzt, um die Sichtbarkeit aufzulösen. Dies geschieht in der Regel deshalb, weil Dreiecke im Allgemeinen in jeder beliebigen Reihenfolge gezeichnet werden können. Darum speichert der z-Puffer eine skalierte Distanz vom Auge zum Dreieck, und wenn ein späteres Dreieck weiter entfernt ist als der Inhalt des z-Puffers, werden die Farbe und der z-Puffer nicht überzeichnet.
  • Trotzdem bedeutet dies auch, dass das Grafiksystem nicht sehr klug ist, weil ein Pixel mehrere Male überzeichnet werden kann. Und selbst wenn ein Pixel mehrere Male überschrieben wird, kann man am Ende nur eine einzige geometrische Grundform (Dreieck) sehen. Ein analoger Vergleich ist das Bemalen einer Leinwand, wo die untersten Farbschichten durch die obersten Farbschichten überdeckt werden. Für ein Grafiksystem gilt das gleiche, aber mit der Ausnahme, dass die Farbe in jeder beliebigen Reihenfolge gezeichnet werden kann.
  • Es ist ebenfalls wichtig zu beachten, dass es für eine mobile Plattform im Allgemeinen wünschenswert ist, dass die Bandbreitennutzung zum Hauptspeicher so weit wie möglich verringert wird, weil derartige Speicherzugriffe einen Großteil des Stroms verbrauchen, der in der Regel eine knappe Ressource ist.
  • Es gibt heute verschiedene Grafikkarten (NVIDIA Geforce3 und aufwärts, und ATI Radeon), die mit einer Form von Überdeckungsaussortierung arbeiten. Der Bildschirm ist beispielsweise in 8 × 8 Regionen (Bildfelder genannt) unterteilt, und für jedes Bildfeld wird das Maximum der z-Werte, zmax, im z-Puffer für dieses Bildfeld in einem Cache-Speicher gespeichert (schnell und mit geringem Stromverbrauch). Wenn Dreiecke dargestellt werden, so werden alle Pixel in einem Bildfeld inspiziert, bevor zum nächsten Bildfeld übergegangen wird, und wenn ein neues Bildfeld gefunden wird, so wird der kleinste z-Wert, zmin, für das Dreieck im Inneren dieses Bildfeldes berechnet (oder es kann ein weniger aufwändiges und weniger genaues Verfahren verwendet werden, um den kleinsten z-Wert zu überschätzen). Wenn zmin größer ist als der zmax des Bildfeldes, so wird dieses Dreieck, das wir gerade darstellen, überdeckt (abgedeckt), und wir brauchen dieses Bildfeld für dieses Dreieck in der Regel nicht weiter zu verarbeiten. Wenn das Bildfeld nicht überdeckt ist, dann werden die Pixel innerhalb des Bildfeldes wie gewöhnlich verarbeitet, d. h. die Pixel werden auf Einbindung in das Dreieck geprüft, dann erfolgen das z-Testen, die Texturierung usw.
  • US-Patent Nr. 6,421,764 an Morein, "Method and apparatus for efficient clearing of memory" (beschrieben in Akenine-Möller Tomas und Eric Haines, "Real-Time Rendering", 2. Ausgabe, Juni 2002, Seiten 694-697), beschreibt einen Weg zum effektiven Löschen eines Speichers. Anstatt des Löschens beispielsweise des z-Puffers setzt er eine Markierung für jedes Bildfeld (z. B. eine 8 × 8-Region). Später, wenn auf dieses Bildfeld zum ersten Mal zugegriffen wird, kann das Lesen der Pixel in diesem Block vermieden werden, und statt dessen wird ein "gelöschter Wert" aus einem schnellen Primärspeicher gelesen, da die Markierung gesetzt ist. Wenn das Bildfeld zum ersten Mal geschrieben wird, so wird die Markierung nicht gesetzt. Auf diese Weise wird möglicherweise nur ein Bruchteil des Speichers während des Löschens berührt, wodurch Strom und Bandbreite eingespart werden können.
  • Es ist allgemein wünschenswert, dass die Bandbreitennutzung zum Hauptspeicher so gering wie möglich gehalten wird, um eine bessere Leistung zu erreichen und (Batterie-) Strom zu sparen. Um Textur- (Bild-) Daten, z-Koordinaten usw. über das Dreieck zu interpolieren, muss man möglicherweise verschiedene Parameter speichern, und der Satz Parameter für einen speziellen Pixel wird ein "Kontext" genannt. Dieser Kontext kann aktualisiert werden, wenn man sich zu einem anderen Pixel bewegt. Je mehr Kontexte verwendet werden, desto teurer kann die Lösung in Hinblick auf Gates in der Hardware werden.
  • Es ist allgemein wünschenswert, dass die Anzahl der Gates so klein wie möglich gehalten wird, um eine kosteneffiziente Lösung zu erreichen. Einige derzeit bekannte Verfahren zum Inspizieren aller Pixel in einem Bildfeld vor dem Übergang zum nächsten Bildfeld benötigen 4 oder 5 komplette Kontexte (vgl. McCormack, Joel und Robert McNamara, "Tiled Polygon Traversal Using Half-Plane Edge Functions", Workshop on Graphics Hardware, Seiten 15-22, August 2000, und auch Kelleher, Brian, "Pixel Vision Architecture", Digital Systems Research Center, Nr. 1998-013, Oktober 1998). Das könnte für eine mobile Plattform zu teuer werden. Es ist des Weiteren zu beachten, dass es möglich ist, die z-max-Techniken zu verwenden, aber ein mögliches Problem mit diesen Techniken ist, dass es aufwändig sein kann, den z-max zu aktualisieren, nachdem ein Dreieck dargestellt wurde, weil alle z-Werte in dem gesamten Bildfeld gelesen werden müssen, bevor z-max aktualisiert werden kann. Derzeitige Lösungen, die z-max verwenden, lösen dieses Problem durch Lesen des gesamten Blocks von z-Werten. Dies ist möglich, weil sie in der Regel eine viel größere Bandbreite zum Hauptspeicher haben als eine mobile Plattform, so dass sie sich diese Lösungsform leisten können.
  • Allgemein hat es bisher nicht viele Veröffentlichungen zu kostengünstigen Architekturen gegeben, wo das gesamte System beschrieben wird. Zwei bemerkenswerte Ausnahmen sind Neon (beschrieben in McCormack, Joel und Robert McNamara, "Tiled Polygon Traversal Using Half-Plane Edge Functions", Workshop on Graphics Hardware, Seiten 15-22, August 2000), und die PixelVision-Architektur (beschrieben in Kelleher, Brian, "Pixel Vision Architecture", Digital Systems Research Center, Nr. 1998-013, Oktober 1998). Imagination Technologies hat ein System namens MBX, und diese Architektur ist Bildfeldbasiert, und darum brauchen der z-Puffer, der Hintergrundpuffer und der Matrizenpuffer nur von der Größe eines Bildfeldes zu sein, z. B. 32 × 16 Pixel. Dieser Speicher ist oft als ein schneller Primärspeicher implementiert. Zu Beginn muss ein einzelner Durchlauf die gesamte Geometrie in Bildfelder sortieren, und dies erfordert Speicher und auch Speicherbandbreite. Wenn dieses Sortieren beendet ist, so wird die Geometrie in jedem Bildfeld rasterisiert. Während der Rasterisierung wird zuerst die Sichtbarkeit aufgelöst, und dann werden Texturierung und Schattierung nur an sichtbaren Fragmenten vorgenommen. Dies nennt man verzögerte Schattierung. Damit die Rasterisierung von Bildfeldern parallel zur Bildfeldsortierung ablaufen kann, werden zwei Puffer je Bildfeld benötigt. Es gibt nicht viele Informationen über die MBX-Architektur, und darum ist nicht klar, was die Nutzeffekte wirklich sind, wenn man einmal von der Vermeidung von Speicher für Puffer absieht. Ist liegt auf der Hand, dass diese Architektur Strom spart. Aber bis jetzt ist nirgendwo dokumentiert, wie viel.
  • Für die Rasterisierung von Polygonen mit Subpixel-Präzision kann man einen modifizierten Bresenham-Algorithmus verwenden, wie in Lathrop, O., Kirk, D. und Voorhies, "Accurate rendering by subpixel addressing", IEEE Computer Graphics and Applications 10, 5 (September 1990), Seiten 45-53, beschrieben. Eine oft gebrauchte Alternative ist die Verwendung von Kantenfunktionen, wie in Pineda, J., "A parallel algorithm for polygon rasterization", Tagungsbericht der SIGGRAPH 1988, ACM, Seiten 17-20 (1988), beschrieben, wo die Region innerhalb eines Dreiecks als der logische Schnittpunkt der positiven Halbräume der Dreieckskanten beschrieben ist. Dann können unterschiedliche Strategien verwendet werden, um die Pixel innerhalb des Dreiecks zu finden. Dies nennt man "Durchquerung". Je nachdem, wie effizient diese Strategien sind, wird eine unterschiedliche Anzahl von Kontexten (Interpolationsparameter usw.) während der Durchquerung benötigt. Jeder Kontext ist normalerweise im Hinblick auf die Gates sehr aufwändig.
  • 1 zeigt die Durchquerung eines Dreiecks gemäß dem Pinedaschen Zickzackdurchquerungsschema. Die hellgrau oder dunkelgrau hinterlegten Pixel sind Pixel, die von dem Durchquerungsschema berührt werden. Die dunkelgrau hinterlegten Pixel sind diejenigen, die der Durchquerungsalgorithmus als innerhalb des Dreiecks befindlich ermittelt. Der Weg, den der Zickzackdurchquerungsalgorithmus nimmt, ist als Pfeillinie dargestellt. Das Dreieck wird im Grunde von rechts nach links auf der ersten Abtastlinie durchquert, bis wir das Dreieck verlassen haben. Dann bewegen wir uns einen Schritt nach oben. Wenn wir uns dann innerhalb des Dreiecks befinden, so müssen wir uns weiter in derselben Richtung bewegen, bis wir das Dreieck wieder verlassen haben. Man nennt dies "Backtracking" – den gleichen Weg zurückgehen. Wenn wir uns außerhalb des Dreiecks befinden, so wird die Durchquerungsrichtung umgekehrt, und wir beginnen mit dem Rasterisieren der augenblicklichen Abtastlinie, diesmal von links nach rechts. wenn wir das Dreieck verlassen, so bewegen wir uns wieder einen Schritt nach oben, und so geht es immer weiter.
  • Ein Beispiel ist in 1 gezeigt. Auf der untersten Abtastlinie befindet sich ein einzelner Pixel, aber der nächste links daneben befindet sich außerhalb des Dreiecks. Das bedeutet, dass wir uns einen Schritt nach oben bewegen müssen. Nach diesem Schritt befinden wir und innerhalb des Dreiecks, und wir müssen den Weg zurückgehen, d. h. uns weiter nach links bewegen, bis wir uns außerhalb des Dreiecks befinden. Nach einem Pixel befinden wir uns außerhalb des Dreiecks, und wir können die Durchquerungsrichtung umkehren (von recht nach links zu links nach rechts) und das Rasterisieren der zweiten Abtastlinie beginnen. Wir finden zwei Pixel, die innerhalb des Dreiecks liegen müssten, und danach befinden wir uns außerhalb des Dreiecks und müssen einen Schritt nach oben gehen. Diesmal befinden wir uns bereits außerhalb des Dreiecks, und wir brauchen nicht den gleichen Weg zurückzugehen. Somit können wir die Durchquerungsrichtung umkehren und das Rasterisieren der dritten Abtastlinie beginnen, und so geht es immer weiter.
  • Jedes Mal, wenn wir auf einen Pixel treffen, der als innerhalb des Dreiecks befindlich festgestellt wird, müssen wir herausfinden, ob wir ihn zeichnen müssen oder nicht. Deshalb berechnen wir den z-Wert des Dreiecks an jenem Punkt, der hier z-tri (x, y) genannt wird, wobei (x, y) die Koordinaten des Punktes sind. Dann holen wir den z-Wert aus dem z-Puffer für diesen Pixel, der als z-buf (x, y) bezeichnet wird. Wenn z-tri (x, y) ≥ z-buf (x, y), so geschieht nichts. Wenn jedoch z-tri (x, y) < z-buf (x, y), dann müssen wir den Pixel zeichnen und auch den z-Puffer mit dem z-tri (x, y)-Wert aktualisieren. Im Pseudocode kann das folgendermaßen aussehen:
    Figure 00090001
  • Es ist zu beachten dass die if-Anweisung auf einen beliebigen Tiefentest geändert werden kann, wenn (depthtest (z-tri (x, y), z-buf (x, y)). Um den Grad der Kohärenzausnutzung zu erhöhen, und für einfache Überdeckungsaussortierungsalgorithmen, durchquert Grafikhardware oft die Pixel, die ein Dreieck in einer Bildfeldweise bedeckt (siehe Kelleher, Brian, "Pixel Vision architecture", Digital Systems Research Center, Nr. 1998-013, Oktober 1998; McCormack, Joel und Robert McNamara, "Tiled Polygon Traversal Using Half-Plane Edge Functions", Workshop on Graphics Hardware, Seiten 15-22, August 2000; US-Patent Nr. 6,421,764 an Morein). Das bedeutet, dass alle Pixel innerhalb eines Bildfeldes, beispielsweise in einer 8 × 8-Region, inspiziert werden, bevor zu einem anderen Bildfeld weitergegangen wird. Dafür werden unterschiedliche Durchquerungsstrategien benötigt, und diese vergrößern den Aufwand hinsichtlich der Anzahl von Kontexten, die gespeichert werden müssen. Zum Beispiel beschreiben McCormack und McNamara einen Algorithmus für eine in Bildfelder unterteilte Durchquerung, der einen Kontext mehr benötigt als die entsprechende nicht in Bildfelder unterteilte Durchquerung. Insgesamt benötigen sie vier Kontexte für die in Bildfelder unterteilte Version.
  • Der hierarchische z-Puffer-Algorithmus verwendet eine z-Pyramide, wo jeder Pixel in jeder Ebene in der Pyramide das Maximum der z-Werte seiner vier Ableger speichert (in der Ebene darunter), wie bei Greene, N., Kass, M, und Miller, G., "Hierarchical z-buffer visibility", Tagungsbericht der SIGGRAPH 1993, ACM, Seiten 231-238 (1993); US-Patent Nr. 5,600,763 und US-Patent Nr. 5,579,455, beschrieben. Deshalb wird an der Spitze der Pyramide das Maximum aller z-Werte über dem gesamten Bildschirm gespeichert. Diese Pyramide dient der Durchführung der Überdeckungsaussortierung. wenn eine geometrische Gruppe wiedergegeben wird, so wird das Randvolumen der Gruppe abtastkonvertiert und anhand entsprechender Ebenen im z-Puffer getestet, um zu ermitteln, ob die Gruppe sichtbar ist. Dieser Algorithmus ist überaus effizient, wenn er in Software implementiert ist, aber es gibt immer noch keine einhundertprozentige Hardware-Implementierung. Serienproduzierte Grafik-Hardware arbeitet oft mit einer einfachen Form der Überdeckungsaussortierung. Morein, S., "ATI radeon Hyperz technology", Workshop on Graphics Hardware, Tagungsbericht Hot3D, ACM SIGGRAPH/Eurographics. Morein (2000) beschreibt eine Technik, wo jedes Bildfeld das Maximum, zmax, der z-Werte innerhalb eines Bildfeldes speichert, das beispielsweise 8 × 8 Pixel betragen kann. Während der Durchquerung eines Dreiecks wird ein Test ausgeführt, wenn ein neues Bildfeld inspiziert wird, der bestimmt, ob der "kleinste" z-Wert des Dreiecks größer ist als das entsprechende Bildfeld. Wenn ja, so wird dieses Bildfeld übersprungen, und andernfalls wird dieses Bildfeld wie gewöhnlich dargestellt. Es ist zu beachten, dass zum Aktualisieren von zmax alle z-Werte des Bildfeldes gelesen werden müssen, was aufwändig sein kann. Weitere Bildfeld- oder Block-basierte Aussortierungstechniken sind im US-Patent Nr. 6,037,946 an Takeda und in der europäischen Patentanmeldung Nr. EP 1.107.177 beschrieben.
  • KURZDARSTELLUNG
  • Gemäß einigen Ausführungsformen der vorliegenden Erfindung werden mehrere Bildfeldzeilen in einem Grafikanzeigefeld, das mehrere Pixelzeilen umfasst, definiert, wobei jedes Bildfeld Pixel aus wenigstens zwei Pixelzeilen enthält. Es werden Überdeckungsmarkierungen für jeweilige Bildfelder einer Bildfeldzeile für eine Grafik-Grundform gesetzt (beispielsweise bewertet, um eine Nichtüberdeckung, eine mögliche Überdeckung oder einen sonstigen Überdeckungsstatus anzuzeigen), je nachdem, ob jeweilige repräsentative Tiefenwerte für die Bildfelder der Bildfeldzeile ein Überdeckungskriterium erfüllen. Pixel in Pixelzeilen, die der Bildfeldzeile entsprechen, werden für die Grafik-Grundform zeilenweise in Reaktion auf die Überdeckungsmarkierungen verarbeitet. Die Verarbeitung kann die Verarbeitung eines Abschnitts der Pixel in einem ersten Bildfeld der Bildfeldzeile in Reaktion auf die Überdeckungsmarkierungen und dann die Verarbeitung von Pixeln in einem zweiten Bildfeld der Bildfeldzeile in Reaktion auf die Überdeckungsmarkierungen vor der Verarbeitung weiterer Pixel in dem ersten Bildfeld in Reaktion auf die Überdeckungsmarkierungen beinhalten. Die Verarbeitung kann die Verarbeitung von Pixelzeilen in der Bildfeldzeile unter Verwendung eines transversalen Zickzack-Algorithmus beinhalten.
  • In weiteren Ausführungsformen der Erfindung werden die Überdeckungsmarkierungen in einem Bildfeldüberdeckungsinformations-Cachespeicher gespeichert, der dafür konfiguriert ist, jeweilige Überdeckungsmarkierungen für jeweilige Bildfelder einer Bildfeldzeile und jeweilige Überdeckungsschwellentiefenwerte für die jeweiligen Bildfelder der Bildfeldzeile zu speichern. Das Setzen von Überdeckungsmarkierungen umfasst das Bestimmen eines maximalen Tiefenwertes für die Grafik-Grundform für ein Bildfeld, das Vergleichen des maximalen Tiefenwertes mit dem im Cache gespeicherten Überdeckungsschwellentiefenwert für das Bildfeld in dem Bildfeldüberdeckungsinformations-Cachespeicher und das Setzen der Überdeckungsmarkierung für das Bildfeld in Reaktion auf den Vergleich.
  • Gemäß weiteren Ausführungsformen ist ein Tiefenpuffer dafür konfiguriert, jeweilige Überdeckungsschwellentiefenwerte für jeweilige Pixel des Grafikanzeigefeldes zu speichern. Das Setzen von Überdeckungsmarkierungen umfasst das Setzen einer Überdeckungsmarkierung für ein Bildfeld, um Nichtüberdeckung anzuzeigen, und die Verarbeitung von Pixeln umfasst das Erkennen, dass das Bildfeld eine Überdeckungsmarkierung hat, die eine Nichtüberdeckung anzeigt, und in Reaktion darauf die Verarbeitung eines Pixels für die Grafik-Grundform in dem Bildfeld ohne Abrufen eines Überdeckungsschwellentiefenwertes für den Pixel aus dem Tiefenpuffer.
  • Das Verfahren kann des Weiteren umfassen: Bestimmen eines Tiefenwertes für die Grafik-Grundform für den Pixel, Vergleichen des bestimmten Tiefenwertes für die Grafik-Grundform für den Pixel mit dem Überdeckungsschwellentiefenwert für das Bildfeld in dem Bildfeldüberdeckungsinformations-Cachespeicher und Aktualisieren des Überdeckungsschwellentiefenwertes für das Bildfeld in dem Bildfeldüberdeckungsinformationsschwellen-Cachespeicher auf den bestimmten Tiefenwert für die Grafik-Grundform für den Pixel in Reaktion auf den Vergleich.
  • In weiteren Ausführungsformen umfasst das Setzen von Überdeckungsmarkierungen das Setzen einer Überdeckungsmarkierung für ein Bildfeld, um Nichtüberdeckung anzuzeigen, und der Verarbeitung von Pixeln geht das Festlegen eines Gesamtbildfeldüberdeckungsinformationsspeichers voraus, der dafür konfiguriert ist, jeweilige Überdeckungsschwellentiefenwerte für alle Bildfeldzeilen zu speichern, und Laden des Bildfeldüberdeckungsinformations-Cachespeichers mit Überdeckungsschwellentiefenwerten aus dem Gesamtzeitüberdeckungsinformationsspeicher. Auf das Aktualisieren des Überdeckungsschwellentiefenwertes für das Bildfeld in dem Bildfeldüberdeckungsinformationsschwellen-Cachespeicher folgt das Aktualisieren der Schwellenüberdeckungstiefenwerte in dem Gesamtbildfeldüberdeckungsinformations-Cachespeicher aus dem Bildfeldüberdeckungsinformations-Cachespeicher.
  • In weiteren Ausführungsformen der vorliegenden Erfindung werden Überdeckungsmarkierungen in einem Bildfeldüberdeckungsinformations-Cachespeicher gespeichert, der dafür konfiguriert ist, jeweilige Überdeckungsmarkierungen für jeweilige Bildfelder einer Bildfeldzeile, jeweilige Überdeckungsschwellentiefenwerte für die jeweiligen Bildfelder der Bildfeldzeile und jeweilige Statusmarkierungen für jeweilige Bildfelder der Bildfeldzeile zu speichern. Eine erste Pixelzeile irgendwo in der Bildfeldzeile wird in Reaktion auf den Bildfeldüberdeckungsinformations-Cachespeicher verarbeitet, wobei die Verarbeitung der ersten Pixelzeile das Setzen von Überdeckungs- und Statusmarkierungen für wenigstens ein Bildfeld in der ersten Bildfeldzeile umfasst, um anzuzeigen, dass der Überdeckungsstatus wenigstens eines Bildfeldes bestimmt wurde. Es wird dann bestimmt, ob eine nächste Pixelzeile in der ersten Bildfeldzeile ist. Wenn ja, wird die nächste Pixelzeile unter Verwendung von Informationen in dem Bildfeldüberdeckungs-Cachespeicher, die aus der ersten Pixelzeile gewonnen wurden, verarbeitet. Wenn nicht, werden die Überdeckungs- und Statusmarkierungsinformationen in dem Bildfeldüberdeckungsinformations-Cachespeicher gelöscht, und die Überdeckungsschwellentiefenwerte in dem Bildfeldüberdeckungsinformations-Cachespeicher werden aktualisiert, indem entsprechende Überdeckungsschwellenwerte aus dem Bildfeldüberdeckungsinformations-Cachespeicher in den Gesamtbildfeldüberdeckungsinformationsspeicher geschrieben werden und dann Überdeckungsschwellenwerte aus dem Gesamtbildfeldüberdeckungsinformationsspeicher in den Bildfeldüberdeckungsinformations-Cachespeicher, der der nächsten Bildfeldzeile entspricht, gelesen werden. Die nächste Pixelzeile wird dann unter Verwendung des aktualisierten Bildfeldüberdeckungs-Cachespeichers verarbeitet.
  • Gemäß weiteren Aspekten der Erfindung werden mehrere Bildfeldzeilen in einem Grafikanzeigefeld definiert, wobei jedes der Bildfelder mehrere der Pixel umfasst. Es wird eine Überdeckungsmarkierung für ein Bildfeld gesetzt, um eine Nichtüberdeckung für eine Grafik-Grundform in dem Bildfeld anzuzeigen. In Reaktion auf das Erkennen, dass das Bildfeld eine Überdeckungsmarkierung hat, die eine Nichtüberdeckung anzeigt, wird ein Pixel für eine Grafik-Grundform in dem Bildfeld verarbeitet. Der Pixel kann ohne Abrufen eines Überdeckungsschwellentiefenwertes für den Pixel aus einem Tiefenpuffer verarbeitet werden, was die Häufigkeit des Lesens aus dem Tiefenpuffer verringern kann.
  • Die vorliegende Erfindung kann als Verfahren, Vorrichtung und Computerprogrammprodukte verkörpert sein. Zum Beispiel kann die vorliegende Erfindung vorteilhafterweise in einem tragbaren elektronischen Gerät verwendet werden, wie beispielsweise ein mobiles Drahtlos-Endgerät, ein Persönlicher Digitaler Assistent (PDA) oder dergleichen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 veranschaulicht eine zum Stand der Technik gehörende Zickzack-Durchquerungstechnik.
  • 2-8 veranschaulichen beispielhafte Grafikverarbeitungsoperationen und -vorrichtungen gemäß einigen Ausführungsformen der vorliegenden Erfindung.
  • 9 veranschaulicht ein beispielhaftes tragbares elektronisches Gerät mit einer Grafikvorrichtung gemäß weiteren Ausführungsformen der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG VON AUSFÜHRUNGSFORMEN
  • Die vorliegende Erfindung wird nun eingehender unter Bezug auf die begleitenden Zeichnungen beschrieben, in denen beispielhafte Ausführungsformen der vorliegenden Erfindung gezeigt sind. Diese Ausführungsformen sind so dargestellt, dass diese Anmeldung gründlich und vollständig ist. Gleiche Zahlen beziehen sich in allen Zeichnungen auf gleiche Elemente.
  • Einige beispielhafte Ausführungsformen der vorliegenden Erfindung, die unten mit Bezug auf die 2-6 beschrieben sind, können das Zickzackdurchquerungsverfahren von Pineda in dreierlei Weise erweitern:
    • 1) Der z-Puffer kann in nicht-überlappende Bildfelder von beispielsweise 8 × 8 Pixeln unterteilt werden.
    • 2) Wir können in dem System einen Speicher haben, der "Bildfeldinfo" heißt (bisher "Gesamtbildfeldüberdeckungsinformationsspeicher" genannt), wo Informationen über die Bildfelder gespeichert sind. Für jedes Bildfeld können wir eine z-min-Variable speichern, die den kleinsten Wert aller z-Werte in dem Bildfeld enthält. Wenn beispielsweise die Bildschirmauflösung 176 × 144 beträgt und die Bildfeldgröße 8 × 8 ist, so ist die Anzahl der Bildfelder 176/8 × 144/8 = 22 × 18 = 396. Deshalb muss Bildfeldinfo in der Lage sein, 396 z-min-Werte oder 396 × 2 = 792 Byte zu speichern, wenn jeder z-min-Wert 2 Byte ist. Um die Adresse für den z-min eines speziellen Bildfeldes zu erhalten, können die x- und die y-Koordinate des Pixels verwendet werden. Beispielsweise kann bei dem Beispiel oben mit 176 × 144 Pixeln und 8 × 8 Bildfeldern die Adresse als (y/8)·22 + x/8 berechnet werden, wobei '/' eine ganzzahlige Teilung darstellt.
    • 3) Wir können einen Cache-Speicher namens "Zeilenbildfeldinfo" (bisher "Bildfeldüberdeckungsinformations-Cachespeicher" genannt) haben, der Informationen über eine Bildfeldzeile speichern kann. Für jedes Bildfeld in der Zeile können drei Informationselemente gespeichert werden, und zwar: • "z-min-cachegespeichert", wobei es sich um eine im Cache gespeicherte Version des z-min handelt, der in Bildfeldinfo verfügbar ist. Genau wie in einem gewöhnlichen Cache-Speicher kann der Wert von z-min-cachegespeichert aktualisiert werden, ohne dass der z-min in Bildfeldinfo aktualisiert wird. Nach der Verarbeitung einer gesamten Bildfeldzeile muss z-min-cachegespeichert zu z-min in Bildfeldinfo zurückgeschrieben werden. • "inspiziert", wobei es sich um eine 1-Bit-Statusmarkierung handelt; und • "sichtbar" (bisher "Nichtüberdeckungsmarkierung" genannt), wobei es sich ebenfalls um eine 1-Bit-Markierung handelt.
  • Der Cache-Speicher kann groß genug sein, um Informationen über eine komplette Bildfeldzeile zu speichern. Wenn beispielsweise die Auflösung 176 × 144 beträgt und die Bildfeldgröße 8 × 8 ist, dann ist eine Bildfeldzeile gleich 176/8 = 22 Bildfelder, und Zeilenbildfeldinfo muss in der Lage sein, "z-min-cachegespeichert", "inspiziert" und "sichtbar" für 22 Bildfelder zu speichern. Wenn z-min-cachegespeichert 16 Bit beansprucht, dann kann die gesamte Zeilenbildfeldinfo unter Verwendung von nur 22 × (16 + 1 + 1) Bit 396 Bit = 49,5 Byte erzeugt werden. Damit ist Zeilenbildfeldinfo viel kleiner als Bildfeldinfo, was bedeutet, dass es in Hardware auf dem Chip, schnell und stromeffizient implementiert werden kann. Es ist des Weiteren zu beachten, dass Zeilenbildfeldinfo immer Informationen über die augenblickliche Bildfeldzeile enthält. Somit werden, wenn von der letzten Abtastlinie in einer Bildfeldzeile zu der ersten Abtastlinie der nächsten Bildfeldzeile vorangeschritten wird, Zeilenbildfeldinfo und Bildfeldinfo aktualisiert. Um die Adresse für die Daten in Zeilenbildfeldinfo zu berechnen, brauchen wir nur die x-Koordinate für den Pixel. Der Grund, warum wir die y-Koordinate vernachlässigen können, ist, dass Zeilenbildfeldinfo nur mit einer einzigen Bildfeldzeile befasst ist. Wenn beispielsweise alle z-min-cachegespeichert nacheinander gespeichert werden, so können wir die Adresse unter Verwendung von x/8 berechnen, wobei '/' eine ganzzahlige Teilung darstellt.
    • 4) Die vierte Erweiterung ist ein z-min-basierter Aussortierungsalgorithmus, der das Zickzackdurchquerungsschema, die Bildfeldstruktur, den Bildfeldinfo-Speicher und den Zeilenbildfeldinfo-Speicher, der Speicherzugriffe speichert, verwendet. Wir beschreiben nun im einzelnen, wie dieser Algorithmus funktioniert.
  • Wir beschreiben den Algorithmus in mehreren Schritten, wo jeder Schritt weiter ins Detail geht als der vorherige. Der erste Schritt zeigt, wie ein Dreieck rasterisiert wird. Der zweite Schritt zeigt, wie eine Abtastlinie rasterisiert wird; und der dritte und letzte Schritt zeigt, wie ein Pixel rasterisiert wird (in den Bildwiederholspeicher geschrieben wird). Wir beginnen jedoch mit der Beschreibung, wie die Puffer gelöscht werden, weil dies in der Regel wenigstens einmal je Bild geschieht, bevor Dreiecke rasterisiert werden.
  • Löschen
  • Bevor irgend etwas gezeichnet wird, wird allgemein der z-Pufferspeicher gelöscht, indem alle Werte auf einen zuvor festgelegten Wert gesetzt werden. Dieser zuvor festgelegte Wert ist gewöhnlich die Entfernung zu der entfernten Ebene, z_far. In unserem System löschen wir auch die Bildfeldinfo, indem wir z-far in alle z-min-Variablen einsetzen. Wir löschen auch den Zeilenbildfeldinfo-Speicher. Dies geschieht durch Setzen der Markierung "inspiziert" auf "falsch" für alle Bildfelder in Zeilenbildfeldinfo. Es ist zu beachten, dass wir vorzugsweise den z-Puffer und Bildfeldinfo einmal je Bild und nicht zwischen jedem Dreieck löschen. Zeilenbildfeldinfo hingegen wird jedes Mal gelöscht, wenn wir uns zu einer neuen Bildfeldzeile bewegen, worauf unten unter Bezug auf 2 näher eingegangen wird.
  • Rasterisierung eines Dreiecks
  • Gemäß einigen Ausführungsformen der Erfindung kann die Rasterisierung gemäß 2, "Verarbeitung eines Dreiecks", erfolgen. Zuerst wird die "Inspiziert"-Markierung in allen Bildfeldern in Zeilenbildfeldinfo auf falsch gesetzt (101). Dann verarbeiten wir eine Abtastlinie (102). wie das geschieht, wird näher unter Bezug auf 3 beschrieben. Nach der Verarbeitung der Abtastlinie überprüfen wir, ob die nächste Zeile sich in einem anderen Bildfeld als die augenblickliche Zeile befindet wird. Dies kann beispielsweise erfolgen, indem überprüft wird (103), ob: (y + 1) mod Bildfeldgröße == 0,wobei y die augenblickliche Abtastlinienzeile ist, mod der Modulo-Operator ist und Bildfeldgröße die Bildfeldgröße in der y-Richtung ist. Wenn sich die nächste Zeile in einem anderen Bildfeld befindet, dann müssen wir die Informationen in Zeilenbildfeldinfo zu Bildfeldinfo zurückschreiben (104).
  • Wir wollen auch alle "Inspiziert"-Markierungen auf falsch setzen (105). Dies kann unter Verwendung des folgenden Pseudocodes geschehen:
    Figure 00190001
  • Nach der Aktualisierung von Zeilenbildfeldinfo und Bildfeldinfo in der oben genannten Weise bewegen wir uns einen Pixel nach oben in der y-Richtung (106). Wir kehren auch die Schrittrichtung in der x-Richtung (107) um. Wir testen, ob wir das Ende des Dreiecks erreicht haben (108). Wenn ja, so halten wir an; andernfalls gehen wir zurück, um eine nächste Abtastlinie zu verarbeiten (102).
  • Verarbeitung einer Abtastlinie
  • 3 zeigt, was wir tun müssen, wenn wir zu einer neuen Abtastlinie kommen. Zuerst schreiten wir in die entgegengesetzte Richtung von "dir", bis wir uns außerhalb des Randes des Dreiecks befinden (201) (wenn wir schon außerhalb sind, so brauchen wir gar keinen Schritt zu unternehmen). Dann schreiten wir in die Richtung von "dir" (202), bis wir uns vollständig außerhalb des Dreiecks (203) auf der anderen Seite befinden. Wenn wir uns beispielsweise nach rechts bewegen, so müssen wir nach rechts gehen, bis sich das gesamte Dreieck links von der augenblicklichen Position, die wir testen, befindet. Es kann sein, dass es nicht reicht, nur ein einziges Mal voranzuschreiten, weil wir gerade an einer neuen Abtastlinie angekommen sind und uns möglicherweise einige Pixel außerhalb des Dreiecks befinden. Für jeden Schritt testen wir, ob wir uns innerhalb des Dreiecks befinden (204). Wenn nicht, so tun wir einen weiteren Schritt in die Richtung von "dir" (202). Wenn wir uns innerhalb befinden, so überprüfen wir die "Inspiziert"-Markierung für das entsprechende Bildfeld in Zeilenbildfeldinfo (205). Wenn die "Inspiziert"-Markierung falsch ist, so haben wir dieses Bildfeld noch nicht inspiziert, und wir müssen die Informationen in Zeilenbildfeldinfo für dieses Bildfeld initialisieren (206). Wie dies geschieht, wird unten unter Bezug auf 4 näher beschrieben. Wenn die "Inspiziert"-Markierung wahr ist, so sind die Informationen in Zeilenbildfeldinfo bereits auf dem neuesten Stand, und wir können sie verwenden. Wir testen also, ob die "Sichtbar"-Markierung wahr ist (207). Wenn sie es ist, so können wir einen schnellen Weg des Schreibens des Pixels verwenden, ohne den z-Puffer lesen zu müssen, im vorliegenden Text als "sichtbar schreiben" (209) bezeichnet, was weiter unten unter Bezug auf 5 näher beschrieben wird. Wenn die "Inspiziert"-Markierung falsch ist, so verwenden wir den normalen Weg des Rasterisierens des Pixels, im vorliegenden Text als "normal schreiben" (208) bezeichnet, was weiter unten unter Bezug auf 6 näher beschrieben wird. Danach gehen wir zurück und schreiten zu einem anderen Pixel (202).
  • Initialisieren von Zeilenbildfeldinfo für ein Bildfeld
  • 4 zeigt, wie wir Zeilenbildfeldinfo für ein Bildfeld initialisieren. Wir beginnen damit, dass der Wert z-min aus Bildfeldinfo in den Wert z-min-cachegespeichert in Zeilenbildfeldinfo gelesen wird (301). Danach berechnen wir einen Wert namens z-tri-max, der mindestens so groß ist wie alle möglichen z-Werte, die das Dreieck in dem augenblicklichen Bildfeld annehmen kann (302). Ein Weg, z-tri-max zu berechnen, ist, z-tri-max das Maximum der z-Werte der Eckpunkte des Dreiecks sein zu lassen. Wenn die Koordinaten für die Dreieckseckpunkte (x_A, y_A, z_A), (x_B, y_B, z_B), (x_C, y_C, z_C) sind, dann kann z-tri-max berechnet werden als z-tri-max = max(z_A, max (z_B, z_C)).
  • Ein anderer Weg ist, z-tri-max den maximalen z-wert sein zu lassen, den die Dreiecksebene in dem Bildfeld annehmen kann. Nach der Berechnung von z-tri-max überprüfen wir dann, ob z-tri-max < z-min-cachegespeichert (303). Wenn ja, so wissen wir mit Sicherheit, dass alle Pixel des Dreiecks innerhalb des Bildfeldes sichtbar (nicht durch eine zuvor dargestellte Grundform überdeckt) sind, und die "Sichtbar"-Markierung wird deshalb auf wahr gesetzt (304). Andernfalls wird "sichtbar" auf falsch gesetzt (305). Schließlich wird die "Inspiziert"-Markierung aus dem entsprechenden Bildfeld in Zeilenbildfeldinfo auf "wahr" gesetzt (306).
  • "sichtbar schreiben" – Schreiben eines Pixels, von dem man weiß, dass er zu sehen ist
  • 5 zeigt, wie wir einen Pixel schreiben müssen, wenn sowohl die "Sichtbar"- als auch die "Inspiziert"-Markierung für das Bildfeld in Zeilenbildfeldinfo, das dem Pixel entspricht, wahr sind.
  • Wenn die "Sichtbar"-Markierung wahr ist, so können wir den Pixel zeichnen, ohne den z-Puffer zu lesen. Der Pixel ist garantiert sichtbar. Da wir aber neue Pixel zeichnen, ist es möglich, dass wir einen Pixel zeichnen, der einen kleineren z-Wert hat als der augenblickliche z-min-cachegespeichert. Deshalb müssen wir z-min-cachegespeichert entsprechend aktualisieren. Das tun wir, indem wir zuerst z-tri (x, y) berechnen (401) und dann z-tri (x, y) in den z-Puffer (Tiefenpuffer) und die Farbe in den Farb-Puffer schreiben (402). Hier sind (x, y) die Koordinaten des verarbeiteten Pixels. Als nächstes überprüfen wir, ob z-tri (x, y) < z-min- cachegespeichert (403). Wenn ja, müssen wir z-min-cachegespeichert aktualisieren (404).
  • "Normal schreiben" – Wenn "inspiziert" falsch ist
  • Wenn die "Inspiziert"-Markierung wahr ist, aber die "Sichtbar"-Markierung falsch ist, so müssen wir den z-Puffer lesen, um zu wissen, ob wir die Farbe setzen müssen. Wir müssen auch z-min-cachegespeichert aktualisieren, falls wir zufällig einen z-Wert in den z-Puffer schreiben, der kleiner ist als z-min-cachegespeichert. Dies geschieht, wie in 6 gezeigt. Zuerst lesen wir z-buf aus dem z-Puffer (501). Dann berechnen wir z-tri (x, y) (502). Als nächstes überprüfen wir, ob z-tri (x, y) < z-buf (x, y) (503). Wenn nicht, so ist der Pixel nicht sichtbar, und wir halten an. Andernfalls schreiben wir z-tri (x, y) in den z-Puffer und schreiben die Farbe in den Farb-Puffer (504). Wir überprüfen auch, ob z-tri (x, y) < z-min-cachegespeichert (505). Wenn das der Fall ist, so müssen wir z-min-cachegespeichert mit z-tri (x, y) aktualisieren (506). Andernfalls sind wir fertig und können anhalten.
  • Weitere beispielhafte Ausführungsformen
  • Verallgemeinerte beispielhafte Grafikverarbeitungsoperationen gemäß einigen weiteren Aspekten der vorliegenden Erfindung sind in 7 veranschaulicht. Bildfeldzeilen sind in einem Grafikanzeigefeld definiert, wobei die Bildfelder mehrere Pixelzeilen enthalten (710).
  • Für eine Grafik-Grundform werden je nachdem, ob repräsentative Tiefenwerte ein Überdeckungskriterium erfüllen, Überdeckungsmarkierungen für Bildfelder in einer Bildfeldzeile gesetzt, d. h. sie erhalten einen Wert, um eine Nichtüberdeckung oder mögliche Überdeckung anzuzeigen, wie oben beschrieben (720). Zum Beispiel kann eine Überdeckungsmarkierung eine "Sichtbarkeits"-Markierung eines Zeilenbildfeldinfo-Cachespeichers sein, wie oben beschrieben. Die Markierung kann auf der Grundlage eines Vergleichs beispielsweise von z-max-Werten für eine Grundform (z. B. ein Dreieck) und einem im Cache gespeicherten Überdeckungsschwellen-z-Wert gesetzt werden, wie oben beschrieben. Pixel in der Bildfeldzeile werden zeilenweise, beispielsweise unter Verwendung eines transversalen Zickzack-Algorithmus', wie oben beschrieben, in Reaktion auf die Überdeckungsmarkierungen verarbeitet (730). Es versteht sich, dass nicht alle Überdeckungsmarkierungen und/oder Tiefenwerte für die Bildfeldzeile gesetzt werden müssen, bevor ein Pixel in der Zeile verarbeitet (z. B. dargestellt) wird, da es oft der Fall sein wird, dass Überdeckungsmarkierungen und/oder Tiefenwerte aktualisiert werden können, nachdem ein oder mehrere Pixel in der Zeile verarbeitet wurden, wie durch die Schleife von Block 720 zurück zu Block 730 angedeutet. Wie oben beschrieben, kann die zeilenweise Verarbeitung zu einer teilweisen Inspizierung einiger Bildfelder führen, wenn eine Abtastlinie verarbeitet wird, und zu einer erneuten Inspizierung einiger oder aller dieser Bildfelder, wenn anschließend weitere Abtastlinien verarbeitet werden, was allgemein von der Geometrie der Grundform abhängt.
  • 8 veranschaulicht weitere verallgemeinerte beispielhafte Operationen gemäß den weiteren Aspekten der vorliegenden Erfindung. Mehrere Bildfelder werden in einem Grafikanzeigefeld definiert (810). Eine Überdeckungsmarkierung, beispielsweise eine "Sichtbarkeits"-Markierung in einem Zeilenbildfeldinfo-Cachespeicher, wird gesetzt, um anzuzeigen, dass eine Grafik-Grundform in einem Bildfeld nicht überdeckt wird (820). Anschließend, beispielsweise während der Verarbeitung eines Pixels in einer Abtastliniendurchquerung, wird erkannt, dass das Bildfeld, in dem sich ein Pixel befindet, eine Überdeckungsmarkierung hat, die eine Nichtüberdeckung anzeigt (830). Der Pixel wird dann in Reaktion auf das Erkennen des Markierungsstatus' verarbeitet (840). Zum Beispiel können, wie in den obigen Ausführungsformen besprochen, wenn die Überdeckungsmarkierung eine Nichtüberdeckung anzeigt, der Farbwert und der z-Wert für den Pixel einfach in den Farb-Puffer bzw. in den z-Puffer geschrieben werden, ohne den z-Puffer-wert für den Pixel abrufen zu müssen. Wie oben erläutert, kann dies zu einer Verringerung der Bandbreite beanspruchenden Lesevorgänge aus dem z-Puffer führen (die in einem langsameren, außerhalb des Chips befindlichen Speicher gespeichert sein können), wenn ein Bild verarbeitet wird.
  • 9 veranschaulicht eine beispielhafte Vorrichtung 910 gemäß weiteren Ausführungsformen der vorliegenden Erfindung, in der Grafikverarbeitungsoperationen, wie beispielsweise die Operationen, die im vorliegenden Text unter Bezug auf die 2-8 beschrieben sind, ausgeführt werden können. Die Vorrichtung 910, hier als eine Implementierung in einem tragbaren elektronischen Gerät 900 (z. B. einem mobilen Drahtlos-Endgerät, einem PDA oder einem ähnlichen Gerät) gezeigt, enthält eine Anzeige 912 und einen Grafikprozessor 914, der dafür konfiguriert ist, eine oder alle Grafikverarbeitungsoperationen, die im vorliegenden Text unter Bezug auf die 2-8 beschrieben sind, zu implementieren. Der Grafikprozessor 914 kann zum Beispiel einen Mikroprozessorchip, einen Mikrosteuerungschip, einen digitalen Signalprozessor (DSP)-Chip, einen Videoprozessorchip, einen Spezialprozessor, der in einem anwendungsspezifischen integrierten Schaltkreis (ASIC) implementiert ist, und Kombinationen davon beinhalten. Der Grafikprozessor 914 kann auch einen Speicher enthalten, der dafür konfiguriert ist, Computercode zu speichern, und der dafür konfiguriert ist, die im vorliegenden Text beschriebenen Grafikverarbeitungsoperationen bei Ausführung in dem Grafikprozessor 914 durchzuführen. Die Speicher kann zum Beispiel einen Primärspeicher (z. B. einen Cache-Speicher) enthalten, der in einem Mikroprozessor, einem DSP, einem Videoprozessorchip oder einem ähnlichen Computerbauelement implementiert ist, das dafür verwendet werden kann, einen Bildfeldüberdeckungsinformations-Cachespeicher (z. B. "Zeilenbildfeldinfo", wie oben beschrieben) zu implementieren, sowie einen diskreten Speicher (z. B. DRAM, SRAM, Flash-Speicher und dergleichen), der dafür konfiguriert ist, mit einem solchen Computerbauelement zusammenzuwirken, und der dafür verwendet werden kann, größere Datenmengen zu speichern, wie beispielsweise z-Puffer- und Farb-Puffer-Daten für alle Pixel in einem Anzeigefeld.
  • In der vorliegenden Anmeldung sind die 2-9 Schaubilder, die eine beispielhafte Vorrichtung und beispielhafte Abläufe gemäß Ausführungsformen der vorliegenden Erfindung veranschaulichen. Es versteht sich, dass Abläufe, die in den Schaubildern dargestellt sind, und Kombinationen davon unter Verwendung eines oder mehrerer elektronischer Schaltkreise implementiert werden können, zum Beispiel in Grafikverarbeitungsschaltungen in einem tragbaren elektronischen Gerät, wie beispielsweise Drahtlostelefon, ein PDA oder dergleichen. Es versteht sich des Weiteren, dass allgemein Abläufe, die in den Schaubildern gezeigt sind, und Kombinationen davon in einem oder mehreren elektronischen Schaltkreisen implementiert sein können, wie beispielsweise in einem oder mehreren diskreten elektronischen Komponenten, einem oder mehreren integrierten Schaltkreisen (ICs), einem oder mehreren anwendungsspezifischen integrierten Schaltkreisen (ASICs) und anwendungsspezifischen Schaltkreismodulen, sowie durch Computerprogrammbefehle, die durch einen Computer oder eine sonstige Datenverarbeitungsvorrichtung, wie beispielsweise einen Mikroprozessor oder digitalen Signalprozessor (DSP), ausgeführt werden können, um eine Maschinen herzustellen, mit der die Befehle, die auf dem Computer oder der sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, elektronische Schaltkreise oder sonstige Mittel bilden, welche die vorgegebenen Abläufe implementieren. Die Computerprogrammbefehle können auch auf einem oder mehreren Computern oder sonstigen Datenverarbeitungsvorrichtungen ausgeführt werden, um die Ausführung einer Reihe von Aktionen durch den oder die Computer oder sonstige programmierbare Vorrichtungen zu veranlassen, um einen computerimplementierten Prozess zu erzeugen, der die vorgegebenen Abläufe beinhaltet.
  • Die Computerprogrammbefehle können auch in Form eines Computerprogrammprodukts in einem computerlesbaren Speichermedium verkörpert sein, d. h. als computerlesbarer Programmcode, der in dem Medium verkörpert ist, um durch ein – oder in Verbindung mit einem – Befehlsausführungssystem verwendet zu werden. Das computerlesbare Speichermedium kann beispielsweise elektronische, magnetische, optische oder sonstige Speichermedien enthalten, wie beispielsweise eine magnetische oder optische Disk oder einen aus einem integrierten Schaltkreis bestehenden Speicherbaustein. Zum Beispiel können die Computerprogrammbefehle in einem Speicher verkörpert sein, der in einem Gerät, wie beispielsweise einem Computer, enthalten ist. Dementsprechend unterstützen die Blöcke der Schaubilder der 2-9 elektronische Schaltkreise und sonstige Vorrichtungen, welche die vorgegebenen Abläufe ausführen, Handlungen zum Ausführen der vorgegebenen Abläufe sowie Computerprogrammprodukte, die dafür konfiguriert sind, die vorgegebenen Abläufe auszuführen.
  • In den Zeichnungen und der Spezifikation sind beispielhafte Ausführungsformen der Erfindung offenbart. Obgleich bestimmte Begriffe verwendet werden, werden diese lediglich in generischem und deskriptivem Sinn und nicht zum Zweck der Einschränkung gebraucht.

Claims (22)

  1. Grafikverarbeitungsverfahren, umfassend das Definieren mehrerer Bildfeldzeilen (710), die mehrere Pixelzeilen umfassen, in einem Grafikanzeigefeld, wobei jedes Bildfeld Pixel aus wenigstens zwei Pixelzeilen enthält, und gekennzeichnet durch: Setzen von Abdeckungsmarkierungen (720) für jeweilige Bildfelder einer Bildfeldzeile für eine Grafik-Grundform, je nachdem, ob jeweilige repräsentative Tiefenwerte für die Bildfelder der Bildfeldzeile ein Abdeckungskriterium erfüllen; und zeilenweises Verarbeiten von Pixeln (730) in Pixelzeilen, die der Bildfeldzeile für die Grafik-Grundform entsprechen, in Reaktion auf die Abdeckungsmarkierungen.
  2. Verfahren nach Anspruch 1, wobei das Verarbeiten von Pixeln Folgendes umfasst: Verarbeiten eines Abschnitts der Pixel in einem ersten Bildfeld der Bildfeldzeile in Reaktion auf die Abdeckungsmarkierungen; und dann eventuell das Verarbeiten von Pixeln in einem zweiten Bildfeld der Bildfeldzeile in Reaktion auf die Abdeckungsmarkierungen vor dem Verarbeiten weiterer Pixel in dem ersten Bildfeld in Reaktion auf die Abdeckungsmarkierungen.
  3. Verfahren nach Anspruch 2, wobei das Verarbeiten von Pixeln das Verarbeiten von Pixelzeilen in der Bildfeldzeile unter Verwendung eines transversalen Zickzack-Algorithmus umfasst.
  4. Verfahren nach Anspruch 2: wobei die Abdeckungsmarkierungen in einem Bildfeldabdeckungsinformations-Cachespeicher gespeichert werden, der dafür konfiguriert ist, jeweilige Abdeckungsmarkierungen für jeweilige Bildfelder einer Bildfeldzeile und jeweilige Abdeckungsschwellentiefenwerte für die jeweiligen Bildfelder der Bildfeldzeile zu speichern; und wobei das Setzen von Abdeckungsmarkierungen Folgendes umfasst: Bestimmen eines maximalen Tiefenwertes für die Grafik-Grundform für ein Bildfeld; Vergleichen des maximalen Tiefenwertes mit dem im Cache gespeicherten Abdeckungsschwellentiefenwert für das Bildfeld in dem Bildfeldabdeckungsinformations-Cachespeicher; und Setzen der Abdeckungsmarkierung für das Bildfeld in Reaktion auf den Vergleich.
  5. Verfahren nach Anspruch 4, das des Weiteren Folgendes umfasst: Festlegen eines Tiefenpuffers, der dafür konfiguriert ist, jeweilige Abdeckungsschwellentiefenwerte für jeweilige Pixel des Grafikanzeigefeldes zu speichern; und wobei das Setzen der Abdeckungsmarkierungen das Setzen einer Abdeckungsmarkierung für ein Bildfeld umfasst, um eine Nichtabdeckung anzuzeigen; und wobei das Verarbeiten von Pixeln Folgendes umfasst: Erkennen, dass das Bildfeld eine Abdeckungsmarkierung hat, die eine Nichtabdeckung anzeigt; und responsives Verarbeiten eines Pixels für die Grafik-Grundform in dem Bildfeld ohne Abrufen eines Abdeckungsschwellentiefenwertes für den Pixel aus dem Tiefenpuffer.
  6. Verfahren nach Anspruch 5, das des Weiteren das Festlegen eines Farbpuffers umfasst, der dafür konfiguriert ist, jeweilige Farbwerte für jeweilige der Pixel des Grafikanzeigefeldes zu speichern, und wobei das responsive Verarbeiten eines Pixels für die Grafik-Grundform in dem Bildfeld ohne Abrufen eines Abdeckungsschwellentiefenwertes für den Pixel aus dem Tiefenpuffer das responsive Speichern eines Farbwertes und eines Tiefenwertes für die Grafik-Grundform für den Pixel in dem Farbpuffer bzw. dem Tiefenpuffer umfasst.
  7. Verfahren nach Anspruch 6, wobei die Abdeckungsmarkierungen in einem Bildfeldabdeckungsinformations-Cachespeicher gespeichert werden, der dafür konfiguriert ist, jeweilige Abdeckungsmarkierungen für jeweilige Bildfelder einer Bildfeldzeile und jeweilige Abdeckungsschwellentiefenwerte für die jeweiligen Bildfelder der Bildfeldzeile zu speichern, und wobei das Verfahren des Weiteren Folgendes umfasst: Bestimmen eines Tiefenwertes für die Grafik-Grundform für den Pixel; Vergleichen des bestimmten Tiefenwertes für die Grafik-Grundform für den Pixel mit dem Abdeckungsschwellentiefenwert für das Bildfeld in dem Bildfeldabdeckungsinformations-Cachespeicher; und Aktualisieren des Abdeckungsschwellentiefenwertes für das Bildfeld in dem Bildfeldabdeckungsinformationsschwellen-Cachespeicher auf den bestimmten Tiefenwert für die Grafik-Grundform für den Pixel in Reaktion auf den Vergleich.
  8. Verfahren nach Anspruch 7: wobei das Setzen von Abdeckungsmarkierungen das Setzen einer Abdeckungsmarkierung für ein Bildfeld umfasst, um eine Nichtabdeckung anzuzeigen, und wobei der Verarbeitung von Pixeln Folgendes vorangeht: Festlegen eines Gesamtbildfeldabdeckungsinformationsspeichers, der dafür konfiguriert ist, jeweilige Abdeckungsschwellentiefenwerte für alle Bildfeldzeilen zu speichern; und Laden des Bildfeldabdeckungsinformations-Cachespeichers mit Abdeckungsschwellentiefenwerten aus dem Gesamtzeitabdeckungsinformationsspeicher; und wobei auf das Aktualisieren des Abdeckungsschwellentiefenwertes für das Bildfeld in dem Bildfeldabdeckungsinformationsschwellen-Cachespeicher das Aktualisieren von Schwellenabdeckungstiefenwerten in dem Gesamtbildfeldabdeckungsinformationsspeicher aus dem Bildfeldabdeckungsinformations-Cachespeicher folgt.
  9. Verfahren nach Anspruch 1, das des Weiteren Folgendes umfasst: Festlegen eines Tiefenpuffers, der dafür konfiguriert ist, jeweilige Abdeckungsschwellentiefenwerte für jeweilige Pixel des Grafikanzeigefeldes zu speichern; und wobei das Setzen von Abdeckungsmarkierungen das Setzen der Abdeckungsmarkierung für ein Bildfeld umfasst, um eine mögliche Abdeckung anzuzeigen; und wobei das Verarbeiten von Pixeln Folgendes umfasst: Erkennen, dass das Bildfeld eine Abdeckungsmarkierung hat, die eine mögliche Abdeckung anzeigt; und Vergleichen eines Tiefenwertes für die Grafik-Grundform für einen Pixel in dem Bildfeld mit einem Abdeckungsschwellentiefenwert für den Pixel in dem Tiefenpuffer in Reaktion auf das Erkennen, dass das Bildfeld eine Abdeckungsmarkierung hat, die eine mögliche Abdeckung anzeigt; Verarbeiten des Pixels in Reaktion auf den Vergleich; und Aktualisieren des Abdeckungsschwellentiefenwertes für das Bildfeld in dem Bildfeldabdeckungsinformations-Cachespeicher in Reaktion auf den geschriebenen z-Wert des Pixels.
  10. Verfahren nach Anspruch 9, das des Weiteren das Festlegen eines Farbpuffers umfasst, der dafür konfiguriert ist, jeweilige Farbwerte für jeweilige der Pixel des Grafikanzeigefeldes zu speichern, und wobei das Verarbeiten des Pixels das Speichern eines Farbwertes und eines Tiefenwertes in dem Farbpuffer bzw. dem Tiefenpuffer umfasst, wenn der Vergleich des Tiefenwertes für die Grafik-Grundform für den Pixel in dem Bildfeld mit dem Abdeckungsschwellentiefenwert für den Pixel in dem Tiefenpuffer eine Nichtabdeckung anzeigt, und das Aktualisieren des Abdeckungsschwellentiefenwertes für das Bildfeld in dem Bildfeldabdeckungsinformations-Cachespeicher in Reaktion auf den geschriebenen z-Wert des Pixels umfasst.
  11. Verfahren nach Anspruch 1, wobei die Abdeckungsmarkierungen in einem Bildfeldabdeckungsinformations-Cachespeicher gespeichert werden, der dafür konfiguriert ist, jeweilige Abdeckungsmarkierungen für jeweilige Bildfelder einer Bildfeldzeile, jeweilige Abdeckungsschwellentiefenwerte für die jeweiligen Bildfelder der Bildfeldzeile und jeweilige Statusmarkierungen für jeweilige Bildfelder der Bildfeldzeile zu speichern, und wobei die Verfahren des Weiteren Folgendes umfasst: Verarbeiten einer ersten Pixelzeile in Reaktion auf den Bildfeldabdeckungsinformations-Cachespeicher, wobei das Verarbeiten einer ersten Pixelzeile das Setzen von Abdeckungs- und Statusmarkierungen für wenigstens ein Bildfeld in der ersten Bildfeldzeile umfasst, um anzuzeigen, dass der Abdeckungsstatus des wenigstens einen Bildfeldes bestimmt wurde; Bestimmen, ob sich eine zweite Pixelzeile in der ersten Bildfeldzeile befindet; und Verarbeiten einer zweiten Pixelzeile unter Verwendung von Informationen in dem Bildfeldabdeckungs-Cachespeicher, die aus der ersten Pixelzeile erlangt wurden, wenn die zweite Pixelzeile sich in der ersten Bildfeldzeile befindet.
  12. Verfahren nach Anspruch 11, wobei dem Verarbeiten einer ersten Pixelzeile Folgendes vorangeht: Festlegen eines Gesamtbildfeldabdeckungsinformationsspeichers, der dafür konfiguriert ist, jeweilige Abdeckungsschwellentiefenwerte für alle Bildfelder in allen Bildfeldzeilen zu speichern; Setzen der Abdeckungs- und Statusmarkierungen in dem Bildfeldabdeckungsinformations-Cachespeicher auf vorgegebene Werte; und Speichern von Abdeckungsschwellentiefenwerten für die erste Bildfeldzeile aus dem Gesamtbildfeldabdeckungsinformationsspeicher in dem Bildfeldabdeckungsinformations-Cachespeicher.
  13. Verfahren nach Anspruch 1, wobei die Abdeckungsmarkierungen in einem Bildfeldabdeckungsinformations-Cachespeicher gespeichert werden, der dafür konfiguriert ist, jeweilige Abdeckungsmarkierungen für jeweilige Bildfelder einer Bildfeldzeile, jeweilige Abdeckungsschwellentiefenwerte für die jeweiligen Bildfelder der Bildfeldzeile und jeweilige Statusmarkierungen für jeweilige Bildfelder der Bildfeldzeile zu speichern, und wobei das Verfahren des Weiteren Folgendes umfasst: Festlegen eines Gesamtbildfeldabdeckungsinformationsspeichers, der dafür konfiguriert ist, jeweilige Abdeckungsschwellentiefenwerte für alle Bildfelder der Bildfeldzeilen zu speichern; Verarbeiten einer ersten Pixelzeile in Reaktion auf den Bildfeldabdeckungsinformations-Cachespeicher, wobei das Verarbeiten einer ersten Pixelzeile das Setzen von Abdeckungsmarkierungen und Statusmarkierungen für eine erste Bildfeldzeile umfasst, die Pixel in der ersten Pixelzeile hat, um anzuzeigen, dass wenigstens ein Abdeckungsstatus wenigstens eines Bildfeldes in der ersten Zeile bestimmt wurde; Bestimmen, ob sich eine zweite Pixelzeile in der ersten Bildfeldzeile befindet; und in Reaktion auf das Bestimmen, dass sich die zweite Pixelzeile in einer zweiten Bildfeldzeile befindet, Zurückschreiben der Abdeckungsschwellentiefenwerte aus dem Bildfeldabdeckungsinformations-Cachespeicher auf die Gesamtbildfeldabdeckungsinformationen in dem Bildfeldabdeckungsinformations-Cachespeicher, Laden von Abdeckungsschwellentiefenwerten in den Bildfeldabdeckungsinformations-Cachespeicher mit entsprechenden Abdeckungsschwellentiefenwerten für die zweite Bildfeldzeile aus dem Gesamtbildfeldabdeckungsinformationsspeicher, und Verarbeiten der zweiten Pixelzeile unter Verwendung des aktualisierten Bildfeldabdeckungs-Cachespeichers.
  14. Verfahren nach Anspruch 13, wobei auf das Bestimmen, ob sich eine zweite Pixelzeile in der ersten Bildfeldzeile befindet, das Aktualisieren von Abdeckungsschwellentiefenwerten für die erste Bildfeldzeile in dem Gesamtbildfeldabdeckungsinformationsspeicher mit Abdeckungsschwellentiefenwerten aus dem Bildfeldabdeckungs-Cachespeicher in Reaktion auf das Bestimmen, dass sich die zweite Pixelzeile in einer zweiten Bildfeldzeile befindet, folgt.
  15. Vorrichtung, umfassend eine Anzeige und einen Grafikprozessor, der mit der Anzeige gekoppelt ist und dafür konfiguriert ist, mehrere Bildfeldzeilen in einem Grafikanzeigefeld der Anzeige zu definieren (710), wobei jedes Bildfeld Pixel aus wenigstens zwei Pixelzeilen enthält, dadurch gekennzeichnet, dass der Grafikprozessor dafür konfiguriert ist, Abdeckungsmarkierungen für jeweilige Bildfelder einer Bildfeldzeile für eine Grafik-Grundform zu setzen (720), je nachdem, ob jeweilige repräsentative Tiefenwerte für die Bildfelder der Bildfeldzeile ein Abdeckungskriterium erfüllen, und Pixel in Pixelzeilen, die der Bildfeldzeile für die Grafik-Grundform entsprechen, zeilenweise in Reaktion auf die Abdeckungsmarkierungen zu verarbeiten (730).
  16. Vorrichtung nach Anspruch 15, wobei der Grafikprozessor dafür konfiguriert ist, einen Abschnitt der Pixel in einem ersten Bildfeld der Bildfeldzeile in Reaktion auf die Abdeckungsmarkierungen zu verarbeiten und dann Pixel in einem zweiten Bildfeld der Bildfeldzeile in Reaktion auf die Abdeckungsmarkierungen zu verarbeiten, bevor er weitere Pixel in dem ersten Bildfeld in Reaktion auf die Abdeckungsmarkierungen verarbeitet.
  17. Vorrichtung nach Anspruch 15, wobei der Grafikprozessor dafür konfiguriert ist, Pixelzeilen in der Bildfeldzeile unter Verwendung eines transversalen Zickzack-Algorithmus zu verarbeiten.
  18. Vorrichtung nach Anspruch 15, wobei die repräsentativen Tiefenwerte maximalen Tiefen der Grafik-Grundform in den Bildfeldern umfassen und wobei das Abdeckungskriterium darin besteht, ob eine maximale Tiefe für die Grafik-Grundform in dem Bildfeld geringer ist als ein zuvor festgestellter kleinster Nichtabdeckungstiefenwert für das Bildfeld.
  19. Vorrichtung nach Anspruch 15, wobei die Anzeige und der Grafikprozessor in einem tragbaren elektronischen Gerät untergebracht sind.
  20. Computerprogrammprodukt, das einen Programmcode umfasst, der in einem computerlesbaren Medium verkörpert ist, wobei der Programmcode einen Programmcode umfasst, der dafür konfiguriert ist, mehrere Bildfeldzeilen in einem Grafikanzeigefeld der Anzeige zu definieren (710), wobei jedes Bildfeld Pixel aus wenigstens zwei Pixelzeilen enthält, dadurch gekennzeichnet, dass der Programmcode des Weiteren dafür konfiguriert ist, Abdeckungsmarkierungen für jeweilige Bildfelder einer Bildfeldzeile für eine Grafik-Grundform zu setzen (720), je nachdem, ob jeweilige repräsentative Tiefenwerte für die Bildfelder der Bildfeldzeile ein Abdeckungskriterium erfüllen, und Pixel in Pixelzeilen, die der Bildfeldzeile für die Grafik-Grundform entsprechen, zeilenweise in Reaktion auf die Abdeckungsmarkierungen zu verarbeiten (730).
  21. Computerprogrammprodukt nach Anspruch 20, wobei der Programmcode des Weiteren dafür konfiguriert ist, einen Abschnitt der Pixel in einem ersten Bildfeld der Bildfeldzeile in Reaktion auf die Abdeckungsmarkierungen zu verarbeiten und dann Pixel in einem zweiten Bildfeld der Bildfeldzeile in Reaktion auf die Abdeckungsmarkierungen zu verarbeiten, bevor er weitere Pixel in dem ersten Bildfeld in Reaktion auf die Abdeckungsmarkierungen verarbeitet.
  22. Computerprogrammprodukt nach Anspruch 21, wobei der Programmcode des Weiteren dafür konfiguriert ist, Pixelzeilen in der Bildfeldzeile unter Verwendung eines transversalen Zickzack-Algorithmus zu verarbeiten.
DE60306813T 2002-12-20 2003-12-11 Grafikverarbeitugsvorrichtung, verfahren und computerprogrammprodukte mit minimaltiefenokklusions-culling und zickzack-durchquerung Expired - Lifetime DE60306813T2 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US43490002P 2002-12-20 2002-12-20
US434900P 2002-12-20
US720042 2003-11-21
US10/720,042 US7301537B2 (en) 2002-12-20 2003-11-21 Graphics processing apparatus, methods and computer program products using minimum-depth occlusion culling and zig-zag traversal
PCT/EP2003/014061 WO2004057533A2 (en) 2002-12-20 2003-12-11 Graphics processing apparatus, methods and computer program products using minimum-depth occlusion culling and zig-zag traversal

Publications (2)

Publication Number Publication Date
DE60306813D1 DE60306813D1 (de) 2006-08-24
DE60306813T2 true DE60306813T2 (de) 2006-11-23

Family

ID=32600210

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60306813T Expired - Lifetime DE60306813T2 (de) 2002-12-20 2003-12-11 Grafikverarbeitugsvorrichtung, verfahren und computerprogrammprodukte mit minimaltiefenokklusions-culling und zickzack-durchquerung

Country Status (9)

Country Link
US (2) US7301537B2 (de)
EP (1) EP1576542B1 (de)
JP (1) JP4515917B2 (de)
KR (1) KR101001795B1 (de)
AT (1) ATE333129T1 (de)
AU (1) AU2003290018A1 (de)
DE (1) DE60306813T2 (de)
ES (1) ES2264021T3 (de)
WO (1) WO2004057533A2 (de)

Families Citing this family (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7301537B2 (en) * 2002-12-20 2007-11-27 Telefonaktiebolaget Lm Ericsson (Publ) Graphics processing apparatus, methods and computer program products using minimum-depth occlusion culling and zig-zag traversal
US20050195186A1 (en) * 2004-03-02 2005-09-08 Ati Technologies Inc. Method and apparatus for object based visibility culling
US7978194B2 (en) * 2004-03-02 2011-07-12 Ati Technologies Ulc Method and apparatus for hierarchical Z buffering and stenciling
US8081182B2 (en) * 2004-03-03 2011-12-20 Qualcomm Incorporated Depth buffer for rasterization pipeline
EP1659538B1 (de) * 2004-11-19 2008-01-09 Telefonaktiebolaget LM Ericsson (publ) Verfahren und Vorrichtung zur Erzeugung dreidimensionaler Bilder
JP2006209654A (ja) * 2005-01-31 2006-08-10 Matsushita Electric Ind Co Ltd パターン付多角形描画装置
US7830388B1 (en) * 2006-02-07 2010-11-09 Vitie Inc. Methods and apparatus of sharing graphics data of multiple instances of interactive application
KR100762811B1 (ko) * 2006-07-20 2007-10-02 삼성전자주식회사 하프 플레인 에지 함수를 이용한 타일 비닝 방법 및 시스템
KR100793990B1 (ko) * 2006-09-18 2008-01-16 삼성전자주식회사 타일 기반 3차원 렌더링에서의 조기 z 테스트 방법 및시스템
WO2008091198A1 (en) 2007-01-24 2008-07-31 Swiftfoot Graphics Ab Method, display adapter and computer program product for improved graphics performance by using a replaceable culling program
US20090046098A1 (en) * 2007-08-14 2009-02-19 Stmicroelectronics S.R.L. Primitive binning method for tile-based rendering
US9384564B2 (en) * 2007-11-19 2016-07-05 Microsoft Technology Licensing, Llc Rendering of data sets comprising multiple-resolution samples
JP4568750B2 (ja) * 2007-11-30 2010-10-27 富士通株式会社 描画装置、描画プログラムおよび描画方法
CN101661741B (zh) * 2008-08-29 2012-02-22 富士通株式会社 图形光栅扫描中的三角形遍历方法和装置
US20100231586A1 (en) * 2009-03-13 2010-09-16 Zebra Imaging, Inc. Processing Graphics Primitives in an Epsilon View Volume
EP2425624A2 (de) 2009-05-01 2012-03-07 Thomson Licensing 3d-videocodierungsformate
US8611604B2 (en) * 2009-06-03 2013-12-17 Chubu University Educational Foundation Object detection device
US9390539B2 (en) * 2009-11-04 2016-07-12 Intel Corporation Performing parallel shading operations
KR20130139242A (ko) 2010-09-14 2013-12-20 톰슨 라이센싱 차폐 데이터의 압축 방법 및 장치
GB201116438D0 (en) * 2011-09-22 2011-11-02 Advanced Risc Mach Ltd Occlusion queries in graphics processing
KR101136737B1 (ko) 2011-10-07 2012-04-19 (주)넥셀 그래픽 처리방법 및 그 장치
WO2013130030A1 (en) * 2012-02-27 2013-09-06 Intel Corporation Using cost estimation to improve performance of tile rendering for image processing
US10242481B2 (en) * 2012-03-15 2019-03-26 Qualcomm Incorporated Visibility-based state updates in graphical processing units
US9183664B2 (en) 2012-05-03 2015-11-10 Apple Inc. Tiled forward shading with improved depth filtering
KR101208826B1 (ko) 2012-07-09 2012-12-06 인하대학교 산학협력단 깊이 텍스처의 등고선을 기반으로 한 실시간 다각형 앰비언트 오클루전 방법
GB2509113B (en) * 2012-12-20 2017-04-26 Imagination Tech Ltd Tessellating patches of surface data in tile based computer graphics rendering
US9183652B2 (en) 2013-05-15 2015-11-10 Intel Corporation Variable rasterization order for motion blur and depth of field
US9659393B2 (en) 2013-10-07 2017-05-23 Intel Corporation Selective rasterization
US9934604B2 (en) * 2013-12-27 2018-04-03 Intel Corporation Culling using masked depths for MSAA
US20150310660A1 (en) * 2014-04-25 2015-10-29 Sony Computer Entertainment America Llc Computer graphics with enhanced depth effect
US10268590B2 (en) * 2015-02-23 2019-04-23 Netflix, Inc. Efficient computer-implemented techniques for managing graphics memory
KR102354989B1 (ko) 2015-04-14 2022-01-24 삼성전자주식회사 경로 렌더링을 위한 타일 비닝을 수행하는 방법 및 장치.
US9922449B2 (en) 2015-06-01 2018-03-20 Intel Corporation Apparatus and method for dynamic polygon or primitive sorting for improved culling
US10037621B2 (en) 2015-06-18 2018-07-31 Intel Corporation Hierarchical quadrant based coverage testing for rasterization
US9959643B2 (en) 2015-10-29 2018-05-01 Intel Corporation Variable rasterization order for motion blur and depth of field
US10068307B2 (en) 2016-05-20 2018-09-04 Intel Corporation Command processing for graphics tile-based rendering
US20170345206A1 (en) * 2016-05-27 2017-11-30 Intel Corporation Occlusion query apparatus and method for accelerated rendering
US10453170B2 (en) 2016-09-09 2019-10-22 Intel Corporation Minimum/maximum and bitwise and/or based coarse stencil test
CN113797531A (zh) * 2021-08-30 2021-12-17 网易(杭州)网络有限公司 遮挡剔除实现方法、装置、计算机设备及存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH07210707A (ja) * 1994-01-20 1995-08-11 Sumitomo Electric Ind Ltd エッジ付き図形の描画方法及び装置
KR100277803B1 (ko) 1995-03-10 2001-01-15 가나이 쓰도무 3차원 그래픽 표시장치
JP3099940B2 (ja) * 1995-12-25 2000-10-16 日本電気株式会社 3次元グラフィックス制御装置
JPH09265549A (ja) * 1996-03-28 1997-10-07 Hitachi Ltd 画像合成システム
US5751291A (en) * 1996-07-26 1998-05-12 Hewlett-Packard Company System and method for accelerated occlusion culling
GB9716251D0 (en) * 1997-08-01 1997-10-08 Philips Electronics Nv Attribute interpolation in 3d graphics
WO1999056249A1 (en) * 1998-04-27 1999-11-04 Interactive Silicon, Inc. Graphics system and method for rendering independent 2d and 3d objects
AU5686199A (en) 1998-08-20 2000-03-14 Apple Computer, Inc. Deferred shading graphics pipeline processor
US6313839B1 (en) * 1998-10-23 2001-11-06 Hewlett-Packard Company Method and apparatus for performing Z buffer depth comparison operations
US6473082B1 (en) 1999-05-18 2002-10-29 S3 Graphics Co., Ltd. System and method for implementing a two-layer z-range buffer
JP2000331185A (ja) * 1999-05-24 2000-11-30 Sony Corp 画像処理方法、画像処理装置、及びプログラム提供媒体
US6577307B1 (en) 1999-09-20 2003-06-10 Silicon Integrated Systems Corp. Anti-aliasing for three-dimensional image without sorting polygons in depth order
US6525726B1 (en) * 1999-11-02 2003-02-25 Intel Corporation Method and apparatus for adaptive hierarchical visibility in a tiled three-dimensional graphics architecture
US6498605B2 (en) * 1999-11-18 2002-12-24 Intel Corporation Pixel span depth buffer
US7301537B2 (en) * 2002-12-20 2007-11-27 Telefonaktiebolaget Lm Ericsson (Publ) Graphics processing apparatus, methods and computer program products using minimum-depth occlusion culling and zig-zag traversal

Also Published As

Publication number Publication date
EP1576542A2 (de) 2005-09-21
US7961185B2 (en) 2011-06-14
JP2006510973A (ja) 2006-03-30
US20040119709A1 (en) 2004-06-24
EP1576542B1 (de) 2006-07-12
ATE333129T1 (de) 2006-08-15
DE60306813D1 (de) 2006-08-24
US7301537B2 (en) 2007-11-27
JP4515917B2 (ja) 2010-08-04
AU2003290018A1 (en) 2004-07-14
AU2003290018A8 (en) 2004-07-14
US20090058852A1 (en) 2009-03-05
ES2264021T3 (es) 2006-12-16
KR20050085760A (ko) 2005-08-29
WO2004057533A3 (en) 2004-09-16
WO2004057533A2 (en) 2004-07-08
KR101001795B1 (ko) 2010-12-15

Similar Documents

Publication Publication Date Title
DE60306813T2 (de) Grafikverarbeitugsvorrichtung, verfahren und computerprogrammprodukte mit minimaltiefenokklusions-culling und zickzack-durchquerung
DE102019103059B4 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE69836924T2 (de) Block- und bandorientierter durchlauf in dreidimensionaler dreieckswiedergabe
DE112007002991B4 (de) Computergraphikschattenvolumen unter Verwendung von hierarchischem Okklusions-Culling
DE60107130T2 (de) Sichtbarkeitsprojektion und Bildrekonstruktion für Oberflächenelemente
DE69908966T3 (de) Schattierung von 3-dimensionalen rechner-erzeugten bildern
DE69233717T2 (de) Verbesserungen in sichtbarkeit-berechnungen fuer 3d-rechner
DE19709220B4 (de) System und Verfahren für eine beschleunigte Verdeckungsauslese
DE69636599T2 (de) Verfahren und system zur wiedergabe von grafischen objekten durch teilung in bildstücke und zusammensetzen von bildlagen zu einem wiedergabebild
EP1175663B1 (de) Verfahren zur rasterisierung eines graphikgrundelements
DE60310720T2 (de) Verfahren und vorrichtung zur kodierung von texturinformation
DE102019103178A1 (de) Verfahren für vorankommen und programmierbare timeouts von baumtraversierungsmechanismen in hardware
DE102021205824A1 (de) Techniken zur traversierung von bei raytracing verwendeten daten
DE102021205758A1 (de) Hardware-beschleunigung für strahlverfolgung mit transformationen in alternativen weltraum
DE102019118838A1 (de) Virtuelle photogrammetrie
DE112005002076T5 (de) Unterteilung von Geometriebildern in Grafikhardware
DE102021205765A1 (de) Hardwarebasierte techniken der strahlverfolgung zur effizienten darstellung und verarbeitung eines beliebigen hüllkörpers
DE102014004841A1 (de) Grafik auf Kachelbasis
DE102021114847A1 (de) Verbesserte techniken zum traversieren von strahlverfolgungs-beschleunigungsstrukturen
DE102010048486A1 (de) Bildverarbeitungstechniken
EP0984397A2 (de) Verfahren und Vorrichtung zum Eliminieren unerwünschter Stufungen an Kanten bei Bilddarstellungen im Zeilenraster
DE102021206234A1 (de) Frühzeitige freigabe von ressourcen in strahlverfolgungs-hardware
DE102020108358A1 (de) Wiedergeben von szenen mit einer kombination aus strahlverfolgung und rasterung
DE102020103893A1 (de) Techniken für effizienten speicherzugriff und zur vermeidung unnötiger berechnungen
DE602005003575T2 (de) Vorwärts-texturabbildungs-3d-graphiksystem

Legal Events

Date Code Title Description
8364 No opposition during term of opposition