DE112013004920T5 - Polygonrasterisierung mit reduzierter Bitanzahl - Google Patents

Polygonrasterisierung mit reduzierter Bitanzahl Download PDF

Info

Publication number
DE112013004920T5
DE112013004920T5 DE112013004920.1T DE112013004920T DE112013004920T5 DE 112013004920 T5 DE112013004920 T5 DE 112013004920T5 DE 112013004920 T DE112013004920 T DE 112013004920T DE 112013004920 T5 DE112013004920 T5 DE 112013004920T5
Authority
DE
Germany
Prior art keywords
bits
triangle
given
edge
max
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.)
Withdrawn
Application number
DE112013004920.1T
Other languages
English (en)
Inventor
Jacob Subag
Nir Benty
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of DE112013004920T5 publication Critical patent/DE112013004920T5/de
Withdrawn legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/40Filling a planar surface by adding surface attributes, e.g. colour or texture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)
  • Software Systems (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

Es werden Techniken zur Ausführung einer Rasterisierung einer gegebenen Grafikarbeitslast offenbart, wobei Teile der Arbeitslast, welche mit Operationen mit relativ hoher Bitanzahl assoziiert sind, über einen ersten Prozesspfad verarbeitet werden, und Teile der Arbeitslast, welche mit Operationen mit relativ niedrigerer Bitanzahl assoziiert sind, über einen zweiten, relativ schnelleren Prozesspfad verarbeitet werden, gemäß einer Ausführungsform. In einem allgemeineren Sinne kann die maximale Bitanzahl, welche mit einem gegebenen Primitiv assoziiert ist, identifiziert und mit einem Schwellenwert verglichen werden, um zu bestimmen, welcher von mehreren verfügbaren Prozesspfaden verwendet werden kann.

Description

  • HINTERGRUND
  • Im Allgemeinen befasst sich der Bereich der dreidimensionalen Computergrafik mit dem Erzeugen und Anzeigen von dreidimensionalen Objekten in einem zweidimensionalen Raum, wie beispielsweise einem Anzeigebildschirm. Dies wird bewerkstelligt, indem Informationen über dreidimensionale Objekte in eine Bitmap umgewandelt werden, welche angezeigt wird. Dieser so genannte Rendering-Prozess ist ein mehrteiliger Prozess, womit ein Computer eine Anwendungsmodellbeschreibung eines Bildes in ein Bildschirmbild umwandelt. Die grundlegende Idee ist, dass die Verarbeitung von Informationen in dreidimensionalen Computergrafiken in einer Reihe von Stufen in einer Grafik-Pipeline erfolgt, wobei jede Stufe Ergebnisse für eine nachfolgende Stufe erzeugt.
  • Eine Art von Rendering verwendet Rasterisierung. Im Allgemeinen ist die Rasterisierung der Prozess der Umwandlung eines Bildes, welches in einem Vektorgrafikformat (Formen) beschrieben ist, in ein Rasterbild (Pixel oder Punkte). Die resultierende Ausgabe kann beispielsweise einer Anzeige oder einem Drucker bereitgestellt oder als eine Bitmap-Datei gespeichert werden. Ein typischer Rasterisierungsalgorithmus empfangt eine als Polygone beschriebene dreidimensionale Szene und rendert diese Szene auf einer zweidimensionalen Anzeige. Jedes Polygon wird als eine Sammlung von Dreiecken dargestellt, und die Dreiecke werden jeweils durch drei Vertices in einem dreidimensionalen Raum dargestellt. In diesem Sinne empfängt ein Rasterizer einen Strom von Dreiecksvertices, transformiert diese in entsprechende zweidimensionale Punkte auf einer Oberfläche und füllt die transformierten zweidimensionalen Dreiecke je nach Bedarf ein.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 veranschaulicht ein Grafikverarbeitungssystem, welches ausgelegt ist, um eine polygonale Rasterisierung gemäß einer Ausführungsform der vorliegenden Erfindung auszuführen.
  • 2 veranschaulicht eine Prozesspfad-Auswahlvorrichtung des in 1 gezeigten Systems, welche gemäß einer Ausführungsform der vorliegenden Erfindung ausgelegt ist.
  • 3 veranschaulicht ein polygonales Rasterisierungsverfahren, welches gemäß einer Ausführungsform der vorliegenden Erfindung ausgelegt ist.
  • 4 veranschaulicht ein Begrenzungsrechteck (eine „Bounding-Box”) um ein gegebenes Polygon und die gültigen Stichproben, welche gerastert werden sollen, gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 5 veranschaulicht ein beispielhaftes polygonales Primitiv, welches in Dreiecke, die gemäß einer Ausführungsform der vorliegenden Erfindung verarbeitet werden können, segmentiert werden kann.
  • 6 veranschaulicht ein Mediensystem, welches gemäß einer Ausführungsform der vorliegenden Erfindung ausgelegt ist.
  • 7 veranschaulicht ein Mobilrechensystem, welches gemäß einer Ausführungsform der vorliegenden Erfindung ausgelegt ist.
  • DETAILLIERTE BESCHREIBUNG
  • Es werden Techniken zur Ausführung einer Rasterisierung einer gegebenen Grafikarbeitslast offenbart, wobei Teile der Arbeitslast, welche mit Operationen mit relativ hoher Bitanzahl assoziiert sind, über einen ersten Prozesspfad verarbeitet werden, und Teile der Arbeitslast, welche mit Operationen mit relativ niedrigerer Bitanzahl assoziiert sind, über einen zweiten, relativ schnelleren Prozesspfad verarbeitet werden. In einer typischen Arbeitslast, und gemäß einer Ausführungsform, können die meisten Rasterisierungsverarbeitungsoperationen unter Verwendung des schnelleren Prozesspfads ausgeführt werden. Beispielsweise sind in einigen Ausführungsformen Rasterisierungsverarbeitungsoperationen, welche unter Verwendung des schnelleren Prozesspfads ausgeführt werden können, mehr als 90% der empfangenen Grafikarbeitslast oder 95% oder 99% in vielen Fällen. Folglich kann durch Identifizieren derjenigen Fälle, in denen ein schnellerer Prozesspfad (z. B. 32-Bit-Operationen-Pfad im Gegensatz zu beispielsweise einem 40-Bit- oder 64-Bit-Operationen-Pfad) ausreichend ist, und dann Auswählen des geeigneten Verarbeitungspfads eine deutliche Verbesserung der Verarbeitungseffizienz und des Energieverbrauchs erzielt werden. In einem allgemeineren Sinne kann die maximale Bitanzahl, welche mit einem gegebenen Primitiv assoziiert ist, identifiziert und mit einem Schwellenwert verglichen werden, um zu bestimmen, welcher von mehreren verfügbaren Prozesspfaden verwendet werden kann.
  • Allgemeiner Überblick
  • Wie zuvor erläutert, empfängt ein Rasterizer im Allgemeinen einen Strom von Dreiecksvertices, transformiert diese in entsprechende zweidimensionale Punkte auf einer Oberfläche und füllt die transformierten zweidimensionalen Dreiecke je nach Bedarf ein. Genauer wird das Anwendungsmodell für ein gegebenes Objekt in der Regel durch ein Anwendungsprogramm erzeugt und in einer Anwendungsdatenbank gespeichert. Das Anwendungsprogramm wandelt das Anwendungsmodell unter Verwendung einer Grafik-Anwendungsprogrammierschnittstelle (Application Programming Interface, API) in eine Folge von Befehlen um, welche dann von der Grafik-Pipeline verarbeitet werden, um eine Ansicht des Modells zu erzeugen. Die Grafik-API umfasst typischerweise eine Reihe von Grafikausgabesubroutinen oder -befehlen, welche sowohl eine detaillierte geometrische Beschreibung, was zu betrachten ist, und die Attribute, die beschreiben, wie die Objekte erscheinen sollen (z. B. Größe, Farbe, Textur, Breite usw.), als auch andere Elemente umfassen, die alle in einem Grafikpaket gesammelt werden, das von High-Level-Programmiersprachen wie C, C++, objektorientiertes C, Pascal, LISP usw. aufgerufen werden kann. Während der Rasterisierung wird ein Primitiv, welches durch dreidimensionale Parameter in einer dreidimensionalen Darstellung definiert ist, in ein zweidimensionales Pixelraster transformiert. Dreidimensionale Parameter umfassen x,- y- und z-Koordinaten und können gegebenenfalls Parameter, wie beispielsweise Farbe und Textur, umfassen. Während des Transformationsprozesses wird eine dreidimensionale Koordinate, welche einen X-, Y- und Z-Wert umfasst, in eine X- und Y-Bildschirmkoordinate, welche zum Positionieren verwendet wird, und einen Tiefenwert Z, welcher als Parameter behandelt wird, transformiert. Während der Rasterisierung wird eine Menge von Parameterwerten für jeden der drei Dreiecksvertices angegeben. Eines der Probleme, welches während des Rasterisierungsprozesses gelöst werden soll, ist die Berechnung der dreidimensionalen Parameter, wie beispielsweise Z-Parameter, Farbparameter und Texturparameter, die den Koordinaten entsprechen, die das dreidimensionale Primitiv am nächsten approximieren. Die Rasterisierung macht diese Bestimmungen durch die Berechnung der Parameterwerte an jedem Pixel während der Abtastung der horizontalen oder vertikalen Abtastlinien des Pixelrasters. Es gibt eine Reihe von nicht-trivialen Problemen in Verbindung mit bekannten Rasterisierungstechniken. Beispielsweise wird die Abfrage zu überprüfen, ob eine Stichprobe von einem Dreieck (oder anderem Primitiv) abgedeckt ist, während der Rasterisierung von der Grafik-Pipeline häufig aufgerufen. Solche Abfragen werden in der Regel anhand von 3 Halbebenentests berechnet und erfordern Multiplikationen, welche in 32.16 (48 Bit) Zahlen resultieren können. Verbreitete Grafik-APIs definieren jedoch typischerweise die erforderliche Rasterisierungspräzision mit Festkomma 16.8 (24 Bit) Zahlen. Darüber hinaus verwenden typische Grafiksysteme Festfunktionshardware mit 40-Bit-Operationen, und Software-Rasterizer verwenden 64-Bit-Operationen. Dazu kann der Rasterisierungsprozess abhängig von der Arbeitslast ein teurer und ineffizienter Prozess sein, welcher manchmal viele Multiplikationsberechnungen erfordert.
  • Folglich, und gemäß einer Ausführungsform der vorliegenden Erfindung, werden Rasterisierungstechniken bereitgestellt, wobei eine gegebene Grafikarbeitslast vor oder während der Rasterisierung ausgewertet wird, um die erforderliche Bitanzahl einer Operation zu beurteilen. Falls die Bitanzahl über einem gegebenen Schwellenwert liegt, kann die Arbeitslast unter Verwendung eines langsameren Prozesspfads verarbeitet werden, welcher Operationen mit höherer Bitanzahl aufnehmen kann. Falls die Bitanzahl andererseits bei oder unter dem gegebenen Schwellenwert liegt, dann kann die Arbeitslast unter Verwendung eines relativ schnelleren Prozesspfads verarbeitet werden, welcher Operationen mit niedrigerer Bitanzahl aufnehmen kann. Beispielsweise, und wie im Lichte dieser Offenbarung anerkannt werden wird, kann die Verwendung von 32-Bit-Operationen anstelle von 40-Bit-Operationen bei Festfunktionshardware den Platz- und Energieverbrauch reduzieren. In ähnlicher Weise kann die Verwendung von 32-Bit-Operationen anstelle von 64-Bit-Operationen bei Software-Rasterizern die Leistung der Grafik-Pipeline steigern und den Energieverbrauch reduzieren.
  • Die Techniken basieren auf einer Reihe von Beobachtungen. Beispielsweise, und wie im Lichte dieser Offenbarung anerkannt werden wird, können Stichprobenpunkte außerhalb der Bounding-Box eines Dreiecks vor/während der Rasterisierung trivialerweise zurückgewiesen werden, so dass Halbebenentests nur für die Menge von Stichproben innerhalb der Bounding-Box des Dreiecks durchgeführt werden müssen. Darüber hinaus kann die Anzahl der Bits, welche für die Halbebenentests erforderlich sind, vor der Rasterisierung begrenzt werden. Solche Tests gelten für alle Stichprobenpunkte in einem gegebenen Dreieck während des aktuellen Aufrufs zum Zeichnen (Draw-Call). In einem Ausführungsbeispiel können dann beispielsweise, falls diese Begrenzung 32 Bits nicht überschreitet, normale 32-Bit-Variablen verwendet werden (während Werte während der Rasterisierung bei Bedarf verschoben werden). In Fällen, in denen die Begrenzung 32 Bit überschreitet, können dann 64-Bit-Operationen in Software-Rasterizern und/oder programmierbare Hardware in Hardware-Rasterizern verwendet werden.
  • Wie im Lichte dieser Offenbarung anerkannt werden wird, können die Techniken, obgleich Beispiele von Bitoperationen, wie beispielsweise 32-Bit-Operationen hierin bereitgestellt werden (z. B. BitOpThreshold ≤ 32), auf Operationen einer beliebigen Bitanzahl angewendet werden (z. B. 24 Bit, 16 Bit usw.), und die beanspruchte Erfindung soll nicht auf irgendeinen besonderen Bitoperationsschwellenwert begrenzt werden, sofern nicht ausdrücklich angegeben. Ähnlich können die Techniken, obgleich Beispiele von polygonalen Primitiven wie beispielsweise Dreiecken hierin bereitgestellt werden, auf ein beliebiges planares Polygon angewendet werden, indem es zuerst in Dreiecke segmentiert oder anderweitig aufgeteilt wird, und die beanspruchte Erfindung soll nicht auf irgendeine bestimmte Primitivform begrenzt sein, sofern nicht ausdrücklich angegeben.
  • Systemarchitektur und Methode
  • 1 veranschaulicht ein Grafikverarbeitungssystem, welches ausgelegt ist, um eine polygonale Rasterisierung gemäß einer Ausführungsform der vorliegenden Erfindung auszuführen. Wie zu erkennen ist, umfasst das System eine Rendering-Engine, welche einen Rasterizer umfasst. Der Rasterizer ist mit einer Prozesspfad-Auswahlvorrichtung ausgelegt. Im Betrieb greift eine gegebene Anwendung auf das System zu und stellt eine Grafikarbeitslast bereit, welche beispielsweise einen oder mehrere Befehle und/oder Grafikdaten umfassen kann, die vom System verarbeitet werden sollen, das wiederum eine Ausgabe an die Anzeigevorrichtung generiert.
  • Wie erkannt werden wird, sind nicht alle typischen Komponenten und Funktionsmodule eines Grafikverarbeitungssystems gezeigt, wie beispielsweise eine Grafikverarbeitungseinheit (Graphics Processing Unit, GPU), Blitter-Engine und Media-Engine. Ferner ist zu beachten, dass verschiedene Ausführungsformen verschiedene Grade von Baugruppen-/Modulintegration aufweisen können. Beispielsweise kann die Prozesspfad-Auswahlvorrichtung als diskrete Komponente bzw. diskretes Modul am Eingang des Rasterizers implementiert oder im Rasterizer integriert sein. Alternativ kann die Prozesspfad-Auswahlvorrichtung teilweise innerhalb des Rasterizers und teilweise in einer oder mehreren anderen Komponenten in Kommunikation mit dem Rasterizer implementiert werden. Zahlreiche andere solcher Variationen und Ausführungsformen werden im Lichte dieser Offenbarung offensichtlich, und die beanspruchte Erfindung soll nicht auf die speziellen Beispiele, welche in den Figuren dargestellt sind, eingeschränkt sein.
  • Die gegebene Anwendung kann eine beliebige Anwendung sein, welche Befehle generiert, die für die Ausführung durch ein Grafikverarbeitungssystem geeignet sind. Die Arbeitslast kann von der Anwendung an das System geleitet werden, wie es herkömmlich durchgeführt wird, oder mit einem benutzerspezifischen oder anderweitig proprietären Protokoll, falls dies gewünscht wird. In anderen Ausführungsformen kann die Anwendung mit einem/einer oder mehreren dazwischenliegenden Modulen und/oder Komponenten kommunizieren, von denen eine(s) oder mehrere wiederum mit dem System kommunizieren. Solche Anwendungsdetails werden von einer Ausführungsform zur nächsten stark abweichen und sollen die beanspruchte Erfindung nicht einschränken.
  • Die Rasterizer-basierte Rendering-Engine kann unter Verwendung einer beliebigen Anzahl von bekannten und/oder benutzerspezifischen Techniken und bekannter und/oder benutzerspezifischer Architektur implementiert werden, so dass typische Rasterisierungsprozesse ausgeführt werden können. Jedoch ist der Rasterizer, zusätzlich zu solcher herkömmlichen/benutzerspezifischen Funktionalität und Architektur, ferner mit der Prozesspfad-Auswahlvorrichtung programmiert und/oder anderweitig ausgelegt, welche in einer Ausführungsform für die Beurteilung ausgelegt ist, welche Teile der Arbeitslast (falls überhaupt) mit Operationen mit relativ hoher Bitanzahl assoziiert sind und welche Teile der Arbeitslast mit Operationen mit relativ niedrigerer Bitanzahl assoziiert sind, und dann für die Bereitstellung dieser Teile der Arbeitslast an den entsprechenden Prozesspfad des Rasterizers. Der Schwellenwert der Bitanzahl kann beispielsweise ein konfigurierbarer Parameter sein, welcher durch den Benutzer festgelegt wird, oder kann auf einen vorbestimmten Wert festgelegt werden, welcher für eine gegebene Anwendung geeignet ist. Die Prozesspfad-Auswahlvorrichtung wird unter Bezugnahme auf 2 erläutert.
  • 2 veranschaulicht eine Prozesspfad-Auswahlvorrichtung des in 1 gezeigten Systems, welche gemäß einer Ausführungsform der vorliegenden Erfindung ausgelegt ist. Wie zu sehen ist, empfängt die Vorrichtung eine Arbeitslast in Form von einem oder mehreren polygonalen Primitiven und verarbeitet jedes durch die Vorrichtungsmodule, welche ein Bounding-Box-Modul, ein Dreiecktranslationsmodul, ein Kantengleichungsmodul und ein Begrenzungsrechenmodul umfassen. Die Ausgabe vom Begrenzungsrechenmodul wird dann einem der Rasterizer-Prozesspfade bereitgestellt (langsam oder schnell, in diesem beispielhaften Fall). Die Ausgabe des Rasterisierungsprozesses kann, unabhängig vom ausgewählten Pfad, der Anzeigevorrichtung (oder einer anderen geeigneten Ausgabevorrichtung, wie beispielsweise Speicher oder Drucker) bereitgestellt werden. Wie ferner erkannt werden wird, können andere Ausführungsformen verschiedene Grade von Integration umfassen, und das dargestellte Ausführungsbeispiel wurde zur Vereinfachung der Beschreibung ausgewählt. Das polygonale Primitiv, welches in diesem Ausführungsbeispiel empfangen wird, kann beispielsweise ein Dreieck sein, aber es könnte jede andere polygonale Form aufweisen, welche in zwei oder mehrere Dreiecke unterteilt werden kann. In jedem Fall kann jedes empfangene Dreieck dann durch die Vorrichtung verarbeitet werden, wie nun unter weiterer Bezugnahme auf 3 erläutert wird.
  • Das Bounding-Box-Modul ist programmiert oder anderweitig ausgelegt, um die Bounding-Box des Dreiecks zu berechnen 301, und das Dreiecktranslationsmodul ist programmiert oder anderweitig ausgelegt, um das Dreieck aus dem dreidimensionalen Bereich in den zweidimensionalen Bereich zu translatieren 303. Zur weiteren Erläuterung werden die folgenden Notationen angenommen: Gegeben die Anzahl N, ist Bits(N) die Anzahl der erforderlichen Bits, um N zu repräsentieren; N.i ist die Anzahl der erforderlichen Bits, um den ganzzahligen Teil von N zu repräsentieren; und N.f ist die Anzahl der erforderlichen Bits, um den Bruchteil von N zu repräsentieren. Für eine gegebene Dreieckskante ist die Liniengleichung, die verwendet werden kann, von der Form Ax + By = C, und der Halbebenentest wird durch das Prädikat Ax + By ≥ C definiert, wobei A, B, C von der definierten Dreieckskante berechnet und x, y vom getesteten Stichprobenpunkt genommen werden. Die ganzzahligen Teile x.i und y.i sind von der Pixelausgerichteten Bounding-Box des Dreiecks (minX, minY → maxX, maxY) abhängig, wie bei 301 berechnet, und diese Werte können durch Translatieren des Koordinatensystems für dieses Dreieck bei 303 um (–minX, –minY) reduziert werden, wodurch der minimale Punkt der Bounding-Box effektiv zum Ursprung bewegt wird. Die minimalen und maximalen Werte der x- und y-Koordinaten definieren die Bounding-Box (bei 301), und die Translation des Dreiecks und Stichprobenpunkts ist um die minimalen Werte der Bounding-Box (bei 303), gemäß einer Ausführungsform.
  • Das Kantengleichungsmodul ist programmiert oder anderweitig ausgelegt, um die Kantengleichungen des Dreiecks abzuleiten 305. Wie zuvor erläutert, ist für eine gegebene Dreieckskante die Liniengleichung, die verwendet werden kann, von der Form Ax + By = C, und der Halbebenentest wird durch das Prädikat Ax + By ≥ C definiert, wobei A, B, C von der definierten Dreieckskante berechnet und x, y vom getesteten Stichprobenpunkt genommen werden. Gemäß einem Ausführungsbeispiel ist die gesuchte Begrenzung auf dem Wert von Bits(Ax + By). Man beachte, dass in dieser Gleichung A und B für eine gegebene Dreieckskante fest sind. Man beachte ebenfalls, dass die Bruchteile x.f und y.f von einer kleinen festen Menge genommen werden, abgeleitet aus dem Abtastungsschema des aktuellen Draw.
  • Das Begrenzungsrechenmodul ist programmiert oder anderweitig ausgelegt, um die Begrenzung der Bits zu berechnen 307, welche für jede Dreieckskante verwendet werden. Gemäß einem Ausführungsbeispiel kann die Begrenzung wie folgt formuliert werden: 1 + max(Bits(A.i) + Bits(maxX– minX), Bits(B.i) + Bits(maxY– minY)) + max(Bits(A.f) + max(Bits(x.f)), Bits(B.f) + max(Bits(y.f))) wobei sich die oberen Ausdrücke „max(Bits(A.i) + Bits(maxX – minX), Bits(B.i) + Bits(maxY – minY))” auf den ganzzahligen Teil und die unteren Ausdrücke „+ max(Bits(A.f) + max(Bits(x.f)), Bits(B.f) + max(Bits(y.f)))” auf den Bruchteil beziehen. Für jedes empfangene (oder von einer empfangenen polygonalen Form abgeleitete) Dreieck wird diese Begrenzung für alle drei Kanten dieses Dreiecks berechnet. Folglich wird jede Dreieckskante drei Begrenzungen aufweisen, welche jeweils die Anzahl von Bits identifizieren, die mit der Verarbeitung dieser Kante assoziiert sind.
  • Sobald die Begrenzung für alle drei Kanten eines gegebenen Dreiecks berechnet ist, ist das Begrenzungsrechenmodul (oder anderes Modul) ferner ausgelegt, um den maximalen Wert (BoundMax) zu identifizieren 309 und um zu bestimmen 311, ob die Begrenzung kleiner oder gleich dem gegebenen Bitoperationsschwellenwert (BitOpThreshold) ist, gemäß dem gezeigten Ausführungsbeispiel. Falls ja, kann der schnellere Verarbeitungspfad verwendet werden, wie bei 315 angegeben; andernfalls, falls die Begrenzung größer als der gegebene Bitoperationsschwellenwert ist, kann der langsamere Verarbeitungspfad verwendet werden, wie bei 313 angegeben. Falls die drei Kantenbegrenzungen beispielsweise jeweils 17, 21 und 20 Bit sind (wie bei einem gegebenen Dreieck in 307 berechnet), wäre der maximale Wert 21 Bit. In einem solchen beispielhaften Fall sind, falls der Bitoperationsschwellenwert 32 Bit beträgt, 21 Bit kleiner als oder gleich 32, und der schnelle Pfad (32-Bit-Operationen-Pfad) kann verwendet werden, um dieses Dreieck zu rastern. Falls der maximale Wert beispielsweise 33 Bit oder anderweitig größer als der Bitoperationsschwellenwert (z. B. 32 Bit) ist, dann kann der langsamere Pfad (40-Bit- oder 64-Bit-Operationen-Pfad) verwendet werden, um dieses Dreieck zu rastern. Wie im Lichte dieser Offenbarung anerkannt werden wird, bedeckt jedes Dreieck typischerweise mehrere Stichprobenpunkte auf dem Bildschirm, so dass Aktionen, welche einmal pro Dreieck passieren, weniger häufig auftreten als Aktionen, welche einmal pro Stichprobenpunkt passieren. Als solche sind diese Pro-Dreieck-Aktionen effizienter in Bezug auf die Leistung. Folglich können Aktionen bei 301, 303, 305, 307, 309 und 311 einmal pro Dreieck gemäß einer Ausführungsform durchgeführt werden und haben daher eine relativ geringe Auswirkung bezüglich zusätzlicher Verarbeitungszeit.
  • Wie im Lichte dieser Offenbarung anerkannt werden wird, können die hierin beschriebenen verschiedenen Funktionsmodule beispielsweise in einer beliebigen geeigneten Programmiersprache (z. B. C, C++, Objective-C, benutzerspezifische oder proprietäre Befehlssätze usw.) implementiert werden und auf einem oder mehreren maschinenlesbaren Medien kodiert werden, welche, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, eine polygonale Rasterisierung mit reduzierter Bitanzahl ausführen, wie hierin beschrieben. Andere Ausführungsformen können implementiert werden, beispielsweise mit Gate-Level-Logik oder einer anwendungsspezifischen integrierten Schaltung (Application Specific Integrated Circuit, ASIC) oder einem Chipsatz oder anderer solcher zweckgerichteten Logik oder einem Mikrocontroller mit Eingabe-/Ausgabefähigkeit (z. B. Eingänge zum Empfangen von Benutzereingaben und Ausgänge für die Anweisung anderer Komponenten) und einer Reihe von eingebetteten Routinen für die Ausführung der Grafikarbeitslastverarbeitung. Kurz gesagt, können die verschiedenen Funktionsmodule in Hardware, Software, Firmware oder einer Kombination davon implementiert werden, und eine beliebige solche Variation kann in Verbindung mit einem Schema zur polygonalen Rasterisierung mit reduzierter Bitanzahl verwendet werden, wie hierin beschrieben. Eine spezielle Ausführungsform ist als ein System-on-Chip implementiert, welches eine oder mehrere eingebettete Softwareroutinen und Verarbeitungshardware enthalten kann, einschließlich beispielsweise für die Ausführung einer polygonalen Rasterisierung mit reduzierter Bitanzahl. Eine weitere Ausführungsform ist als eine Grafikkarte implementiert. Eine weitere Ausführungsform kann als Software-Rasterizer implementiert werden.
  • Ein Rasterizer, welcher gemäß einer Ausführungsform ausgelegt ist, kann beispielsweise unter Verwendung von zwei einfachen synthetischen Tests erfasst werden. Der erste Test rastert eine große Menge von relativ kleinen Dreiecken, um die Verwendung des schnellen Prozesspfads (z. B. 32 Bit) zu veranlassen. Der zweite Test rastert eine identische Menge von Stichproben, welche von viel größeren Dreiecken bedeckt sind, die den schnellen Prozesspfad nicht verwenden können, da ihre Liniengleichungen große Koeffizienten aufweisen. Falls der zweite Test beispielsweise mehr Zeit für die Durchführung für einen Software-Rasterizer oder mehr Energie für einen Hardware-Rasterizer benötigt, dann zeigt dies die Verwendung eines Pfadauswahlprozesses für kleinere Dreiecke an, wie hierin bereitgestellt.
  • 4 veranschaulicht eine Bounding-Box um ein gegebenes Polygon und die gültigen Stichproben, welche gerastert werden sollen, gemäß einer Ausführungsform der vorliegenden Erfindung. Wie zu erkennen ist, ist das gegebene Polygon ein Dreieck. Die Bounding-Box, welche gemäß 301 berechnet ist, wird mit einer gestrichelten Linie gezeigt. Wie zuvor erläutert, definieren die minimalen und maximalen Werte der x- und y-Koordinaten die Bounding-Box (minX, minY → maxX, maxY). Wie ferner zu erkennen ist, können die Stichprobenpunkte, welche außerhalb der Bounding-Box fallen, trivialerweise zurückgewiesen werden, während Stichproben in der Box, welche als gültig betrachtet werden, Halbebenentests unterworfen werden können. 5 veranschaulicht ein beispielhaftes polygonales Primitiv, welches in Dreiecke, die gemäß einer Ausführungsform der vorliegenden Erfindung verarbeitet werden können, segmentiert werden kann. Wie zu erkennen ist, ist dieses bestimmte beispielhafte Primitiv in Dreiecke A bis E unterteilt. Jedes dieser Dreiecke kann durch einen Multipfad-Rasterizer verarbeitet werden, wie hierin beschrieben.
  • Zur weiteren Veranschaulichung wird das nachfolgende detaillierte Beispiel betrachtet. Angenommen, ein gegebenes Dreieck wird empfangen, welches eine einzelne Kante mit den folgenden Werten aufweist: A = 16.5, B = 3.125; maxX = 7, minX = 2; und maxY = 3, minY = 1.
  • Ferner wird angenommen, dass alle Stichproben in Pixelzentren sind (kein Multi-Sample-Anti-Aliasing). Um die Begrenzung für die einzelne Kante zu berechnen, ist dann: Bits(A.i) = Bits(16) = 5; Bits(A.f) = Bits(0.5) = 1; Bits(B.i) = Bits(3) = 2; Bits(B.f) = Bits(0.125) = 3; Bits(maxX – minX) = Bits(5) = 3; Bits(maxY – minY)) = Bits(2) = 2; max(Bits(x.f)) = Bits(0.5) = 1; und max(Bits(y.f)) = Bits(0.5) = 1.
  • Folglich kann die Begrenzung dann berechnet werden als: 1 + max(5 + 3, 2 + 2) + max(1 + 1, 3 + 1) = 13 Bit. Wie zuvor erläutert, kann diese Begrenzung für jede Kante jedes Dreiecks berechnet werden, und der maximale Wert wird genommen, gemäß einer Ausführungsform. Der maximale Wert kann dann mit dem Bitschwellenwert verglichen werden, um zu bestimmen, ob dieses bestimmte Dreieck auf dem schnellen Pfad (oder dem langsamen Pfad) verarbeitet werden kann. In einem allgemeineren Sinne kann die Bestimmung verwendet werden, um einen von mehreren verfügbaren Verarbeitungspfaden zu identifizieren (z. B. schnelle/langsame Pfade; verschlüsselte/unverschlüsselte Pfade; processor_1/processor_2-Pfade usw.).
  • Beispielhaftes System
  • 6 veranschaulicht ein beispielhaftes System 600, welches eine polygonale Rasterisierung mit reduzierter Bitanzahl, wie hierin beschrieben, ausführen kann, gemäß einigen Ausführungsformen. In einigen Ausführungsformen kann das System 600 ein Mediensystem sein, obwohl das System 600 nicht auf diesen Kontext beschränkt ist. Beispielsweise kann das System 600 in einen Personal Computer (PC), einen Laptop-Computer, einen Ultra-Laptop-Computer, ein Tablet, ein Touchpad, einen tragbaren Computer, einen Handheld-Computer, einen Palmtop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Mobiltelefon/PDA-Kombination, einen Fernseher, eine Smart-Vorrichtung (z. B. Smartphone, Smart-Tablet oder Smart-TV), eine mobile Internetvorrichtung (Mobile Internet Device, MID), eine Nachrichtenübermittlungsvorrichtung, eine Datenkommunikationsvorrichtung, eine Set-Top-Box, eine Spielkonsole oder andere solche Rechenumgebungen integriert werden, welche Rasterisierungsoperationen durchführen können.
  • In einigen Ausführungsformen umfasst das System 600 eine Plattform 602, welche mit einer Anzeige 620 gekoppelt ist. Die Plattform 602 kann Inhalt von einer Inhaltsvorrichtung empfangen, wie beispielsweise Inhaltsdienstvorrichtung(en) 630 oder Inhaltszustellungsvorrichtung(en) 640 oder anderen ähnlichen Inhaltsquellen. Ein Navigationscontroller 650, welcher ein oder mehrere Navigationsmerkmale umfasst, kann beispielsweise zum Zusammenwirken mit der Plattform 602 und/oder Anzeige 620 verwendet werden. Jede dieser beispielhaften Komponenten wird detaillierter unten beschrieben.
  • In einigen Ausführungsformen kann die Plattform 602 eine beliebige Kombination von einem Chipsatz 605, Prozessor 610, Speicher 612, Speicher 614, Grafikuntersystem 615, Anwendungen 616 und/oder Funkvorrichtung 618 bereitstellen. Der Chipsatz 605 kann die Kommunikation zwischen Prozessor 610, Speicher 612, Speicher 614, Grafikuntersystem 615, Anwendungen 616 und/oder Funkvorrichtung 618 bereitstellen. Beispielsweise kann der Chipsatz 605 einen Speicheradapter (nicht dargestellt) umfassen, welcher die Kommunikation mit dem Speicher 614 bereitstellen kann.
  • Der Prozessor 610 kann beispielsweise als Complex Instruction Set Computer(CISC)- oder Reduced Instruction Set Computer(RISC)-Prozessoren, x86-Befehlssatz-kompatible Prozessoren, Mehrkern- oder beliebiger anderer Mikroprozessor oder zentrale Verarbeitungseinheit (Central Processing Unit, CPU) implementiert werden. In einigen Ausführungsformen kann der Prozessor 610 Doppelkernprozessor(en), mobile Doppelkernprozessor(en) und so weiter umfassen. Der Speicher 612 kann beispielsweise als eine flüchtige Speichervorrichtung implementiert werden, wie beispielsweise, ohne darauf beschränkt zu sein, ein Direktzugriffsspeicher (Random Access Memory, RAM), dynamischer Direktzugriffsspeicher (Dynamic Random Access Memory, DRAM) oder statisches RAM (SRAM). Der Speicher 614 kann beispielsweise als eine nicht-flüchtige Speichervorrichtung implementiert werden, wie beispielsweise, ohne darauf beschränkt zu sein, ein Magnetplattenlaufwerk, optisches Plattenlaufwerk, Bandlaufwerk, eine interne Speichervorrichtung, eine angeschlossene Speichervorrichtung, Flash-Speicher, batteriegestütztes SDRAM (synchrones DRAM) und/oder eine netzzugängliche Speichervorrichtung. In einigen Ausführungsformen kann der Speicher 614 Technologie zum Erhöhen der Speicherleistung oder erhöhten Schutz für wertvolle digitale Medien umfassen, wenn beispielsweise mehrere Festplattenlaufwerke enthalten sind.
  • Das Grafikuntersystem 615 kann das Verarbeiten von Bildern ausführen, wie beispielsweise Standbild oder Video zur Anzeige. Das Grafikuntersystem 615 kann beispielsweise eine Grafikverarbeitungseinheit (Graphics Processing Unit, GPU) oder eine visuelle Verarbeitungseinheit (Visual Processing Unit, VPU) sein. Eine analoge oder digitale Schnittstelle kann zum kommunikativen Koppeln des Grafikuntersystems 615 und der Anzeige 620 verwendet werden. Beispielsweise kann die Schnittstelle ein beliebiges von einem High-Definition Multimedia Interface (HDMI), DisplayPort, drahtlosen HDMI und/oder drahtlose HD-kompatible Techniken sein. Das Grafikuntersystem 615 könnte in den Prozessor 610 oder Chipsatz 605 integriert sein. Das Grafikuntersystem 615 könnte eine eigenständige Karte sein, welche kommunikativ mit dem Chipsatz 605 gekoppelt ist. Die hierin beschriebenen Grafik- und/oder Videoverarbeitungstechniken (einschließlich Rasterisierung usw.) können in verschiedenen Hardwarearchitekturen implementiert sein. Beispielsweise kann die Funktionalität der polygonalen Rasterisierung mit reduzierter Bitanzahl in einem Grafik- oder Videochipsatz integriert sein. Alternativ kann ein diskreter Prozessor zur polygonalen Rasterisierung mit reduzierter Bitanzahl verwendet werden. In noch einer weiteren Ausführungsform können die Grafik- und/oder Videofunktionen, einschließlich polygonaler Rasterisierung mit reduzierter Bitanzahl, durch einen Mehrzweckprozessor implementiert werden, einschließlich eines Multikernprozessors.
  • Die Funkvorrichtung 618 kann eine oder mehrere Funkvorrichtungen umfassen, welche Signale unter Verwendung verschiedener geeigneter drahtloser Kommunikationstechniken übertragen und empfangen können. Solche Techniken können Kommunikation über ein oder mehrere drahtlose Netze beinhalten. Beispielhafte drahtlose Netze umfassen (ohne darauf beschränkt zu sein) drahtlose lokale Netze (Wireless Local Area Networks, WLANs), drahtlose persönliche Netze (Wireless Personal Area Networks, WPANs), drahtlose regionale Netze (Wireless Metropolitan Area Networks, WMANs), mobile Netze und Satellitennetze. Bei der Kommunikation über solche Netze kann die Funkvorrichtung 618 gemäß einem oder mehrerer anwendbarer Standards in einer beliebigen Version arbeiten.
  • In einigen Ausführungsformen kann die Anzeige 620 eine(n) beliebige(n) fernsehgerät- oder computerartige(n) Monitor oder Anzeige umfassen. Die Anzeige 620 kann beispielsweise einen Flüssigkristallanzeige(Liquid Crystal Display, LCD)-Bildschirm, eine elektrophoretische Anzeige (Electrophoretic Display, EPD, oder Liquid Paper Display), Flachbildschirmanzeige, Berührungsbildschirmanzeige, fernsehgerätartige Vorrichtung und/oder ein Fernsehgerät umfassen. Die Anzeige 620 kann digital und/oder analog sein. In einigen Ausführungsformen kann die Anzeige 620 eine holografische oder dreidimensionale Anzeige sein. Die Anzeige 620 kann ebenfalls eine transparente Oberfläche sein, welche eine visuelle Projektion empfangen kann. Solche Projektionen können verschiedene Formen von Informationen, Bildern und/oder Objekten übermitteln. Beispielsweise können solche Projektionen ein visuelles Overlay für eine Anwendung für mobile erweiterte Realität (Mobile Augmented Reality, MAR) sein. Unter der Steuerung von einer oder mehreren Softwareanwendungen 616 kann die Plattform 602 eine Benutzerschnittstelle 622 auf der Anzeige 620 anzeigen.
  • In einigen Ausführungsformen können Inhaltsdienstvorrichtung(en) 630 von einem beliebigen nationalen, internationalen und/oder unabhängigen Service gehostet werden und folglich für Plattform 602 beispielsweise über das Internet oder ein anderes Netz zugänglich sein. Inhaltsdienstvorrichtung(en) 630 können mit der Plattform 602 und/oder der Anzeige 620 gekoppelt sein. Plattform 602 und/oder Inhaltsdienstvorrichtung(en) 630 können mit einem Netz 660 gekoppelt sein, um Medieninformationen zum oder vom Netz 660 zu kommunizieren (z. B. senden und/oder empfangen). Inhaltszustellungsvorrichtung(en) 640 können ebenfalls mit der Plattform 602 und/oder der Anzeige 620 gekoppelt sein. In einigen Ausführungsformen können Inhaltsdienstvorrichtung(en) 630 eine Kabelfernsehbox, Personal Computer, Netz, Telefon, internetfähige Vorrichtungen oder Geräte sein, welche digitale Informationen und/oder Inhalte liefern können, und andere ähnliche Vorrichtungen, welche Inhalte unidirektional oder bidirektional zwischen Inhaltsanbietern und Plattform 602 und/oder Anzeige 620 über das Netz 660 oder direkt kommunizieren können. Es ist zu erkennen, dass der Inhalt unidirektional und/oder bidirektional zu oder von einer beliebigen der Komponenten im System 600 und einem Inhaltsanbieter über das Netz 660 kommuniziert werden kann. Beispiele für Inhalte können beliebige Medieninformationen umfassen, einschließlich beispielsweise Video, Musik, Grafiken, Text, medizinischer und Spielinformationen und so weiter.
  • Inhaltsdienstvorrichtung(en) 630 empfangen Inhalte, wie beispielsweise Kabelfernsehprogrammierung, einschließlich Medieninformationen, digitalen Informationen und/oder anderen Inhalten. Beispiele für Inhaltsanbieter können beliebige Kabel- oder Satellitenfernsehen- oder Funkvorrichtungs- oder Internet-Inhaltsanbieter umfassen. Die bereitgestellten Beispiele sollen die beanspruchte Erfindung nicht einschränken. In einigen Ausführungsformen kann die Plattform 602 Steuersignale vom Navigationscontroller 650 empfangen, welcher ein oder mehrere Navigationsmerkmale aufweist. Die Navigationsmerkmale von Controller 650 können beispielsweise zum Zusammenwirken mit der Benutzerschnittstelle 622 verwendet werden. In einigen Ausführungsformen kann der Navigationscontroller 650 eine Zeigevorrichtung sein, welche eine Computerhardwarekomponente (speziell Human Interface Device) sein kann, die es einem Benutzer ermöglicht, räumliche (z. B. kontinuierliche und mehrdimensionale) Daten in einen Computer einzugeben. Viele Systeme, wie beispielsweise grafische Benutzerschnittstellen (Graphical User Interfaces, GUIs) und Fernsehgeräte und Monitore, ermöglichen dem Benutzer das Steuern und Bereitstellen von Daten für den Computer oder das Fernsehgerät unter Verwendung körperlicher Gesten.
  • Bewegungen der Navigationsmerkmale des Controllers 650 können auf einer Anzeige (z. B. Anzeige 620) durch Bewegungen eines Zeigers, Cursors, Fokusrings oder andere visuelle Indikatoren wiederholt werden, welche auf der Anzeige angezeigt werden. Beispielsweise können die Navigationsmerkmale, welche sich auf dem Navigationscontroller 650 befinden, unter der Steuerung von Softwareanwendungen 716 in virtuelle Navigationsmerkmale abgebildet werden, welche beispielsweise auf der Benutzerschnittstelle 622 angezeigt werden. In einigen Ausführungsformen ist der Controller 650 möglicherweise keine separate Komponente, sondern kann in die Plattform 602 und/oder die Anzeige 620 integriert sein. Die Ausführungsformen sind jedoch nicht auf die Elemente oder in dem Kontext beschränkt, welche hierin gezeigt oder beschrieben sind, wie erkannt werden wird.
  • In einigen Ausführungsformen können Treiber (nicht gezeigt) beispielsweise Technologie umfassen, welche es Benutzern ermöglicht, die Plattform 602 wie ein Fernsehgerät sofort mit dem Druck auf eine Taste nach dem anfänglichen Hochfahren ein- und auszuschalten, wenn aktiviert. Die Programmlogik kann es der Plattform 602 ermöglichen, Inhalte an Medienadapter oder andere Inhaltsdienstvorrichtung(en) 630 oder Inhaltszustellungsvorrichtung(en) 640 zu streamen, wenn die Plattform „ausgeschaltet” ist. Darüber hinaus kann der Chipsatz 605 Hardware- und/oder Softwareunterstützung beispielsweise für 5.1-Surround-Sound-Audio und/oder High-Definition-7.1-Surround-Sound-Audio umfassen. Treiber können einen Grafiktreiber für integrierte Grafikplattformen umfassen. In einigen Ausführungsformen kann der Grafiktreiber eine PCI(Peripheral Component Interconnect)-Express-Grafikkarte umfassen.
  • In verschiedenen Ausführungsformen kann eine beliebige der einen oder mehreren Komponenten, welche im System 600 gezeigt werden, integriert sein. Beispielsweise können die Plattform 602 und Inhaltsdienstvorrichtung(en) 630 integriert sein, oder Plattform 602 und Inhaltszustellungsvorrichtung(en) 640 können integriert sein, oder Plattform 602, Inhaltsdienstvorrichtung(en) 630 und Inhaltszustellungsvorrichtung(en) 640 können beispielsweise integriert sein. In verschiedenen Ausführungsformen können die Plattform 602 und die Anzeige 620 eine integrierte Einheit sein. Die Anzeige 620 und Inhaltsdienstvorrichtung(en) 630 können integriert sein, oder die Anzeige 620 und Inhaltszustellungsvorrichtung(en) 640 können beispielsweise integriert sein. Diese Beispiele sollen die beanspruchte Erfindung nicht einschränken.
  • In verschiedenen Ausführungsformen kann das System 600 als drahtloses System, als drahtgebundenes System oder als Kombination von beiden implementiert sein. Bei der Implementierung als drahtloses System kann das System 600 Komponenten und Schnittstellen umfassen, welche zur Kommunikation über ein drahtloses gemeinsam benutztes Medium geeignet sind, wie beispielsweise eine(n) oder mehrere Antennen, Sender, Empfänger, Transceiver, Verstärker, Filter, Steuerlogik und so weiter. Ein Beispiel für drahtlose, gemeinsam benutzte Medien kann Teile eines drahtlosen Spektrums umfassen, wie beispielsweise das HF-Spektrum und so weiter. Bei der Implementierung als drahtgebundenes System kann das System 600 Komponenten und Schnittstellen umfassen, welche zur Kommunikation über drahtgebundene Kommunikationsmedien geeignet sind, wie beispielsweise Eingabe/Ausgabe(E/A)-Adapter, physische Steckverbinder zum Verbinden des E/A-Adapters mit einem entsprechenden drahtgebundenen Kommunikationsmedium, einer Netzschnittstellenkarte (Network Interface Card, NIC), einem Festplattencontroller, Videocontroller, Audiocontroller und so weiter. Beispiele für drahtgebundene Kommunikationsmedien können einen Draht, ein Kabel, Metallanschlüsse, eine gedruckte Leiterplatte (Printed Circuit Board, PCB), eine Rückwandplatine, ein Koppelnetz, ein Halbleitermaterial, einen verdrillten Draht, ein Koaxialkabel, Glasfaser und so weiter umfassen.
  • Die Plattform 602 kann einen oder mehrere logische oder physikalische Kanäle zum Kommunizieren von Informationen aufbauen. Die Informationen können Medieninformationen und Steuerinformationen umfassen. Medieninformationen können sich auf beliebige Daten beziehen, welche Inhalte repräsentieren, die für einen Benutzer bestimmt sind. Beispiele für Inhalte können beispielsweise Daten aus einem Gespräch, einer Videokonferenz, einem Streaming-Video, E-Mail- oder Textnachrichten, einer Voicemail-Nachricht, alphanumerischen Symbolen, Grafiken, Bild, Video, Text und so weiter umfassen. Steuerinformationen können sich auf beliebige Daten beziehen, welche Befehle, Anweisungen oder Steuerwörter repräsentieren, die für ein automatisiertes System bestimmt sind. Beispielsweise können Steuerinformationen verwendet werden, um Medieninformationen durch ein System zu leiten oder einen Knoten anzuweisen, die Medieninformationen in einer vorbestimmten Art und Weise zu verarbeiten (z. B. unter Verwendung von Techniken zur polygonalen Rasterisierung mit reduzierter Bitanzahl, wie hierin beschrieben). Die Ausführungsformen sind jedoch nicht auf die Elemente oder in dem Kontext beschränkt, welche in 6 gezeigt oder beschrieben sind.
  • Wie oben beschrieben, kann das System 600 in verschiedenen physikalischen Stilen oder Formfaktoren ausgeführt sein. 7 veranschaulicht Ausführungsformen einer Vorrichtung mit einem kleinen Formfaktor 700, in der das System 600 ausgeführt werden kann. In einigen Ausführungsformen kann die Vorrichtung 700 beispielsweise als eine mobile Rechenvorrichtung mit drahtlosen Fähigkeiten implementiert werden. Eine mobile Rechenvorrichtung kann sich auf eine beliebige Vorrichtung mit einem Verarbeitungssystem und einer mobilen Energiequelle oder -versorgung, wie beispielsweise einer oder mehreren Batterien, beziehen.
  • Wie vorstehend beschrieben, können Beispiele einer mobilen Rechenvorrichtung einen Personal Computer (PC), einen Laptop-Computer, einen Ultra-Laptop-Computer, ein Tablet, ein Touchpad, einen tragbaren Computer, einen Handheld-Computer, einen Palmtop-Computer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Mobiltelefon/PDA-Kombination, einen Fernseher, eine Smart-Vorrichtung (z. B. Smartphone, Smart-Tablet oder Smart-TV), eine mobile Internetvorrichtung (Mobile Internet Device, MID), eine Nachrichtenübermittlungsvorrichtung, eine Datenkommunikationsvorrichtung und so weiter umfassen.
  • Beispiele einer mobilen Rechenvorrichtung können außerdem Computer umfassen, welche so ausgelegt sind, dass sie von einer Person getragen werden, wie beispielsweise einen Handgelenk-Computer, einen Finger-Computer, einen Ring-Computer, einen Brillen-Computer, einen Gürtelclip-Computer, einen Armband-Computer, Schuh-Computer, Kleidungs-Computer und andere tragbare Computer. In einigen Ausführungsformen kann die mobile Rechenvorrichtung beispielsweise als ein Smartphone implementiert sein, welches zum Ausführen von Computeranwendungen sowie Sprachkommunikation und/oder Datenkommunikation imstande ist. Es kann erkannt werden, dass, obwohl einige Ausführungsformen als ein Beispiel mit einer mobilen Rechenvorrichtung beschrieben werden können, welche als ein Smartphone implementiert ist, andere Ausführungsformen ebenfalls unter Verwendung von anderen drahtlosen mobilen Rechenvorrichtungen implementiert sein können. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
  • Wie in 7 gezeigt, kann die Vorrichtung 700 ein Gehäuse 702, eine Anzeige 704, eine Eingabe/Ausgabe(E/A)-Vorrichtung 706 und eine Antenne 708 umfassen. Die Vorrichtung 700 kann außerdem Navigationsmerkmale 712 umfassen. Die Anzeige 704 kann eine beliebige geeignete Anzeigeeinheit zum Anzeigen von entsprechenden Informationen für eine mobile Rechenvorrichtung umfassen. Die E/A-Vorrichtung 706 kann eine beliebige geeignete E/A-Vorrichtung zum Eingeben von Informationen in eine mobile Rechenvorrichtung umfassen. Beispiele für die E/A-Vorrichtung 706 können eine alphanumerische Tastatur, einen Nummernblock, ein Touchpad, Eingabetasten, Schaltflächen, Schalter, Kippschalter, Mikrofone, Lautsprecher, Spracherkennungsvorrichtungen und -software und so weiter umfassen. Informationen können ebenfalls durch ein Mikrofon in die Vorrichtung 700 eingegeben werden. Solche Informationen können durch eine Spracherkennungsvorrichtung digitalisiert werden. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
  • Verschiedene Ausführungsformen können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beiden implementiert sein. Beispiele für Hardwareelemente können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (z. B. Transistoren, Widerstände, Kondensatoren, Induktoren und so weiter), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (Application Specific Integrated Circuit, ASIC), programmierbare logische Vorrichtungen (Programmable Logic Device, PLD), digitale Signalprozessoren (Digital Signal Processor, DSP), feldprogrammierbare Gate-Arrays (FPGA), Logikgatter, Register, Halbleitervorrichtungen, Chips, Mikrochips, Chipsätze und so weiter umfassen. Beispiele für Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Subroutinen, Funktionen, Verfahren, Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen (Application Program Interface, API), Befehlssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine beliebige Kombination davon umfassen. Ob Hardwareelemente und/oder Softwareelemente verwendet werden, kann von einer Ausführungsform zur nächsten gemäß einer beliebigen Anzahl von Faktoren variieren, wie beispielsweise gewünschte Rechengeschwindigkeit, Leistungspegel, Wärmetoleranzen, Verarbeitungszyklusbudget, Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten und andere Design- und Leistungsbeschränkungen.
  • Einige Ausführungsformen können beispielsweise unter Verwendung eines maschinenlesbaren Mediums oder Gegenstands implementiert sein, welches bzw. welcher eine Anweisung oder einen Satz Anweisungen speichern kann, die bei Ausführung durch eine Maschine bewirken können, dass die Maschine ein Verfahren und/oder Operationen gemäß einer Ausführungsform der vorliegenden Erfindung durchführt. Solch eine Maschine kann beispielsweise eine beliebige geeignete Verarbeitungsplattform, Rechenplattform, Rechenvorrichtung, Verarbeitungsvorrichtung, ein beliebiges geeignetes Rechensystem, Verarbeitungssystem, einen beliebigen geeigneten Computer, Prozessor oder dergleichen enthalten und kann unter Verwendung einer beliebigen geeigneten Kombination von Hardware und Software implementiert sein. Das maschinenlesbare Medium bzw. der maschinenlesbare Gegenstand kann beispielsweise einen beliebigen geeigneten Typ von Speichereinheit, Speichervorrichtung, Speichergegenstand, Speichermedium, Ablagevorrichtung, Ablagegegenstand, Ablagemedium und/oder Ablageeinheit umfassen, beispielsweise Speicher, entfernbare oder nicht entfernbare Medien, löschbare oder nicht löschbare Medien, beschreibbare oder wiederbeschreibbare Medien, digitale oder analoge Medien, Festplatte, Floppy-Disk, Compact Disk Read Only Memory (CD-ROM), Compact Disk Recordable (CD-R), Compact Disk Rewriteable (CD-RW), optische Platte, magnetische Medien, magnetooptische Medien, entfernbare Speicherkarten oder -platten, verschiedene Arten von Digital Versatile Disk (DVD), ein Band, eine Kassette oder dergleichen umfassen. Die Anweisungen können eine beliebige geeignete Art von ausführbarem Code umfassen, welcher unter Verwendung einer beliebigen geeigneten High-Level-, Low-Level-, objektorientierten, visuellen, kompilierten und/oder interpretierten Programmiersprache implementiert ist.
  • Sofern nicht ausdrücklich anders angegeben, kann erkannt werden, dass sich Begriffe wie beispielsweise „Verarbeiten”, „Rechnen”, „Berechnen”, „Bestimmen” oder dergleichen auf die Aktion und/oder Prozesse eines Computers oder Rechensystems oder einer ähnlichen elektronischen Rechenvorrichtung beziehen, welche Daten, die als physikalische Größen (z. B. elektronisch) innerhalb der Register und/oder Speicher des Rechensystems repräsentiert sind, manipuliert und/oder in andere Daten transformiert, die in ähnlicher Weise als physikalische Größen innerhalb der Speicher, Register oder anderer derartiger Informationsablage-, Übertragungs- oder Anzeigeeinheiten des Rechensystems repräsentiert sind. Die Ausführungsformen sind in diesem Kontext nicht beschränkt.
  • Zahlreiche Ausführungsformen werden ersichtlich werden, und hierin beschriebene Merkmale können in einer beliebigen Anzahl von Auslegungen kombiniert werden. Ein Ausführungsbeispiel der vorliegenden Erfindung stellt eine Vorrichtung bereit, welche ein Bounding-Box-Modul umfasst, das ausgelegt ist, um eine Bounding-Box eines gegebenen polygonalen Primitivs zu berechnen, das eine dreidimensionale Szene beschreibt, wobei das polygonale Primitiv als ein oder mehrere Dreiecke repräsentiert ist. Die Vorrichtung umfasst ferner ein Translationsmodul, welches ausgelegt ist, um jedes Dreieck aus dem dreidimensionalen Bereich in den zweidimensionalen Bereich zu translatieren, und ein Kantengleichungsmodul, welches ausgelegt ist, um Kantengleichungen jedes Dreiecks abzuleiten. Die Vorrichtung umfasst ferner ein Begrenzungsrechenmodul, welches ausgelegt ist, um eine Begrenzung für Bits zu berechnen, die für jede Kante jedes Dreiecks verwendet werden, und eine Kantenbegrenzung mit einem maximalen Wert für jedes Dreieck zu identifizieren. In einigen Fällen, falls der maximale Kantenbegrenzungswert für ein gegebenes Dreieck kleiner als oder gleich einem gegebenen Schwellenwert ist, wird das Dreieck dann auf einem ersten Prozesspfad verarbeitet, und falls der maximale Kantenbegrenzungswert für das gegebene Dreieck größer als der gegebene Schwellenwert ist, dann wird das Dreieck auf einem zweiten Prozesspfad verarbeitet, welcher sich vom ersten Prozesspfad unterscheidet. In einigen Fällen ist der erste Prozesspfad ausgelegt, um N-Bit-Rasterisierungsoperationen zu verarbeiten, und der zweite Prozesspfad ist ausgelegt, um M-Bit-Rasterisierungsoperationen zu verarbeiten. In einigen speziellen Fällen ist das Begrenzungsrechenmodul beispielsweise ferner ausgelegt, um zu bestimmen, ob der maximale Kantenbegrenzungswert für jedes Dreieck kleiner als oder gleich dem gegebenen Bitoperationsschwellenwert ist. In einem solchen Fall, falls das Begrenzungsrechenmodul bestimmt, dass der maximale Kantenbegrenzungswert für ein gegebenes Dreieck kleiner als oder gleich dem gegebenen Bitoperationsschwellenwert ist, wird das Dreieck dann auf einem Prozesspfad mit niedrigerer Bitanzahl verarbeitet. In einem anderen solchen Fall, falls das Begrenzungsrechenmodul bestimmt, dass der maximale Kantenbegrenzungswert für ein gegebenes Dreieck größer als der gegebene Bitoperationsschwellenwert ist, wird das Dreieck dann auf einem Prozesspfad mit höherer Bitanzahl verarbeitet. In einigen Fällen ist das Begrenzungsrechenmodul ausgelegt, um die Begrenzung für die verwendeten Bits unter Verwendung der folgenden Formel zu berechnen: 1 + max(Bits(A.i) + Bits(maxX – minX), Bits(B.i) + Bits(maxY – minY)) + max(Bits(A.f) + max(Bits(x.f)), Bits(B.f) + max(Bits(y.f))), wobei sich die Ausdrücke „max(Bits(A.i) + Bits(maxX – minX), Bits(B.i) + Bits(maxY – minY))” auf einen ganzzahligen Teil der Begrenzung einer gegebenen Dreieckskante und die Ausdrücke „+ max(Bits(A.f) + max(Bits(x.f)), Bits(B.f) + max(Bits(y.f)))” auf einen Bruchteil der Begrenzung dieser Dreieckskante beziehen. In einigen Fällen ist die Vorrichtung ein Rasterizer. Zahlreiche Variationen werden offensichtlich sein. Beispielsweise stellt eine weitere Ausführungsform ein Medienverarbeitungssystem, umfassend die Vorrichtung, bereit, wie verschiedentlich in diesem Absatz definiert. Eine weitere Ausführungsform der vorliegenden Erfindung stellt ein Mobilrechensystem, umfassend das Medienverarbeitungssystem, bereit. Eine weitere Ausführungsform stellt ein System-on-Chip (oder einen Chipsatz), umfassend die Vorrichtung, bereit, wie verschiedentlich in diesem Absatz definiert.
  • Eine weitere Ausführungsform der vorliegenden Erfindung stellt ein Rasterizer-System bereit. Das System umfasst ein Bounding-Box-Modul, welches ausgelegt ist, um eine Bounding-Box eines gegebenen polygonalen Primitivs zu berechnen, das eine dreidimensionale Szene beschreibt, wobei das polygonale Primitiv als ein oder mehrere Dreiecke repräsentiert ist. Das System umfasst ferner ein Translationsmodul, welches ausgelegt ist, um jedes Dreieck aus dem dreidimensionalen Bereich in den zweidimensionalen Bereich zu translatieren, und ein Kantengleichungsmodul, welches ausgelegt ist, um Kantengleichungen jedes Dreiecks abzuleiten. Das System umfasst ferner ein Begrenzungsrechenmodul, welches ausgelegt ist, um eine Begrenzung für Bits zu berechnen, die für jede Kante jedes Dreiecks verwendet werden, und eine Kantenbegrenzung mit einem maximalen Wert für jedes Dreieck zu identifizieren. Falls der maximale Kantenbegrenzungswert für ein gegebenes Dreieck kleiner als oder gleich einem Bitoperationsschwellenwert ist, dann wird das Dreieck auf einem Prozesspfad mit niedrigerer Bitanzahl verarbeitet, und falls der maximale Kantenbegrenzungswert für ein gegebenes Dreieck größer als der Bitoperationsschwellenwert ist, dann wird das Dreieck auf einem Prozesspfad mit höherer Bitanzahl verarbeitet. In einigen speziellen solcher beispielhaften Fälle ist der Bitoperationsschwellenwert 32 Bit. In einigen Fällen ist das Begrenzungsrechenmodul ausgelegt, um die Begrenzung für die verwendeten Bits unter Verwendung der folgenden Formel zu berechnen: 1 + max(Bits(A.i) + Bits(maxX – minX), Bits(B.i) + Bits(maxY – minY)) + max(Bits(A.f) + max(Bits(x.f)), Bits(B.f) + max(Bits(y.f))), wobei sich die Ausdrücke „max(Bits(A.i) + Bits(maxX – minX), Bits(B.i) + Bits(maxY – minY))” auf einen ganzzahligen Teil der Begrenzung einer gegebenen Dreieckskante und die Ausdrücke „+ max(Bits(A.f) + max(Bits(x.f)), Bits(B.f) + max(Bits(y.f)))” auf einen Bruchteil der Begrenzung dieser Dreieckskante beziehen. Eine weitere verwandte Ausführungsform stellt ein Mobilrechensystem, welches das Rasterizer-System umfasst, bereit.
  • Eine weitere Ausführungsform der vorliegenden Erfindung stellt ein Verfahren bereit. Das Verfahren umfasst das Berechnen einer Bounding-Box eines gegebenen polygonalen Primitivs, welches eine dreidimensionale Szene beschreibt, wobei das polygonale Primitiv als ein oder mehrere Dreiecke repräsentiert ist. Das Verfahren umfasst ferner das Translatieren jedes Dreiecks aus dem dreidimensionalen Bereich in den zweidimensionalen Bereich und das Ableiten von Kantengleichungen jedes Dreiecks. Das Verfahren umfasst ferner das Berechnen einer Begrenzung für Bits, welche für jede Kante jedes Dreiecks verwendet werden, und das Identifizieren einer Kantenbegrenzung mit einem maximalen Wert für jedes Dreieck. In einigen Fällen, falls der maximale Kantenbegrenzungswert für ein gegebenes Dreieck kleiner als oder gleich einem gegebenen Schwellenwert ist, wird das Dreieck dann auf einem ersten Prozesspfad verarbeitet, und falls der maximale Kantenbegrenzungswert für das gegebene Dreieck größer als der gegebene Schwellenwert ist, dann wird das Dreieck auf einem zweiten Prozesspfad verarbeitet, welcher sich vom ersten Prozesspfad unterscheidet. In einem solchen Fall ist der erste Prozesspfad ausgelegt, um N-Bit-Rasterisierungsoperationen zu verarbeiten, und der zweite Prozesspfad ist ausgelegt, um M-Bit-Rasterisierungsoperationen zu verarbeiten. In einigen speziellen Fällen umfasst das Verfahren beispielsweise das Bestimmen, ob der maximale Kantenbegrenzungswert für jedes Dreieck kleiner als oder gleich einem gegebenen Bitoperationsschwellenwert ist. In einigen speziellen beispielhaften Fällen, falls der maximale Kantenbegrenzungswert für ein gegebenes Dreieck kleiner als oder gleich einem gegebenen Bitoperationsschwellenwert ist, umfasst das Verfahren dann ferner das Verarbeiten dieses Dreiecks auf einem Prozesspfad mit niedrigerer Bitanzahl. In einem solchen speziellen beispielhaften Fall, falls der maximale Kantenbegrenzungswert für das gegebene Dreieck größer als der gegebene Bitoperationsschwellenwert ist, umfasst das Verfahren dann ferner das Verarbeiten dieses Dreiecks auf einem Prozesspfad mit höherer Bitanzahl.
  • Die vorhergehende Beschreibung beispielhafter Ausführungsformen der Erfindung wurde zum Zwecke der Veranschaulichung und Beschreibung präsentiert. Sie ist nicht dazu beabsichtigt, erschöpfend zu sein oder die Erfindung auf die genauen offenbarten Formen zu beschränken. Viele Modifikationen und Variationen sind im Lichte dieser Offenbarung möglich. Es ist beabsichtigt, dass der Schutzbereich der Erfindung nicht durch diese detaillierte Beschreibung beschränkt wird, sondern durch die hieran beigefügten Ansprüche.

