DE60025957T2 - Verfahren und vorrichtung zur gewährleistung der abwärts-kompatibilität in einem bucket-darstellungssystem - Google Patents

Verfahren und vorrichtung zur gewährleistung der abwärts-kompatibilität in einem bucket-darstellungssystem Download PDF

Info

Publication number
DE60025957T2
DE60025957T2 DE60025957T DE60025957T DE60025957T2 DE 60025957 T2 DE60025957 T2 DE 60025957T2 DE 60025957 T DE60025957 T DE 60025957T DE 60025957 T DE60025957 T DE 60025957T DE 60025957 T2 DE60025957 T2 DE 60025957T2
Authority
DE
Germany
Prior art keywords
rendering
levels
switching state
graphics system
renderer
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
DE60025957T
Other languages
English (en)
Other versions
DE60025957D1 (de
Inventor
Emile Hsien-cheng Gold River HSIEH
Vladimir M. Folsom PENTKOVSKI
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
Application granted granted Critical
Publication of DE60025957D1 publication Critical patent/DE60025957D1/de
Publication of DE60025957T2 publication Critical patent/DE60025957T2/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
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures

Description

  • GEBIET DER TECHNIK
  • Die vorliegende Erfindung betrifft Bildverarbeitungstechnologien im Allgemeinen und im Besonderen Rendering-Technologien in einem Grafiksystem.
  • STAND DER TECHNIK
  • Im Zuge der andauernd schnellen Weiterentwicklung der Computertechnologien verlangen Computeranwender verbesserte Bildqualitäten, sowohl in Bezug auf die Bildverarbeitungsgeschwindigkeit als auch auf die Bildwiedergabetreue. Die Kosten für die Erzeugung wahrhaft interaktiver und realistischer visueller Effekte bleiben weiterhin übermäßig hoch. Folglich werden verschiedene Bildverarbeitungstechniken und Designs bzw. Bauweisen entwickelt, um zu versuchen, dieser Anforderung der Benutzer nachzukommen und den gewünschten niedrigen Kosten Rechnung zu tragen.
  • Im Besonderen konzentrierten sich die Anstrengungen auf eine verbesserte Rendering-Technik, wobei versucht wird, kleinere Arbeitsspeicher zu verwenden als bei einer traditionellen Rendering-Technik. Eine derartige verbesserte Technik ist das Bucket-Rendering. Bei einer traditionellen Rendering-Technik ist ein wahlfreier Zugriff auf Frame-Pufferdaten und/oder einen Tiefenpuffer für einen ganzen Bildschirm erforderlich. Ein Frame-Puffer bezieht sich auf einen Speicherabschnitt, der zum Speichern des vollständigen Bitmap-Bilds reserviert ist, und ein Tiefenpuffer (in der Literatur teilweise auch als Z-Puffer bezeichnet) bezieht sich auf einen Speicherabschnitt, der zum Speichern von Tiefeninformationen des Bitmap-Bilds reserviert ist. Zur Verarbeitung der Informationsmenge in einem derartigen Bitmap-Bild und um weiterhin einen gewissen interaktiven visuellen Effekt zu erzielen, verwendet ein Grafiksystem, das die traditionelle Rendering-Technik einsetzt, häufig ein gleichzeitig großes wie schnelles Speicherteilsystem als Frame- und Tiefenpuffer. Zu einigen Beispielen für schnelle Speicher zählen unter anderem, ohne darauf beschränkt zu sein, Video Random Access Memory (VRAM) und Dynamical Random Access Memory (DRAM). Noch bedeutender ist es, dass die in einem derartigen schnellen Speicherteilsystem gespeicherten Daten als extern sichtbar gelten, da die in Verbindung mit dem traditionellen Grafiksystem arbeitenden Grafikanwendungen direkt nach Belieben auf die Daten zugreifen können.
  • Andererseits erfordert das Bucket-Rendering-Verfahren den wahlfreien bzw. zufälligen Zugriff auf nur eine Kachel oder einen Abschnitt des ganzen Bildschirms, wie dazu das U.S. Patent US-A-5.999.189. Das erforderliche Speicherteilsystem zum Speichern von Informationen aus dieser einzelnen Kachel ist mit hoher Wahrscheinlichkeit kleiner, schneller und preisgünstiger als das vorstehend genannte Speicherteilsystem des traditionellen Grafiksystems. In einem Ausführungsbeispiel des Bucket-Rendering-Grafiksystems werden die Daten somit nicht in extern sichtbaren Frame- und/oder Tiefenpuffern gespeichert, sondern in dem System selbst, wobei bei diesem System das vorstehend beschriebene kleinere Speicherteilsystem zum Einsatz kommt.
  • Obgleich ein derartiges Bucket-Rendering-Grafiksystem im Vergleich zu dem traditionellen Grafiksystem eine günstigere Leistung zu niedrigeren Kosten vorstehen kann, weist das Bucket-Rendering-Grafiksystem eine begrenzte Unterstützung bestimmter bestehender Grafikanwendungen und Application Programming Interfaces (APIs) bzw. Programmierschnittstellen auf, die auf den gespeicherten Daten basieren, die extern sichtbar sind. In der vorliegenden Offenbarung betrifft eine „bereits bestehende Grafikanwendung" eine Grafikanwendung, die so gestaltet ist, dass sie in jedem bereits vor dem beschriebenen Bucket-Rendering-Grafiksystem bestehenden Grafiksystem funktionsfähig ist und korrekt ausgeführt werden kann. Das folgende Beispiel veranschaulicht ferner das Problem der Inkompatibilität. Im Besonderen kann eine bereits bestehende Grafikanwendung eine Anforderung zur Verriegelung des Frame-Puffers und/oder des Tiefenpuffers über eine API ausgeben, die so gestaltet ist, dass sie den direkten Zugriff auf den Frame-Puffer und/oder den Tiefenpuffer annimmt. Da das beschriebene Bucket-Rendering-Grafiksystem keine extern sichtbaren Frame-Puffer unterstützt, schlägt die Verriegelungsanforderung fehl und bewirkt mit hoher Wahrscheinlichkeit Fehler in folgenden Operationen der Anwendung. Wie dies gezeigt werden konnte, existiert die potenzielle Inkompatibilität zwischen den bereits bestehenden Grafikanwendungen und dem beschriebenen Bucket-Rendering-Grafiksystem, sofern die bereits bestehenden Grafikanwendungen nicht neu gestaltet werden, um derartige Verriegelungs- bzw. Sperroperationen auf bestimmte Weise zu verhindern, oder die API wird so modifiziert, dass eine neue Architektur möglich gemacht wird.
  • Obwohl die Bucket-Rendering-Technik häufig Leistungsverbesserungen gegenüber einer traditionellen Rendering-Technik vorsieht, gilt der Umkehrschluss darüber hinaus für Situationen, in denen eine Grafikanwendung sich dafür entscheidet, sich auf den Zugriff auf extern sichtbare Puffer zu verlassen. Eine derartige Situation entsteht, wenn mehrere Anforderungen der Sperr- bzw. Verriegelungsoperation innerhalb eines Frames auftreten.
  • Um eine Unterstützung bereits bestehender Grafikanwendungen fortzuführen und um die beschriebene Bucket-Rendering-Technik zu verbessern, werden ein Verfahren und eine Vorrichtung benötigt, wie dies vorstehend gezeigt werden konnte.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Offenbart werden ein Verfahren und eine Vorrichtung zum Rendern eines Bilds. Die vorliegende Erfindung ist dem anhängigen Anspruch 1 als System, in Anspruch 5 als Verfahren und in Anspruch 8 als Datenträger ausgeführt.
  • In einem Ausführungsbeispiel weist ein Grafiksystem einen Schaltdetektor auf, der einen Schaltzustand in dem Grafiksystem detektiert. Das Grafiksystem weist ferner einen Rendering-Block auf, der eine Mehrzahl von Ebenen gemäß dem detektierten Schaltzustand rendert.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Die vorliegende Erfindung wird beispielhaft veranschaulicht und ist durch die Abbildungen der beigefügten Zeichnungen nicht beschränkt, wobei die gleichen Elemente in den Zeichnungen mit den gleichen Bezugsziffern bezeichnet sind. In den Zeichnungen zeigen:
  • 1 die kennzeichnenden Operationen eines Grafiksystems;
  • 2(a) ein Blockdiagramm eines Ausführungsbeispiels eines Rendering-Systems;
  • 2(b) ein Blockdiagramm eines Ausführungsbeispiels eines Rendering-Blocks in einem Rendering-System;
  • 2(c) ein Blockdiagramm eines Ausführungsbeispiels eines Renderers in einem Rendering-Block;
  • 3 eine Systemarchitektur eines Universalrechners;
  • 4 ein Beispiel der Abstraktionsebenen in einem Grafiksystem;
  • 5 die Ablauffolge der Ausführung des Bucket-Rendering;
  • 6 ein Beispiel für die Ausführung des Bucket-Rendering an einer Szene;
  • 7 das Konzept der Ebenen in einer Ebene; und
  • 8 eine beispielhafte Ebene, die aus mehreren Ebenen besteht.
  • GENAUE BESCHREIBUNG DER ERFINDUNG
  • Beschrieben werden ein Verfahren und eine Vorrichtung zum Erzeugen eines gerenderten Bilds. In der folgenden Beschreibung wurde auf die genaue Beschreibung allgemein bekannter Elemente und Theorien verzichtet, um die vorliegende Erfindung nicht unnötig zu verschleiern. Beispiele dafür sind die Bildverarbeitung, Grafiksysteme, Pixel, Frame-Puffer, Tiefenpuffer, Rendering, geometrische Primitive, Bounding Box Bucket-Sortierung, die exakte Bucket-Sortierung, etc.
  • Wie dies bereits in dem Abschnitt zum Stand der Technik vorstehend beschrieben worden ist, bezeichnet ein Frame-Puffer einen Speicherabschnitt, der zum Speichern eines ganzen auf einer Anzeigevorrichtung dargestellten Bitmap-Bilds reserviert ist, und ein Tiefenspeicher speichert Tiefeninformationen für jedes Pixel bzw. Bildelement des Bilds. Ferner werden die Begriffe „Bucket-Rendering", „Bucket-Rendering-Technik" und „Bucket-Rendering-Methode" in der vorliegenden Beschreibung austauschbar für eine Art von Rendering-Verfahren verwendet. „Geometrische Primitive" und „Primitive" werden ebenfalls austauschbar verwendet, und die Begriffe beziehen sich auf einfache geometrische Formen wie Punkte, Linien, Polygone (Beispiele dafür sind Dreiecke und Vierecke), etc. Schließlich bezieht sich der Begriff „Synchronisierungsereignisse" auf durch eine Grafikanwendung eingeleitete Ereignisse, um ein Rendering-System anzuweisen, dessen Daten mit aktuellen Betriebszuständen bzw. Betriebsbedingungen der Grafikanwendung zu synchronisieren.
  • Ein Grafiksystem verarbeitet die in das System eingegebenen Daten für gewöhnlich in zwei Hauptstufen, der geometrischen Stufe und der Rendering-Stufe. Die geometrische Stufe bzw. Phase ist für die Verwaltung geometrischer Beschreibungen von anzuzeigenden Objekten verantwortlich. Die geometrische Beschreibung kann unter anderem, ohne darauf beschränkt zu sein, gekrümmte Oberflächen, Polygone, Linien, Punkte oder eine Mischung der vorstehenden Optionen beschreiben. Die geometrische Stufe ist ferner für die Vorbereitung entsprechender Rendering-Attribute für die Rendering-Stufe zuständig. Die Rendering-Stufe wiederum ist für die Speicherverwaltung und die Umwandlung der vorstehend genannten geometrischen Beschreibung und deren Rendering-Attribute in Pixel zuständig, die auf einer Anzeigevorrichtung des Grafiksystems angezeigt werden. Die Abbildung aus 1 veranschaulicht bestimmte Schritte in jeder der genannten Stufen bzw. Phasen. In Bezug auf die Geometriestufe handelt es sich bei den Schritten um den Transformationsschritt 100, den Beleuchtungsschritt 102 und den Einrichtungsschritt 104.
  • Im Besonderen verändert der Transformationsschritt 100 die geometrische Beschreibung eines mehrdimensionalen Modells oder eines Objekts aus dessen nativen Koordinatensystem in ein Anzeigekoordinatensystem (teilweise auch als Bildschirmraum bezeichnet) und synchronisiert die transformierte geometrische Beschreibung als Reaktion auf externe Eingaben. Zum Beispiel kann in einem dreidimensionalen (nachstehend 3D) interaktiven Spiel ein Benutzer bzw. Anwender, der eine Eingabevorrichtung wie zum Beispiel eine Maus bedient, eine Bewegung oder Rotation bestimmter Objekte bewirken. Der Transformationsschritt 100 ist unter anderem und ohne einzuschränken dafür zuständig, diese Objekte in verschiedene Richtungen zu bewegen, sie im Verhältnis zu der Ansicht des Benutzers zu drehen oder sie zu skalieren, so dass sie ihre Größen verändern.
  • Da die Beleuchtung das Erscheinungsbild von Objekten in einer Szene beeinflusst, nähert sich der Beleuchtungsschritt 102 an die Effekte verschiedener Lichtquellen an, welche mit diesen Objekten interagieren, und der Schritt bestimmt die entsprechenden Farben für diese Objekte, um ein realistisches Erscheinungsbild zu vermitteln. Schließlich berechnet der Einrichtungsschritt 104 die Rendering-Attribute, wie etwa die Diffusionsfarbe, die Spekularfarbe und Texturkoordinaten der transformierten geometrischen Beschreibung. Optional kann der Einrichtungsschritt 106 die transformierte geometrische Beschreibung in ein anderes Format umwandeln, das sich für ein Rendering-Teilsystem eignet. Der Einrichtungsschritt 104 kann zum Beispiel eine Beschreibung einer gekrümmten Oberfläche in eine polygonale Beschreibung umwandeln, bevor die Rendering-Attribute berechnet werden. Danach bereitet der Einrichtungsschritt 104 entsprechende Daten vor und übergibt diese an den Rasterungsschritt 106.
  • Der Rasterungsschritt 106 der Rendering-Stufe fährt danach damit fort, die Informationen zusammenzustellen, die in eine zweidimensionale (nachstehend 2D) Anzeige übernommen werden. Zum Beispiel berechnet der Rasterungsschritt 106 die finalen Farbpixel, die durch die vorstehend beschriebenen transformierten geometrischen Beschreibungen abgedeckt sind. Ferner verwendet der Rasterungsschritt 106 eine gewisse Texturabbildung, Alpha-Misch- oder Antialiasing-Techniken zur weiteren Verbesserung der visuellen Effekte. Die Ausgabe des Schritts 106 sind Pixelwerte, die für den Schritt 108 des Pixel Drawing bereit stehen.
  • Die Abbildungen der 2(a), 2(b) und 2(c) veranschaulichen Blockdiagramme eines Ausführungsbeispiels eines Rendering-Systems, das die Aspekte der Kompatibilität und der Leistung adressiert, die in dem Abschnitt Stand der Technik beschrieben worden sind. Ein Datenumsetzer 200 führt die vorstehend im Text beschriebenen Operationen in der Geometriestufe an Eingabedaten 220 aus und übermittelt die umgesetzte bzw. konvertierte Ausgabe 210 zur weiteren Verarbeitung an den Rendering-Block 204. Der Rendering-Block 204 wiederum führt Aufgaben in der Rendering-Stufe aus. Gemäß der Rückkopplung 206 des Rendering-Blocks 204 erzeugt der Schaltdetektor 202 ein Schaltsignal 208, das eine Schaltbedingung aufweist, und sendet diese zurück zu dem Rendering-Block 204.
  • Ein Ausführungsbeispiel des Rendering-Blocks 204 umfasst eine Mehrzahl von Renderern, wie etwa einen Renderer 1, 212 und 2, 214. Diese Renderer können unterschiedliche Rendering-Techniken verwenden. Abhängig von dem in dem Schaltsignal 208 angezeigten Schaltzustand wählt der Rendering-Block 204 entweder den Renderer 1, 212 oder den Renderer 2, 214 zur Verarbeitung der konvertierten Ausgabe aus. Danach erzeugt der Multiplexor 216 dessen Ausgabepixel 218 zur Anzeige auf der Basis des Schaltsignals 208 und rendert Ausgabesignale.
  • Die Abbildung aus 2(c) steht für ein Ausführungsbeispiel des Renderers 2, 214. Der Renderer 2, 214 ist ein skalierbares Rendering-System, das bis zu einer ganzen Zahl n von Ebenen bearbeiten kann. Der Begriff „Ebene" bezeichnet ein Segment der Frame-Pufferdaten und der Tiefenpufferdaten, wobei die Segmentierung der Daten eine Folge bestimmter Anforderungen von Grafikanwendungen ist. Zum Beispiel veranschaulicht die Abbildung aus 7 einen Frame bzw. Rahmen von Szenendaten 700 (mit Frame-Pufferdaten und Tiefenpufferdaten), die ein 3D-Grafikbild aus 8 darstellen. Im Besonderen weisen die Szenendaten 700 relevante geometrische Primitive, Texturzustandsdaten, etc. auf, und zwar zur Darstellung einer Hintergrundwand 800, eines Gemäldes 802, das an der Hintergrundwand 800 hängt, und einen Stuhl 804 vor der Hintergrundwand 800.
  • Eine Grafikanwendung unter Verwendung eines Renderers 2, 214 kann verschiedene Anforderungen bzw. Anfragen an den Renderer ausgeben, wie zum Beispiel eine Anforderung für einen direkten Pufferzugriff und eine Wechselanforderung. Im Besonderen veranschaulicht die Abbildung aus 7 zwei Verriegelungs- bzw. Sperrereignisse 708 und 710 als Reaktion auf die genannten Anforderungen für einen direkten Pufferzugriff und ein Wechselereignis 712 als Reaktion auf die genannte Wechselanforderung. Die Wechselanforderung teilt dem Renderer 2, 214 mit, eine andere Gruppe von Szenendaten zu bearbeiten, wobei das resultierende Bitmap-Bild der Szenendaten 700 jedoch auf einer Anzeigevorrichtung angezeigt werden soll. In dem Beispiel aus 7 sind drei „Ebenen" gegeben. Die erste Ebene weist das Segment zwischen dem Beginn der Szenendaten 700 und dem Sperrereignis 708 (einschließlich dem Sperrereignis 708) auf. Die zweite Ebene besteht aus dem Segment zwischen dem Sperrereignis 708 und dem Sperrereignis 710 (einschließlich dem Sperrereignis 710). Die dritte Ebene besteht aus dem Segment zwischen dem Sperrereignis 710 und dem Sperrereignis 712 (einschließlich dem Sperrereignis 712).
  • Unter Berücksichtigung des Ebenenkonzepts umfasst der Renderer 2, 214 ferner mehrere Sub-Renderer 220, 222 und 224, wobei jeder Sub-Renderer eine Ebene verarbeitet. Der Kompositor 226 des Renderers 2, 214 kombiniert danach die Ausgaben der Sub-Renderer und überträgt die kombinierte Ausgabe zu dem Multiplexor 216.
  • Die Blöcke aus der Abbildung aus 2(a) können in einem elektronischen System programmiert oder implementiert werden. Zu einigen Beispielen eines elektronischen Systems zählen unter anderem und ohne einzuschränken Add-In-Leiterplatten, unabhängige elektronische Vorrichtungen bzw. Bausteine und Universalrechnersysteme. Ein Universalrechnersystem 300 ist in der Abbildung aus 3 dargestellt.
  • Die Architektur des Universalrechnersystems umfasst den Mikroprozessor 302 und den Cache-Speicher 304, die über den Prozessorbus 305 miteinander gekoppelt sind. Das musterhafte Computersystem 300 weist ferner den Hochleistungs-E/A-Bus 308 und den Standard-E/A-Bus 318 auf. Der Prozessorbus 305 und der Hochleistungs-E/A-Bus 308 werden durch die Host-Brücke 306 überbrückt, während der Hochleistungs-E/A-Bus 308 und der Standard-E/A-Bus 318 durch die E/A-Busbrücke 310 überbrückt werden. Mit dem Hochleistungs-E/A-Bus 308 gekoppelt sind der Hauptspeicher 312 und das Videoteilsystem 314. Das Videoteilsystem 314 umfasst häufig eine eigene Verarbeitungseinheit und Speichereinheit. Mit dem Videoteilsystem 314 gekoppelt ist eine Videoanzeige 316. Alternativ können das Videoteilsystem 314 oder der Hauptspeicher 312 auch mit der Host-Brücke 306 gekoppelt sein, wie dies durch die gestrichelten Linien dargestellt ist. Mit dem Standard-E/A-Bus 318 gekoppelt sind der Massenspeicher 320, die Netzwerkschnittstelle 324 und eine alphanumerische Eingabevorrichtung oder eine andere herkömmliche Eingabevorrichtung 322.
  • Diese Elemente führen ihre allgemein im Fach bekannten normalen Funktionen aus. Im Besonderen kann der Massenspeicher 320 in einem Ausführungsbeispiel als dauerhafter Speicher für die ausführbaren Anweisungen verwendet werden, während der Hauptspeicher 312 zum temporären Speichern der ausführbaren Anweisungen eines Ausführungsbeispiels während der Ausführung durch den Mikroprozessor 302 verwendet werden kann.
  • Genaue Funktionsweise eines Rendering-Blocks
  • Beschrieben werden ein Verfahren und eine Vorrichtung zum Erzeugen eines gerenderten Bilds. Im Besonderen treffen das Verfahren und die Vorrichtung in einem Ausführungsbeispiel ihre Auswahl aus einer Gruppe von Renderern zur Ausführung des Rendering und zur Beibehaltung der in dem Frame-Puffer und dem Tiefenpuffer der Vorrichtung gespeicherten Informationen.
  • Das Ausführungsbeispiel ist in einem elektronischen System oder im Besonderen in einem Universalrechner 300 einsetzbar. Die Abbildung aus 4 zeigt Abstraktionsmodelle, die gemäß einem Ausführungsbeispiel möglich sind. Die Anwendungsebene bzw. Anwendungsschicht 400 verweist auf Grafikanwendungen. Ein solches Beispiel sind dreidimensionale interaktive Spiele. Anweisungen dieser Grafikanwendungen werden für gewöhnlich in dem Massenspeicher 320 gespeichert und durch den Mikroprozessor 302 ausgeführt. Innerhalb der Anwendungsschicht 400 können die Grafikanwendungen bestehende Routinen der Anwendungs-Software aufrufen, um deren entsprechenden Rendering-Aufgaben zu bearbeiten. Diese Routinen der Rendering-Software stellen somit eine High-Level-API 402 für die Anwendungsschicht 400 bereit. Ein Beispiel für die High-Level-API 402 ist der Modus Retained Mode Direct3D® der Microsoft Corporation.
  • Die High-Level-API 402 kann auch andere Low-Level-Routinen aufrufen, die von dem Betriebssystem des Universalrechners 300 entwickelt werden, wie zum Beispiel, ohne darauf beschränkt zu sein, der Direct3D® Modus Immediate Mode oder OpenGL®. Diese Routinen sind als Low-Level-API 404 klassifiziert und weisen auch eine Schnittstellenverbindung mit dem Gerätetreiber 406 auf. Der Gerätetreiber 406 wird allgemein speziell für die Hardware 408 entwickelt und steht in direkter Übertragungsverbindung mit dieser. Die Hardware 408 betrifft für gewöhnlich das Videoteilsystem 314, das in der Abbildung aus 3 dargestellt ist. Für den Fachmann auf dem Gebiet ist es offensichtlich, dass die veranschaulichten Blöcke in der Abbildung aus 2(a) in dem Gerätetreiber 406, in Hardware 408 oder in einer Kombination aus beiden implementiert werden.
  • Wie dies bereits vorstehend im Text beschrieben worden ist, erzeugt der Schaltdetektor 202 ein Schaltsignal 208 auf der Basis der Rückkopplung 206 des Rendering-Blocks 204. In einem Ausführungsbeispiel kann der Rendering-Block 204 Informationen speichern bzw. führen, die im Verhältnis zu der Anzahl der Anforderungen für einen direkten Speicherzugriff oder Synchronisierungsereignissen (nachstehend Quirks) pro Frame stehen. Wenn die Anzahl einen bestimmten Schwellenwert übersteigt, kann die Leistung bestimmter Rendering-Techniken, wie etwa des Bucket-Rendering, weniger wünschenswert werden als eine traditionelle Rendering-Methode. Wenn der Rendering-Block 204 dieses Ergebnis in dessen Rückkopplung bzw. Rückführung 206 anzeigt, so setzt der Schaltdetektor 202 die Informationen in der Rückkopplung 206 in eine Schaltbedingung um und integriert die Schaltbedingung in das Schaltsignal 208. Für den Durchschnittsfachmann auf dem Gebiet sollte es offensichtlich sein, den Rendering-Block 204 so zu gestalten, dass auch andere Informationen als die genannten Sperroperationen verfolgt werden können, oder das andere Schwellenwerte zum Auslösen der beschriebenen Schaltbedingungen erzeugt werden können.
  • Zusätzlich zu der Überwachung der Leistungsinformationen und der Erzeugung der Rückkopplung 206 umfasst der Rendering-Block 204 eine Gruppe von Renderern. In einem Ausführungsbeispiel verwendet der Renderer 1, 212 eine traditionelle Rendering-Methode, und die Sub-Renderer 220, 222 und 224 in dem Renderer 2, 214 setzen die vorstehend genannte Bucket-Rendering-Methode ein. Das in der Abbildung aus 5 dargestellte Flussdiagramm beschreibt in Verbindung mit einer beispielhaften Szene aus 6 die Abläufe bzw. Operationen des Bucket-Rendering-Verfahrens. Die Abbildung aus 6 zeigt eine Szene 600 mit einem einfachen Objekt 602.
  • Wenn das Schaltsignal 208 dem Renderer 2, 214 einen Schaltzustand anzeigt und anzeigt, dass eine Ebene bzw. Schicht existiert (d.h. die Anzahl der Quirks ist gleich 0), so beginnt der Renderer 2, 214 mit der Verarbeitung der konvertierten Ausgabe 210 der Szene 600 mit einem der Sub-Renderer auf der Basis des Bucket-Rendering. Das Verfahren beginnt mit einer Unterteilung der Szene 600 in die Bereiche 604, 606, 608 und 610 in dem Block 500. In einem Ausführungsbeispiel entspricht ein Ausblendungsrechteck 612 dem minimalen Rechteck, das Pixel von Objekten in der Szene 600 wie etwa 602 in jedem der unterteilten Bereiche abdecken kann. In diesem Fall fällt die Größe des Ausblendungsrechtecks 612 somit mit der Größe der unterteilten Bereiche zusammen.
  • Da die konvertierte Ausgabe 210 nach der Unterteilung bereits die geometrische Stufe durchlaufen hat, stehen Informationen über die Primitive der Szene 600 zur Verfügung und werden in 502 in die entsprechenden Bereiche sortiert. Im Besonderen gehört das Primitiv 614 zu dem Bereich 604, das Primitiv 616 zu dem Bereich 606, das Primitiv 618 zu dem Bereich 608 und das Primitiv 620 zu dem Bereich 610. Verschiedene Sortieralgorithmen können in 502 eingesetzt werden, ohne den Umfang des beschriebenen Rendering-Blocks 204 zu überschreiten. Zu den anwendbaren Algorithmen zählen unter anderem, ohne dabei einschränkend zu sein, Bounding Box Bucket Sorting und Exact Bucket Sorting. Ferner ist es wichtig festzustellen, dass alle Zustandsveränderungen oder Operationen der Primitive zugeordneten Befehle oder Anweisungen auch organisiert und in ihren entsprechenden Bereichen platziert werden.
  • Wenn sich die Primitive und relevante Befehle in ihren entsprechenden Bereichen befinden, entfernt das Ausblendungsrechteck 612 in 504 alle Informationen außerhalb der Bereiche. Für den Durchschnittsfachmann auf dem Gebiet ist es offensichtlich, dass entweder 504 mit 502 oder 504 mit 506 kombiniert wird. Wenn das Ausblendungsrechteck 612 ferner mit der Entfernung der Informationen außerhalb des Bereichs 604 fertig ist, kann es zu einem anderen Bereich wechseln, wie etwa dem Bereich 606, indem es einfach seine Koordinaten ändert. Nach der Sortierung und Ausblendung bzw. dem Zuschneiden werden die Primitive in jedem Bereich in der Folge ihrer Einführung in ihre Bereiche in 506 gerendert.
  • Wenn es mehrere Ebenen bzw. Schichten gibt, oder mit anderen Worten, wenn die Anzahl der Quirks größer ist als Null, und wenn das Schaltsignal 208 dem Renderer 2, 214 einen Schaltzustand anzeigt, so fährt ein Ausführungsbeispiel des Renderers 2, 214 in der Folge mit der Zuweisung jeder Ebene zu einem der Sub-Renderer (220, 222 und 224) auf der Basis des Bucket-Rendering zu. Unter Verwendung der Abbildung aus 8 kann die Ebene 1 zur Veranschaulichung einer Hintergrundwand 800 entsprechen und sie ist dem Sub-Renderer 220 zugeordnet. Die Ebene 2 kann einem Gemälde 802 entsprechen und ist dem Sub-Renderer 222 zugeordnet. Die Ebene 3 kann einem Stuhl 804 entsprechen und ist dem Sub-Renderer 224 zugeordnet. Die durch diese Sub-Renderer ausgeführten Operationen entsprechen im Wesentlichen den Operationen, die vorstehend in Verbindung mit den Abbildungen der 5 und 6 beschrieben worden sind. Der Kompositor 226 sammelt danach die gerenderten Daten für die Ebene 1, Ebene 2 und Ebene 3 und bestimmt relative Tiefeninformationen in Bezug auf die Hintergrundwand 800, das Gemälde 802 und den Stuhl 804. Auf der Basis dieser Bestimmung fährt der Kompositor 226 damit fort, verschiedene Ebenen gerenderter Daten zu organisieren und entsprechende Pixeldaten zur Anzeige zu erzeugen.
  • Alternativ kann ein anderes Ausführungsbeispiel des Renderers 2, 214 einen Sub-Renderer aufweisen, wie etwa den Sub-Renderer 220, wobei es weiteren mehrere Ebenen verarbeiten kann. Zuerst stellt der Renderer 2, 214 sicher, dass der vollständige und extern sichtbare Frame-Puffer und/oder Tiefenpuffer existiert. Als zweites beginnt der Sub-Renderer 220 mit dem Rendering von Szenendaten in Ebene 1 (bis zu dem Punkt des Sperrereignisses 708). Nach dem Detektieren des Sperrereignisses 708 leert der Sub-Renderer 220 die Frame- und/oder Tiefenpufferdaten in extern sichtbare Puffer. Die Daten werden für eine Kompatibilität mit bereits bestehenden Grafikanwendungen oder zum Rendern folgender Ebenen gespeichert. Drittens fährt der Sub-Renderer 220 damit fort, Ebene 2 bis zu dem Sperrereignis 710 zu rendern. In ähnlicher Weise leert der Sub-Renderer 212 Frame- und/oder Tiefenpufferdaten nach dem Auftreten des Sperrereignisses 710 in extern sichtbare Puffer. Zuletzt rendert der Sub-Renderer 220 Ebene drei bis zu dem Wechselereignis 712, und wiederum lehrt er die Frame- und/oder Tiefenpufferdaten in extern sichtbare Puffer. Hiermit wird festgestellt, dass die Zusammensetzung der Ebenen zum Erzeugen einer Ausgabe für den Multiplexor 216 implizit durch die drei vorstehend genannten Entleerungsvorgänge erreicht wird.
  • Offenbart werden somit ein Verfahren und eine Vorrichtung zum Erzeugen eines gerenderten Bilds. Das Verfahren und die Vorrichtung wurden zwar im Besonderen in Bezug auf die Abbildungen beschrieben, wobei sie in jeder Anzahl von Systemen auftreten können, die in der Lage sind, ein gerendertes Bild zu erzeugen. Ferner sind durch den Durchschnittsfachmann auf dem Gebiet zahlreiche Abänderungen und Modifikationen möglich, ohne dabei vom Umfang des beschriebenen Verfahrens und der beschriebenen Vorrichtung abzuweichen.

Claims (10)

  1. Grafiksystem zum Erzeugen eines gerenderten Bilds, wobei das System folgendes umfasst: einen Schaltdetektor zum Detektieren eines Schaltzustands in dem Grafiksystem; und einen Rendering-Block, der mit dem Schaltdetektor gekoppelt ist, um gemäß dem detektierten Schaltzustand eine Mehrzahl von Ebenen gemäß einem detektierten Schaltzustand zu rendern und um zwischen einer traditionellen Rendering-Technik und einer Bucket-Rendering-Technik auszuwählen, wobei der Rendering-Block folgendes umfasst: einen Multiplexer; einen ersten Renderer, der mit dem Multiplexer gekoppelt ist, um die genannte traditionelle Rendering-Technik zu nutzen; einen zweiten Renderer, der mit dem Multiplexer gekoppelt ist, um die genannte Bucket-Rendering-Technik zu nutzen.
  2. Grafiksystem nach Anspruch 1, wobei der Schaltzustand auf einer Reihe von Eigenarten je Frame basiert.
  3. Grafiksystem nach Anspruch 1 oder 2, wobei der zweite Renderer ferner folgendes umfasst: eine Mehrzahl von Sub-Renderern zur Verarbeitung der Mehrzahl von Ebenen; und einen Kompositor, der mit den Sub-Renderern gekoppelt ist, um die gerenderten Ausgaben der Sub-Renderer zu kombinieren; wobei die Sub-Renderer in der Lage sind: die Ebenen in eine Mehrzahl von Bereichen zu unterteilen; die Bereiche unabhängig zu unterteilen; und Frame-Pufferdaten der Ebenen in einem extern sichtbaren Puffer zu verwalten.
  4. Grafiksystem nach Anspruch 3, wobei die Sub-Renderer ferner in der Lage sind, die Ebenen in eine Mehrzahl von Bereichen zu unterteilen, um Darstellungselemente der Ebenen zu sortieren und in den unterteilten Bereichen zu platzieren.
  5. Verfahren zum Erzeugen eines gerenderten Bilds, wobei das Verfahren folgendes umfasst: das Detektieren eines Schaltzustands in dem Grafiksystem; das Rendern einer Mehrzahl von Ebenen gemäß dem detektierten Schaltzustand; und das Auswählen zwischen einer traditionellen Rendering-Technik und einer Bucket-Rendering-Technik gemäß dem detektierten Schaltzustand.
  6. Verfahren nach Anspruch 5, wobei das Rendern der Ebenen ferner folgendes umfasst: das Aufteilen der Ebenen in eine Mehrzahl von Bereichen; das unabhängige Rendern der Bereiche; und das Verwalten von Frame-Pufferdaten der Ebenen in einem extern sichtbaren Puffer.
  7. Verfahren nach Anspruch 6, wobei das Verwalten der Frame-Pufferdaten der Ebenen in einem extern sichtbaren Puffer ferner das Verwalten von Tiefenpufferdaten der Ebenen in einem extern sichtbaren Puffer umfasst.
  8. Maschinenlesbares Medium, das darauf vorgesehene Befehle aufweist, die bei einer Ausführung durch das Grafiksystem bewirken, dass das Grafiksystem ein gerendertes Bild erzeugt durch: das Detektieren eines Schaltzustands in dem Grafiksystem; das Rendern einer Mehrzahl von Ebenen gemäß dem detektierten Schaltzustand; und das Auswählen zwischen einer traditionellen Rendering-Technik und einer Bucket-Rendering-Technik gemäß dem detektierten Schaltzustand.
  9. Maschinenlesbares Medium nach Anspruch 8, wobei das Rendern mithilfe der Bucket-Rendering-Technik ferner folgendes umfasst: das Rendern der Mehrzahl von Ebenen; und das Kombinieren der gerenderten Ausgaben der Ebenen.
  10. Maschinenlesbares Medium nach Anspruch 9, wobei das Rendern der Mehrzahl von Ebenen ferner folgendes umfasst: das Aufteilen der Ebenen in eine Mehrzahl von Bereichen; das unabhängige Rendern der Bereiche; und das Verwalten der Pufferdaten der Ebenen in einem extern sichtbaren Puffer.
DE60025957T 1999-12-22 2000-11-28 Verfahren und vorrichtung zur gewährleistung der abwärts-kompatibilität in einem bucket-darstellungssystem Expired - Lifetime DE60025957T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US470924 1990-01-26
US09/470,924 US6466217B1 (en) 1999-12-22 1999-12-22 Method and apparatus for ensuring backward compatibility in a bucket rendering system
PCT/US2000/042318 WO2001046905A2 (en) 1999-12-22 2000-11-28 A method and apparatus for ensuring backward compatibility in a bucket rendering system

Publications (2)

Publication Number Publication Date
DE60025957D1 DE60025957D1 (de) 2006-04-20
DE60025957T2 true DE60025957T2 (de) 2006-08-03

Family

ID=23869613

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60025957T Expired - Lifetime DE60025957T2 (de) 1999-12-22 2000-11-28 Verfahren und vorrichtung zur gewährleistung der abwärts-kompatibilität in einem bucket-darstellungssystem

Country Status (9)

Country Link
US (1) US6466217B1 (de)
EP (1) EP1242972B1 (de)
CN (2) CN1265326C (de)
AT (1) ATE317574T1 (de)
AU (1) AU4137201A (de)
DE (1) DE60025957T2 (de)
HK (1) HK1046759B (de)
TW (1) TW484113B (de)
WO (1) WO2001046905A2 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2416100B (en) * 2002-03-26 2006-04-12 Imagination Tech Ltd 3D computer graphics rendering system
US7586500B2 (en) * 2004-09-24 2009-09-08 Canon Kabushiki Kaisha Dynamic render algorithm selection
JP4621618B2 (ja) * 2006-03-28 2011-01-26 株式会社東芝 図形描画装置、図形描画方法、およびプログラム
JP2011022728A (ja) * 2009-07-14 2011-02-03 Sony Corp 画像処理装置および画像処理方法
JP2011022726A (ja) * 2009-07-14 2011-02-03 Sony Corp 画像処理装置および画像処理方法
US8982136B2 (en) * 2011-05-16 2015-03-17 Qualcomm Incorporated Rendering mode selection in graphics processing units
US9547930B2 (en) * 2011-11-30 2017-01-17 Qualcomm Incorporated Hardware switching between direct rendering and binning in graphics processing
US9928565B2 (en) * 2014-04-21 2018-03-27 Qualcomm Incorporated Flex rendering based on a render target in graphics processing

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5640543A (en) * 1992-06-19 1997-06-17 Intel Corporation Scalable multimedia platform architecture
JP3037865B2 (ja) * 1994-04-01 2000-05-08 シャープ株式会社 3次元スプライト描画装置
US5852443A (en) * 1995-08-04 1998-12-22 Microsoft Corporation Method and system for memory decomposition in a graphics rendering system
US5886701A (en) 1995-08-04 1999-03-23 Microsoft Corporation Graphics rendering device and method for operating same
US5999189A (en) 1995-08-04 1999-12-07 Microsoft Corporation Image compression to reduce pixel and texture memory requirements in a real-time image generator
US6147695A (en) * 1996-03-22 2000-11-14 Silicon Graphics, Inc. System and method for combining multiple video streams
US5982399A (en) 1996-06-21 1999-11-09 Autodesk, Inc. Immediate mode drawing interface for the construction of graphics software
DE69901542T2 (de) 1998-02-17 2002-12-05 Sun Microsystems Inc Verfahren und vorrichtung zur abschätzung der leistung eines grafischen systems von polygonen
US6198477B1 (en) * 1998-04-03 2001-03-06 Avid Technology, Inc. Multistream switch-based video editing architecture

Also Published As

Publication number Publication date
WO2001046905A3 (en) 2002-01-03
CN1265326C (zh) 2006-07-19
TW484113B (en) 2002-04-21
CN1434962A (zh) 2003-08-06
AU4137201A (en) 2001-07-03
CN1664864A (zh) 2005-09-07
DE60025957D1 (de) 2006-04-20
HK1046759A1 (en) 2003-01-24
CN100543777C (zh) 2009-09-23
HK1046759B (zh) 2006-06-16
EP1242972B1 (de) 2006-02-08
US6466217B1 (en) 2002-10-15
WO2001046905A2 (en) 2001-06-28
EP1242972A2 (de) 2002-09-25
ATE317574T1 (de) 2006-02-15

Similar Documents

Publication Publication Date Title
DE69333379T2 (de) Vorrichtung und Verfahren zur Verarbeitung von Videosignalen
DE10296401B4 (de) Verbund-Rendering von 3-D-Graphikobjekten
DE60120474T2 (de) Rasterung von dreidimensionalen bildern
DE19709220B4 (de) System und Verfahren für eine beschleunigte Verdeckungsauslese
DE69632578T2 (de) Computer-grafiksystem zum schaffen und verbessern von texturabbildungssystemen
DE60115034T2 (de) Verfeinerung von dreidimensionalen polygonalen gitterdaten
DE60012917T2 (de) Verfahren und vorrichtung für eine antialiasing-operation auf impliziten kanten
DE69839277T2 (de) Verfahren und anordnung zur ausführung von farbschlüsseln, transparenz und nebelfunktionen
DE60300788T2 (de) Bild mit Feldtiefe aus Z-Pufferbilddaten und Alphamischung
DE69914355T2 (de) Bildverarbeitungsgerät
DE112009000180T5 (de) Verfahren, Vorrichtung und Computerprogrammprodukt für eine verbesserte Grafikperformance
DE102018125472B4 (de) Grafikprozessor, der Abtastungs-basiertes Rendering durchführt, und Verfahren zum Betreiben desselben
DE10005812A1 (de) Vom Benutzer ausgewählte Anzeige von zweidimensionalem Fenster in drei Dimensionen auf einem Rechnerbildschirm
DE60008867T2 (de) Antialiasingverfahren und -anordnung zur effizienten nutzung von wenigen mischeinheiten
DE60122333T2 (de) Verfahren und System zur kachelweisen Bildwiedergabe
DE60301303T2 (de) Videoverarbeitung
DE19620263B4 (de) Datensynchronisation zwischen einer Mehrzahl von asynchronen Datenaufbereitungen
DE60025957T2 (de) Verfahren und vorrichtung zur gewährleistung der abwärts-kompatibilität in einem bucket-darstellungssystem
DE10085297B4 (de) Verfahren und Vorrichtung zur Erzeugung einer Bewegungsillusion
DE60024117T2 (de) Tiefenbasierte mischung mit 3d aufrasterungsgerät
US20040075657A1 (en) Method of rendering a graphics image
DE69933406T2 (de) Bilderzeugungsvorrichtung, Bilderzeugungsverfahren und computerlesbares Aufzeichnungsmedium für Bilderzeugungsprogramm
DE602005003575T2 (de) Vorwärts-texturabbildungs-3d-graphiksystem
DE602004011234T2 (de) Verfahren und Vorrichtung zur Erzeugung dreidimensionaler Bilder
DE19620858B4 (de) Computergraphiksystem mit Pixel-Tiefenhinweisgebung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806