Claims (21)

  1. Vorrichtung, umfassend: ein Bounding-Box-Modul, welches ausgelegt ist, um eine Bounding-Box eines gegebenen polygonalen Primitivs zu berechnen, das eine dreidimensionale Szene beschreibt, wobei das polygonale Primitiv als ein oder mehrere Dreiecke repräsentiert ist; ein Translationsmodul, welches ausgelegt ist, um jedes Dreieck aus dem dreidimensionalen Bereich in den zweidimensionalen Bereich zu translatieren; ein Kantengleichungsmodul, welches ausgelegt ist, um Kantengleichungen jedes Dreiecks abzuleiten; und ein Begrenzungsrechenmodul, welches ausgelegt ist, um eine Begrenzung für Bits zu berechnen, die für jede Kante jedes Dreiecks verwendet werden, und eine Kantenbegrenzung mit einem maximalen Wert für jedes Dreieck zu identifizieren.
  2. Vorrichtung nach Anspruch 1, wobei das Begrenzungsrechenmodul ferner ausgelegt ist, um zu bestimmen, ob der maximale Kantenbegrenzungswert für jedes Dreieck kleiner als oder gleich dem gegebenen Bitoperationsschwellenwert ist.
  3. Vorrichtung nach Anspruch 3, wobei, falls das Begrenzungsrechenmodul bestimmt, dass der maximale Kantenbegrenzungswert für ein gegebenes Dreieck kleiner als oder gleich dem gegebenen Bitoperationsschwellenwert ist, das Dreieck dann auf einem Prozesspfad mit niedrigerer Bitanzahl verarbeitet wird.
  4. Vorrichtung nach Anspruch 3, wobei, falls das Begrenzungsrechenmodul bestimmt, dass der maximale Kantenbegrenzungswert für ein gegebenes Dreieck größer als der gegebene Bitoperationsschwellenwert ist, das Dreieck dann auf einem Prozesspfad mit höherer Bitanzahl verarbeitet wird.
  5. Vorrichtung nach Anspruch 1, wobei, falls der maximale Kantenbegrenzungswert für ein gegebenes Dreieck kleiner als oder gleich einem gegebenen Schwellenwert ist, das Dreieck dann auf einem ersten Prozesspfad verarbeitet wird, und falls der maximale Kantenbegrenzungswert für das gegebene Dreieck größer als der gegebene Schwellenwert ist, das Dreieck dann auf einem zweiten Prozesspfad verarbeitet wird, welcher sich vom ersten Prozesspfad unterscheidet.
  6. Vorrichtung nach Anspruch 5, wobei der erste Prozesspfad ausgelegt ist, um N-Bit-Rasterisierungsoperationen zu verarbeiten, und der zweite Prozesspfad ausgelegt ist, um M-Bit-Rasterisierungsoperationen zu verarbeiten.
  7. Vorrichtung nach Anspruch 1, wobei das Begrenzungsrechenmodul ausgelegt ist, um die Begrenzung für die verwendeten Bits unter Verwendung der folgenden Formel zu berechnen: 1 + max(Bits(A.i) + Bits(maxX– minX), Bits(B.i) + Bits(maxY– minY)) + max(Bits(A.f) + max(Bits(x.f)), Bits(B.f) + max(Bits(y.f))) wobei sich die Ausdrücke „max(Bits(A.i) + Bits(maxX – minX), Bits(B.i) + Bits(maxY – minY))” auf einen ganzzahligen Teil der Begrenzung einer gegebenen Dreieckskante und die Ausdrücke „+ max(Bits(A.f) + max(Bits(x.f)), Bits(B.f) + max(Bits(y.f)))” auf einen Bruchteil der Begrenzung dieser Dreieckskante beziehen.
  8. Medienverarbeitungssystem, umfassend die Vorrichtung nach einem beliebigen der Ansprüche 1 bis 7.
  9. Mobilrechensystem, umfassend das Medienverarbeitungssystem nach Anspruch 8.
  10. System-on-Chip, umfassend die Vorrichtung nach einem beliebigen der Ansprüche 1 bis 7.
  11. Vorrichtung nach Anspruch 1, wobei die Vorrichtung ein Rasterizer ist.
  12. Rasterizer-System, umfassend: ein Bounding-Box-Modul, welches ausgelegt ist, um eine Bounding-Box eines gegebenen polygonalen Primitivs zu berechnen, das eine dreidimensionale Szene beschreibt, wobei das polygonale Primitiv als ein oder mehrere Dreiecke repräsentiert ist; ein Translationsmodul, welches ausgelegt ist, um jedes Dreieck aus dem dreidimensionalen Bereich in den zweidimensionalen Bereich zu translatieren; ein Kantengleichungsmodul, welches ausgelegt ist, um Kantengleichungen jedes Dreiecks abzuleiten; und ein Begrenzungsrechenmodul, welches ausgelegt ist, um eine Begrenzung für Bits zu berechnen, die für jede Kante jedes Dreiecks verwendet werden, und eine Kantenbegrenzung mit einem maximalen Wert für jedes Dreieck zu identifizieren; wobei, falls der maximale Kantenbegrenzungswert für ein gegebenes Dreieck kleiner als oder gleich einem Bitoperationsschwellenwert ist, das Dreieck dann auf einem Prozesspfad mit niedrigerer Bitanzahl verarbeitet wird; und wobei, falls der maximale Kantenbegrenzungswert für ein gegebenes Dreieck größer als der Bitoperationsschwellenwert ist, das Dreieck dann auf einem Prozesspfad mit höherer Bitanzahl verarbeitet wird.
  13. System nach Anspruch 12, wobei der Bitoperationsschwellenwert 32 Bit ist.
  14. System nach Anspruch 12, wobei das Begrenzungsrechenmodul ausgelegt ist, um die Begrenzung für die verwendeten Bits unter Verwendung der folgenden Formel zu berechnen: 1 + max(Bits(A.i) + Bits(maxX – minX), Bits(B.i) + Bits(maxY– minY)) + max(Bits(A.f) + max(Bits(x.f)), Bits(B.f) + max(Bits(y.f))) wobei sich die Ausdrücke „max(Bits(A.i) + Bits(maxX – minX), Bits(B.i) + Bits(maxY– minY))” auf einen ganzzahligen Teil der Begrenzung einer gegebenen Dreieckskante und die Ausdrücke „+ max(Bits(A.f) + max(Bits(x.f)), Bits(B.f) + max(Bits(y.f)))” auf einen Bruchteil der Begrenzung dieser Dreieckskante beziehen.
  15. Mobilrechenvorrichtung, umfassend das System nach einem beliebigen der Ansprüche 12 bis 14.
  16. Verfahren, umfassend: Berechnen einer Bounding-Box eines gegebenen polygonalen Primitivs, welches eine dreidimensionale Szene beschreibt, wobei das polygonale Primitiv als ein oder mehrere Dreiecke repräsentiert ist; Translatieren jedes Dreieck aus dem dreidimensionalen Bereich in den zweidimensionalen Bereich; und Ableiten von Kantengleichungen jedes Dreiecks; Berechnen einer Begrenzung für Bits, welche für jede Kante jedes Dreiecks verwendet werden; und Identifizieren einer Kantenbegrenzung mit einem maximalen Wert für jedes Dreieck.
  17. Verfahren nach Anspruch 16, ferner umfassend das Bestimmen, ob der maximale Kantenbegrenzungswert für jedes Dreieck kleiner als oder gleich einem gegebenen Bitoperationsschwellenwert ist.
  18. Verfahren nach Anspruch 16, wobei, falls der maximale Kantenbegrenzungswert für ein gegebenes Dreieck kleiner als oder gleich einem gegebenen Bitoperationsschwellenwert ist, das Verfahren dann ferner das Verarbeiten dieses Dreiecks auf einem Prozesspfad mit niedrigerer Bitanzahl umfasst.
  19. Verfahren nach Anspruch 18, wobei, falls der maximale Kantenbegrenzungswert für das gegebene Dreieck größer als der gegebene Bitoperationsschwellenwert ist, das Verfahren dann ferner das Verarbeiten dieses Dreiecks auf einem Prozesspfad mit höherer Bitanzahl umfasst.
  20. Verfahren nach Anspruch 16, wobei, falls der maximale Kantenbegrenzungswert für ein gegebenes Dreieck kleiner als oder gleich einem gegebenen Schwellenwert ist, das Dreieck dann auf einem ersten Prozesspfad verarbeitet wird, und falls der maximale Kantenbegrenzungswert für das gegebene Dreieck größer als der gegebene Schwellenwert ist, das Dreieck dann auf einem zweiten Prozesspfad verarbeitet wird, welcher sich vom ersten Prozesspfad unterscheidet.
  21. Verfahren nach Anspruch 20, wobei der erste Prozesspfad ausgelegt ist, um N-Bit-Rasterisierungsoperationen zu verarbeiten, und der zweite Prozesspfad ausgelegt ist, um M-Bit-Rasterisierungsoperationen zu verarbeiten.
DE112013004920.1T 2012-10-08 2013-09-23 Polygonrasterisierung mit reduzierter Bitanzahl Withdrawn DE112013004920T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/647,071 US9218679B2 (en) 2012-10-08 2012-10-08 Reduced bitcount polygon rasterization
US13/647,071 2012-10-08
PCT/US2013/061166 WO2014058604A1 (en) 2012-10-08 2013-09-23 Reduced bitcount polygon rasterization

Publications (1)

Publication Number Publication Date
DE112013004920T5 true DE112013004920T5 (de) 2015-06-18

Family

ID=50432326

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013004920.1T Withdrawn DE112013004920T5 (de) 2012-10-08 2013-09-23 Polygonrasterisierung mit reduzierter Bitanzahl

Country Status (5)

Country Link
US (1) US9218679B2 (de)
KR (1) KR101700174B1 (de)
CN (1) CN104603844B (de)
DE (1) DE112013004920T5 (de)
WO (1) WO2014058604A1 (de)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9633458B2 (en) * 2012-01-23 2017-04-25 Nvidia Corporation Method and system for reducing a polygon bounding box
US20140184633A1 (en) * 2012-12-31 2014-07-03 Nvidia Corporation Conservative bounding region rasterization
AU2014403813A1 (en) * 2014-08-20 2017-02-02 Landmark Graphics Corporation Optimizing computer hardware resource utilization when processing variable precision data
US10037620B2 (en) 2015-05-29 2018-07-31 Nvidia Corporation Piecewise linear irregular rasterization
US10037621B2 (en) * 2015-06-18 2018-07-31 Intel Corporation Hierarchical quadrant based coverage testing for rasterization
US10062206B2 (en) * 2016-08-30 2018-08-28 Advanced Micro Devices, Inc. Parallel micropolygon rasterizers

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6498607B1 (en) 1999-01-29 2002-12-24 Mitsubishi Electric Research Laboratories, Inc. Method for generating graphical object represented as surface elements
US6407736B1 (en) 1999-06-18 2002-06-18 Interval Research Corporation Deferred scanline conversion architecture
US6636218B1 (en) 2000-06-30 2003-10-21 Intel Corporation Title-based digital differential analyzer rasterization
US20030122850A1 (en) 2001-12-28 2003-07-03 Satyaki Koneru Method and apparatus for determining bins to be updated for polygons, including triangles
US6975317B2 (en) * 2002-03-12 2005-12-13 Sun Microsystems, Inc. Method for reduction of possible renderable graphics primitive shapes for rasterization
US6975318B2 (en) 2002-06-25 2005-12-13 Intel Corporation Polygon binning process for tile-based rendering
GB0307095D0 (en) * 2003-03-27 2003-04-30 Imagination Tech Ltd Improvements to a tiling system for 3d rendered graphics
US7362325B2 (en) * 2004-12-21 2008-04-22 Qualcomm Incorporated 2D/3D line rendering using 3D rasterization algorithms
US8928676B2 (en) * 2006-06-23 2015-01-06 Nvidia Corporation Method for parallel fine rasterization in a raster stage of a graphics pipeline
US9070213B2 (en) * 2006-07-26 2015-06-30 Nvidia Corporation Tile based precision rasterization in a graphics pipeline
US8390618B2 (en) 2008-03-03 2013-03-05 Intel Corporation Technique for improving ray tracing performance
US9633469B2 (en) * 2013-03-15 2017-04-25 Nvidia Corporation Conservative rasterization of primitives using an error term

Also Published As

Publication number Publication date
WO2014058604A1 (en) 2014-04-17
CN104603844B (zh) 2017-05-17
KR101700174B1 (ko) 2017-01-26
CN104603844A (zh) 2015-05-06
KR20150041101A (ko) 2015-04-15
US20140098084A1 (en) 2014-04-10
US9218679B2 (en) 2015-12-22

Similar Documents

Publication Publication Date Title
DE112013004920T5 (de) Polygonrasterisierung mit reduzierter Bitanzahl
DE102013018915A1 (de) Ein Ansatz zur Leistungsreduzierung in Gleitkommaoperationen
DE112017004246T5 (de) Cache- und komprimierungsinteroperabilität in einer grafikprozessorpipeline
DE112016006081T5 (de) Automatische Echtzeit-Fahrzeugkamerakalibrierung
DE102015002023B4 (de) Kompakte Tiefenebenendarstellung zum Sortieren letzter Architekturen
DE102015107869A1 (de) Vergabe von Primitiven an Primitiv-Blöcke
CN103810728A (zh) 用于将经修改的覆盖数据输入像素着色器的系统和方法
DE102020129800A1 (de) Interaktive segmentierung mit hoher wiedergabetreue für videodaten mit tief faltenden tessellationen und kontextsensitiven skip-verbindungen
DE102019120661A1 (de) Videoverfeinerungsmechanismus
DE102016109905A1 (de) Stückweise lineare unregelmäßige Rasterisierung
DE102013114373A1 (de) Konsistente Vertex-Einrastung für Rendering mit variabler Auflösung
DE112017003932T5 (de) Mechanismus zum Beschleunigen von Grafikarbeitslasten in einer Mehrkern-Datenverarbeitungsarchitektur
DE112016004109T5 (de) Echtzeit-mehrfach-fahrzeugdetektion und -tracking
DE112013003714T5 (de) Stochastische Tiefenpufferkompression mittels verallgemeinerter Ebenencodierung
DE102019127726A1 (de) Für fernarbeitsplatz-anwendungen geeignetes streaming individueller anwendungsfenster
DE102010048486A1 (de) Bildverarbeitungstechniken
DE102018128699A1 (de) Einstellen einer Winkelabtastrate während eines Renderings unter Verwendung von Blickinformationen
DE112009002383T5 (de) Grafikverarbeitung unter Verwendung von Culling auf Gruppen von Vertices
DE112017000864T5 (de) Strahlenkomprimierung für effizientes Verarbeiten von Grafikdaten bei Rechenvorrichtungen
DE112016005482T5 (de) Objektdetektion mit adaptiven Kanalmerkmalen
DE112013005204T5 (de) Verringern des mit Frequenzänderungen von Prozessoren verbundenen Aufwands
Aguilar-González et al. An FPGA 2D-convolution unit based on the CAPH language
DE112010005426T5 (de) Animationsanzeigevorrichtung
CN114359048A (zh) 图像的数据增强方法、装置、终端设备及存储介质
DE102014007023A1 (de) Bildeffektextraktion

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee