DE112009000180T5 - Verfahren, Vorrichtung und Computerprogrammprodukt für eine verbesserte Grafikperformance - Google Patents

Verfahren, Vorrichtung und Computerprogrammprodukt für eine verbesserte Grafikperformance Download PDF

Info

Publication number
DE112009000180T5
DE112009000180T5 DE112009000180T DE112009000180T DE112009000180T5 DE 112009000180 T5 DE112009000180 T5 DE 112009000180T5 DE 112009000180 T DE112009000180 T DE 112009000180T DE 112009000180 T DE112009000180 T DE 112009000180T DE 112009000180 T5 DE112009000180 T5 DE 112009000180T5
Authority
DE
Germany
Prior art keywords
culling
representation
base primitive
vertex
primitive
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.)
Ceased
Application number
DE112009000180T
Other languages
English (en)
Inventor
Jon Hasselgren
Jacob Munkberg
Petrik Clarberg
Tomas AKENINE-MÖLLER
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Swiftfoot Graphics AB
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from SE0800165A external-priority patent/SE532399C2/sv
Priority claimed from SE0801742A external-priority patent/SE0801742L/xx
Application filed by Swiftfoot Graphics AB filed Critical Swiftfoot Graphics AB
Publication of DE112009000180T5 publication Critical patent/DE112009000180T5/de
Ceased legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • G06T15/405Hidden part removal using Z-buffer
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/30Clipping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/24Indexing scheme for image data processing or generation, in general involving graphical user interfaces [GUIs]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)

Abstract

Verfahren zum Verbessern der Performance zum Erzeugen von digital dargestellten Grafiken, wobei das Verfahren Folgendes umfasst:
Empfangen einer ersten Darstellung eines Basisprimitivs,
Liefern eines ersten Satzes von Anweisungen, die mit einer Vertexpositionsbestimmung verknüpft sind,
Ausführen des Satzes von Anweisungen an der ersten Darstellung des Basisprimitivs unter Verwendung einer begrenzten Arithmetik zum Liefern einer zweiten Darstellung des Basisprimitivs, und
Unterziehen der zweiten Darstellung des Basisprimitivs einem Culling-Vorgang.

Description

  • Technisches Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft digital dargestellte Grafiken und insbesondere ein Verfahren, eine Vorrichtung und ein Computerprogrammprodukt zum Verbessern der Performance zum Erzeugen von digital dargestellten Grafiken.
  • Hintergrund der Erfindung
  • Digital dargestellte Grafiken, wie Computergrafiken, werden in der Performance laufend verbessert. In den 1980er und 1990er Jahren sind Anzeigeadapter für Computer und Spielkonsolen mit Grafikbeschleunigern erschienen, welche die zentrale Rechnereinheit (CPU) von der Grafikerzeugung entlasten. Anfänglich boten die Anzeigeadapter eine Beschleunigung für zweidimensionale Grafiken, aber schließlich umfassten diese auch eine Unterstützung für beschleunigte dreidimensionale Grafiken. Moderne Anzeigeadapter benutzen eine Rechnereinheit, die häufig als Grafikrechnereinheit (GPU) bezeichnet wird.
  • Aufgrund der Komplexität von dreidimensionalen Grafiken verwenden GPUs heutzutage einen signifikanten Anteil ihrer Rechnerleistung zum Ausführen von Berechnungen, die sich auf dreidimensionale Grafiken beziehen.
  • Ein fortbestehendes Problem von Anzeigeadaptern ist die Performance. Es gibt ständig neue Anwendungen und Spiele, die höhere Bildfrequenzen (gerenderte Bildschirmanzeigen pro Sekunde), höhere Auflösungen und eine höhere Anzeigequalität erfordern, was zu der Notwendigkeit führt, dass jedes Anzeigebild in einer kürzestmöglichen Zeit gerendert werden sollte. Mit anderen Worten ausgedrückt, es ist immer wichtig, die Performance zu erhöhen.
  • Ein bekannter Weg zur Erhöhung der Performance ist die Erhöhung der Rechnerleistung der GPUs durch Ermöglichen von höheren Taktungen, Befehlsverknüpfungen (Pipeline) oder Ausschöpfen paralleler Berechnungen. Dies erzeugt jedoch oft mehr Wärme, was zu einer höheren Leistungsaufnahme und zu einem höheren Lüftergeräusch zum Kühlen der GPU führt. Leistungsaufnahme und Wärme sind die Hauptbeschränkungen und der Bottleneck für mobile Vorrichtungen. Ferner gibt es Beschränkungen für die Taktgeschwindigkeit jeder GPU.
  • Demzufolge besteht immer noch ein Problem mit Unzulänglichkeiten bei der Verbesserung der Performance bei digital dargestellten Grafiken.
  • Zusammenfassung der Erfindung
  • Im Hinblick auf das oben Gesagte ist es ein Ziel der Erfindung, die oben diskutierten Probleme zu lösen oder wenigstens zu reduzieren.
  • Allgemein werden die Ziele durch die beigefügten unabhängigen Patentansprüche gelöst.
  • Gemäß einem ersten Aspekt wird die vorliegende Erfindung durch ein Verfahren zum Verbessern der Permformance zur Erzeugung von digital dargestellten Grafiken realisiert. Das Verfahren umfasst Folgendes: Empfangen einer ersten Darstellung eines Basisprimitivs; Liefern eines Satzes von Anweisungen, die mit einer Vertexpositionsbestimmung verknüpft sind; Ausführen des Satzes von Anweisungen an der ersten Darstellung des Basisprimitivs unter Verwendung einer beschränkten Arithmetik zum Liefern einer zweiten Darstellung des Basisprimitivs; und Unterziehen der zweiten Darstellung des Basisprimitivs einem Culling-Vorgang. Das Ausführen von Culling an den Basisprimitiven ist insofern von Vorteil, dass Basisprimitive und Darstellungen von Basisprimitiven am Anfang der Grafikpipeline ausgeschieden werden können, was zu Performancesteigerungen führt. Ferner werden eine Vielzahl von Oberflächen, die in dem vollständig gerenderten Bild nicht sichtbar sind, in dem Vorgang nicht weitergeleitet, was auch zu Performacesteigerungen führt. In anderen Worten ausgedrückt, das Durchführen eines Culling an vollständigen Basisprimitiven ist insofern von Vorteil, dass eine Tessellation von der Mehrzahl der nicht sichtbaren Oberflächen vermieden wird, was zu Performancesteigerungen führt.
  • In Computergrafiken umfasst ein Vertex Daten, die zu einem Ort im Raum gehören. Beispielsweise kann ein Vertex alle Daten aufweisen, die zu einer Ecke eines Primitivs gehören. Diese Vertizes sind nicht nur mit drei räumlichen Koordinaten verknüpft, sondern auch mit anderen grafischen Informationen, die notwendig sind, um Objekte richtig zu rendern, wie z. B. Farben, Reflexionseigenschaften, Oberflächenbeschaffenheiten und Flächennormale.
  • Ein verbundener Satz von Vertizes kann benutzt werden, um ein Primitiv zu definieren. Ein Primitiv kann z. B. ein Dreieck, ein Viereck, ein Polygon oder eine andere geometrische Form sein, oder alternativ kann ein Primitiv z. B. eine Oberfläche oder ein Punkt im Raum sein. Ein Primitiv, das als ein Dreieck dargestellt ist, besitzt z. B. drei Vertizes und ein Viereck besitzt vier Vertizes.
  • Das Verfahren kann Folgendes umfassen: Auswählen eines ersten Vertizes aus der ersten Darstellung des Basisprimitivs, Ausführen eines Satzes von Anweisungen, die mit einer Vertexpositionsbestimmung verknüpft sind, auf einer ersten Darstellung des wenigstens einen Vertex, um eine zweite Darstellung des wenigstens einen Vertex zu liefern, und Unterziehen der zweiten Darstellung des wenigstens einen Vertex einem Culling-Vorgang, wobei eine Ausgabe des Culling-Vorgangs eine Entscheidung umfasst, den wenigstens einen Vertex zu cullen, oder eine Entscheidung umfasst, den wenigstens einen Vertex nicht zu cullen, und im Fall der Ausgabe, das der Culling-Vorgang eine Entscheidung umfasst, den wenigstens einen Vertex zu cullen, Ausführen von Folgendem: Das Empfangen der ersten Darstellung des Basisprimitivs, das Liefern eines Satzes von Anweisungen, die mit einer Vertexpositionsbestimmung verknüpft sind, das Ausführen des Satzes von Anweisungen auf der ersten Darstellung des Basisprimitivs unter Verwendung einer beschränkten Arithmetik zum Liefern einer zweiten Darstellung des Basisprimitivs, und das Unterziehen der zweiten Darstellung des Basisprimitivs einem Culling-Vorgang. Dies ist von Vorteil, da es zu Performancesteigerungen führt. Wenn beispielsweise die Ausgabe des Culling-Vorgangs eine Entscheidung ist, den wenigstens einen Vertex nicht zu cullen, führt dies zu einem Verfahren, das weniger kapazitätsverbrauchend ist im Vergleich zu einem Verfahren gemäß dem ersten Aspekt.
  • Das Verfahren kann ein Bestimmen eines Begrenzungsvolumens, welches die zweite Darstellung des Basisprimitivs einschließt, und ein Unterziehen des Begrenzungsvolumens einem Culling-Vorgang umfassen. Dies ist von Vorteil insofern, dass keine vorbestimmten Grenzen vorgesehen werden müssen und das Begrenzungsvolumen automatisch bestimmt wird.
  • Das Verfahren kann einen Tessellation-Vorgang umfassen, wobei der Tessellation-Vorgang auf der Ausgabe des Culling-Vorgangs beruht. Somit wird das Culling vor der Tessellation ausgeführt. Das Ausführen der Tessellation nach dem Culling führt zu Leistungserhöhungen, da weniger Basisprimitive tesselliert werden, und ist daher von Vorteil. Der Culling-Vorgang könnte der Culling-Vorgang sein, dem die zweite Darstellung unterzogen wird, und/oder der Culling-Vorgang, dem das Begrenzungsvolumen unterzogen wird.
  • Das Verfahren kann umfassen, dass der Culling-Vorgang ersetzbar ist. Dies ist von Vorteil insofern, dass der Culling-Vorgang beispielsweise durch einen Benutzer geändert werden kann. Das Merkmal, dass der Culling-Vorgang ersetzbar ist, bezieht sich auf alle Ausführungsformen des ersten Aspekts.
  • Das Verfahren kann umfassen, dass die beschränkte Arithmetik wenigstens eines aus folgender Gruppe ist: Taylor-Arithmetik, Intervall-Arithmetik und affine Arithmetik. Dies ist insofern von Vorteil, dass das Verfahren flexibel ist und verschiedene Arten von beschränkten Arithmetiken unterstützt und nicht auf eine Art von beschränkter Arithmetik beschränkt ist. Es ist bevorzugt, Taylor-Modelle zu benutzen, da gekrümmte Flächen und Unterteilungsschemata, die bei einer Tessellation häufig benutzt werden, oft auf Polynomen beruhen. Ein anderer Vorteil ist, dass Polynomberechnungen durch Taylor-Modelle exakt dargestellt werden können (vorausgesetzt, dass sie eine genügend hohe Ordnung aufweisen), was zu sehr engen Grenzen führt.
  • Das Verfahren kann umfassen, dass die Bestimmung des Begrenzungsvolumens ferner ein Berechnen eines Minimum und eines Maximum der zweiten Darstellung umfasst. Dies ist insofern von Vorteil, dass es ein schneller Weg ist, um das Begrenzungsvolumen zu bestimmen.
  • Das Verfahren kann umfassen, dass die zweite Darstellung eine Positionsgrenze und/oder eine Normalgrenze ist. Die Positionsgrenze und die Normalgrenze können benutzt werden, um z. B. die Position oder den Bereich der ersten Darstellung des Basisprimitivs zu bestimmen. Ein weiterer Vorteil ist, dass die Positionsgrenze und Normalgrenze automatisch bestimmt werden.
  • Das Verfahren kann umfassen, dass das Ausführen des Satzes von Anweisungen ferner Folgendes umfasst: Ableiten eines zweiten Satzes von Anweisungen aus dem ersten Satz von Anweisungen, die mit der Vertexpositionsbestimmung verknüpft sind, und Ausführen des zweiten Satzes von Anweisungen zum Liefern einer Normalgrenze. Dies ist insoweit vorteilhaft, dass der zweite Satz von Anweisungen automatisch abgeleitet wird und ferner die Normalgrenze automatisch berechnet wird.
  • Das Verfahren kann umfassen, dass das Aussetzen des Begrenzungsvolumens dem Culling-Vorgang ferner ein Ausführen von wenigstens einem des Folgenden umfasst: Aussetzen des Begrenzungsvolumens einem View Frustum Culling; Aussetzen des Begrenzungsvolumens einem Back-Face Culling und Aussetzen des Begrenzungsvolumens einem Occlusion Culling. Ein Vorteil von diesem ist, dass viele verschiedene Culling-Techniken einsetzbar sind.
  • Das Verfahren kann umfassen, dass das Aussetzen der zweiten Darstellung (die eine Positionsgrenze oder Normalgrenze ist) einem Culling-Vorgang ferner das Ausführen von wenigstens einem von Folgendem umfasst: Aussetzen der Positionsgrenze einem View Frustum Culling, Aussetzen der Positionsgrenze oder Normalgrenze einem Back-Face Culling und Aussetzen der Positionsgrenze einem Occlusion Culling. Ein Vorteil davon ist, dass viele verschiedene Culling-Techniken einsetzbar sind.
  • Das Verfahren kann umfassen, dass eine Ausgabe des Culling-Vorgangs eine Entscheidung zum Verwerfen des Basisprimitivs und/oder einen Tessellationsfaktor umfassen kann. Dies ist von Vorteil, weil das Verwerfen eines Basisprimitivs impliziert, dass ein Basisprimitiv weniger zu rendern ist, was die Performance erhöht. Der Tessellationsfaktor kann anzeigen, dass das Basisprimitiv nicht tesselliert werden muss, was zu einer Performancesteigerung führt.
  • Das Verfahren kann ein Ausführen eines Tessellation-Vorgangs umfassen für den Fall, dass das Ergebnis des Culling-Vorgangs einen Tessellationsfaktor umfasst. Dies ist insofern von Vorteil, dass die Performance für jedes Basisprimitiv erhöht wird, das nicht tesselliert oder weniger tesselliert wird. Wenn die Ausgabe des Culling-Vorgangs eine Entscheidung ist, das Basisprimitiv zu verwerfen, wird kein Tessellation-Vorgang durchgeführt.
  • Gemäß einem zweiten Aspekt wird die Erfindung durch eine Vorrichtung realisiert, die dafür geeignet ist, digital dargestellte Grafiken zu erzeugen, und eine Schaltung zum Verbessern der Performance zur Erzeugung von digital dargestellten Grafiken umfasst. Diese Schaltung ist eingerichtet zum: Empfangen einer ersten Darstellung eines Basisprimitivs; Liefern eines Satzes von Anweisungen, die mit einer Vertexpositionsbestimmung verknüpft sind; Ausführen des Satzes von Anweisungen an der ersten Darstellung des Basisprimitivs unter Verwendung einer begrenzten Arithmetik zum Liefern einer zweiten Darstellung des Basisprimitivs; und Unterziehen der zweiten Darstellung des Basisprimitivs einem Culling-Vorgang.
  • Es ist zu beachten, dass der zweite Aspekt der Erfindung mit einer beliebigen Kombination von Merkmalen, die beliebigen Merkmalen des ersten Aspekts der Erfindung entsprechen, ausgeführt werden kann.
  • Die Vorteile des ersten Aspekts treffen gleichermaßen auf den zweiten Aspekt zu.
  • Gemäß einem dritten Aspekt wird die Erfindung durch ein Computerprogrammprodukt realisiert, welches einen Computerprogrammcode umfasst, der auf einem computerlesbaren Medium gespeichert ist und der, wenn er auf einem Prozessor ausgeführt wird, ein Verfahren gemäß dem ersten Aspekt der Erfindung ausführt. Die Vorteile des ersten Aspekts treffen gleichermaßen für den dritten Aspekt der Erfindung zu.
  • Weitere Ziele, Merkmale und Vorteile der vorliegenden Erfindung werden aus der nachfolgenden detaillierten Beschreibung, aus den beigefügten Ansprüchen, sowie aus den Zeichnungen deutlich.
  • Allgemein sind alle Begriffe, die in den Ansprüchen verwendet werden, entsprechend ihrer gewöhnlichen Bedeutung auf dem technischen Gebiet zu interpretieren sofern nicht ausdrücklich etwas Anderes hier definiert wird. Alle Bezugnahmen auf „ein, eine oder der, die oder das [Element, Vorrichtung, Komponente, Einrichtung, Schritt, usw.]” sind weit als Bezug auf wenigstens ein Beispiel des Elements, der Vorrichtung, der Komponente, der Einrichtung, dem Schritt usw. zu interpretieren sofern nicht ausdrücklich etwas anderes behauptet ist. Die Schritte jeglicher Verfahren, die hier offenbart werden, müssen nicht in exakt der offenbarten Abfolge ausgeführt werden, sofern dies nicht ausdrücklich behauptet ist.
  • Kurze Beschreibung der Zeichnungen
  • Weitere Merkmale und Vorteile der vorliegenden Erfindung werden aus der folgenden detaillierten Beschreibung einer gegenwärtig bevorzugten Ausführungsform mit Bezug auf die beigefügten Zeichnungen deutlich, in denen Folgendes dargestellt ist:
  • 1 ist ein Blockdiagramm, welches darstellt, wie verschiedene Einheiten in einem Anzeigeadapter gemäß dem Stand der Technik zusammenwirken.
  • 2a ist ein Blockdiagramm, welches darstellt, wie verschiedene Einheiten in einer Vorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung zusammenwirken können.
  • 2b ist ein Blockdiagramm, welches eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 2c ist ein Blockdiagramm, welches eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 2d ist ein Blockdiagramm, welches eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 2e ist ein Blockdiagramm, welches eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 2f ist ein Blockdiagramm, welches eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 2g ist ein Blockdiagramm, welches eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 2h ist ein Blockdiagramm, welches eine Ausführungsform der vorliegenden Erfindung darstellt.
  • 3a und 3b sind Ablaufdiagramme, welche Culling-Vorgänge von Basisprimitiven zeigen, die in der Vorrichtung der 2a bis 2d ausgeführt werden können.
  • 4 stellt schematisch Culling-Vorgänge von Basisprimitiven der 3a–b dar.
  • 5 zeigt eine Übersichtsarchitektur eines typischen Computers für allgemeine Zwecke, welcher die Vorrichtung der 2a–d enthält.
  • Detaillierte Beschreibung einer Ausführungsform
  • Die vorliegende Erfindung wird nun nachfolgend vollständig mit Bezug auf die beigefügten Zeichnungen beschrieben, in denen verschiedene Ausführungsformen der Erfindungen gezeigt sind. Diese Erfindung kann jedoch in vielen verschiedenen Formen ausgeführt werden und sollte nicht so ausgelegt werden, dass sie auf den Satz der nachfolgenden Ausführungsform eingeschränkt ist. Vielmehr werden diese Ausführungsformen im Wege eines Beispiels angegeben, so dass diese Offenbarung genau und vollständig wird und den Umfang der Erfindung den Fachleuten vollständig vermittelt. Gleiche Bezugszeichen bezeichnen durchgängig gleiche Elemente.
  • 1 ist ein Blockdiagramm, welches anzeigt, wie verschiedene Einheiten in einem herkömmlichen Anzeigeadapter, der einem Fachmann bekannt ist, miteinander zusammenwirken. Ein Anzeigeadapter gemäß dem Stand der Technik kann einen Tessellator 120, einen Vertex-Schattierer 130, eine Dreieckstraversaleinheit 140 und einen Fragmentschattierer 150 umfassen. Die Einheiten des Anzeigeadapters nach dem Stand der Technik sind dem Fachmann gut bekannt.
  • Die Eingabe 110 in den Tessellator 120 ist ein Basisprimitiv, welches ein Dreieck, ein Viereck oder eine andere geometrische Form sein kann. Tessellation impliziert, dass viele kleinere häufig verbundene Primitive erzeugt werden. Beispielsweise wird in dem Tessellator 120 ein Basisdreieck (d. h. das Basisprimitiv) in 100 × 100 kleinere, verbundene Dreiecke, die das Basisdreieck überdecken, tesselliert. Die Position der Vertizes dieser kleineren Dreiecke kann anschließend in der Vertexschattierereinheit 130 berechnet werden, so dass eine gekrümmte Oberfläche gebildet wird.
  • Verschiedene Arten von Tessellation existieren, z. B. eine uniforme Tessellation, eine fraktionelle Tessellation und eine adaptive Tessellation.
  • Die Vertexschattierereinheit 130 empfängt baryzentrische Koordinaten für jeden Vertex von dem Tessellator 120 und berechnet z. B. die Position p(u, v) des Vertex als eine Funktion der baryzentrischen Koordinaten (u, v).
  • Die Dreieckstraversaleinheit 140 ist dafür verantwortlich, Polygone wie durch einen verbundenen Kontroller angewiesen aufzubauen. Obgleich beliebige Polygone benutzt werden können, werden üblicherweise Dreiecke verwendet. Für jedes Polygon dividiert die Dreieckstraversaleinheit 140 das zu rendernde Polygon in eine oder mehrere Kacheln (tiles), wobei jede Kachel wenigstens zum Teil von dem Polygon überlappt wird. Im Allgemeinen ist eine Kachel eine Gruppe von Fragmenten. Eine Kachel ist ein zweidimensionales Rechteck, das eine Anzahl von Fragmenten enthält. Jedes dieser Fragmente entspricht einem Pixel und enthält alle Daten, die erforderlich sind, um das Pixel zu rendern und zu überprüfen, ob das Pixel auf dem Bildschirm gerendert werden sollte. Eine übliche Größe einer Kachel ist 8 × 8 Fragmente, obgleich beliebige Kachelgrößen im Umfang der Erfindung liegen.
  • Eine weitere wichtige Aufgabe der Dreieckstraversaleinheit 140 ist es, die Fragmente zu finden, die innerhalb des geometrischen Primitivs (z. B. Dreieck) gerendert werden. Dies kann durch verschiedene Techniken erfolgen, wobei die Techniken den Fachleuten bekannt sind.
  • Der Fragmentschattierer 150 fuhrt ein Fragmentschattiererprogramm für jedes Fragment, das durch diesen durchläuft, aus. Jedes dieser Fragmente entspricht einem Pixel und enthält Daten, die notwendig sind, um das Pixel zu rendern und zu überprüfen, ob das Pixel auf dem Bildschirm gerendert werden sollte. Die Fragmentdaten umfassen Rasterpositionen, Tiefe, Farbe, Texturkoordinaten, Schablone, Alpha (zum Mischen verwendet) usw. Für jedes Pixel können mehrere Fragmentsample existieren.
  • Die Fragmente werden weiter bearbeitet, um z. B. eine vorhergehend bestimmte Farbe mit Texturen zu kombinieren, sowie um Effekte wie z. B. Nebel hinzuzufügen und, wenn möglich, Fragmente zu identifizieren, die nicht gerendert werden müssen, d. h. Fragment-Culling.
  • Der Fragmentschattierer 150 kann ferner einen Tiefentest, einen Alpha-Test und ein Mischen durchführen, bevor die Fragmente in Zielpuffer geschrieben werden.
  • Die Ausgabe 150 von dem Anzeigeadapter nach dem Stand der Technik kann auf einer Anzeige angezeigt werden.
  • Es ist zu verstehen, dass von hier an die vorliegende Erfindung beschrieben wird.
  • Verschiedene Ausführungsformen einer Vorrichtung, die dafür eingerichtet ist, digital dargestellte Grafiken gemäß der Erfindung zu erzeugen, werden nachfolgend mit Bezug auf die 2 beschrieben. Die Vorrichtung umfasst eine Schaltung zum Verbessern der Performance zum Erzeugen von digital dargestellten Grafiken. Diese Vorrichtung kann als ein Anzeigeadapter ausgeführt werden und wird nachfolgend als ein Anzeigeadapter bezeichnet.
  • Die 2a ist ein Blockdiagramm, welches eine Ausführungsform eines Grafikadapters 205 gemäß der vorliegenden Erfindung darstellt. Der Anzeigeadapter 205 umfasst eine Schaltung zum Verbessern der Performance zur Erzeugung digital dargestellter Grafiken, die eine Basisprimitiv-Cullingeinheit 212 bildet.
  • Die Eingabe 210 der Basisprimitiv-Cullingeinheit 212 wird zuerst durch ein Basisprimitiv dargestellt. Ein geometrisches Primitiv auf dem Gebiet der Computergrafiken wird üblicherweise als atomare geometrische Objekte interpretiert, welche das System handhaben kann, z. B. Zeichnen oder Speichern. Alle anderen Grafikelemente werden aus diesen Primitiven aufgebaut.
  • Das Basisprimitiv ist eine geeignete geometrische Darstellung, die in viele kleinere geometrische Primitive, wie Dreiecke, tesselliert werden kann. Ein Basisprimitiv ist nicht tesselliert. Beispiele von Basisprimitiven sind Dreiecke, Vierecke, Linien, Kurven, Bézier-Oberflächen usw.
  • Polygone werden unter Verwendung eines verbundenen Satzes von Vertizes definiert. Ein Dreieck besitzt z. B. drei Vertizes und ein Viereck besitzt vier Vertizes. In Computergrafiken sind die Vertizes nicht nur mit drei räumlichen Koordinaten verknpüft, sonder auch mit anderen grafischen Informationen, die notwendig sind, um das Objekt richtig zu rendern, wie z. B. Farben, Reflexionseigenschaften, Texturen und Oberflächennormale.
  • Eine erste Darstellung von Basisprimitiven kann ein Satz von Attributen sein. Der Satz von Attributen kann z. B. eines aus der Gruppe sein, die Kontrollpunkt, Vertexposition, Normale, Texturkoordinate usw. umfasst. Beispielsweise kann ein Dreieck unter Verwendung von drei Vertexpositionen und ein vierseitiges Polygon unter Verwendung von vier Vertexpositionen beschrieben werden. Jeder Vertexposition können außerdem andere Attributen zugeordnet sein, wie Normale und Texturkoordinaten. Ein anderes Beispiel ist ein Bézier-Dreieck oder Patch, welches unter Verwendung eines Satzes von Vertexpositionen und Kontrollpunkten beschrieben werden kann.
  • In der Basisprimitiv-Cullingeinheit 212 wird ein Culling auf Basis von Primitiven oder von Darstellungen von Basisprimitiven durchgeführt. Die Ausgabe 222 aus der Basis-Cullingeinheit kann sein, dass das Basisprimitiv zu verwerfen ist. In einer anderen Ausführungsform kann eine Ausgabe 222 sein, dass ein Tesselllationfaktor erzeugt wird. Dieser Tessellationsfaktor kann auf einen Wert gesetzt werden, der anzeigt, dass das Basisprimitiv zu verwerfen ist. Alternativ kann der Tessellationsfaktor auf einen Wert gesetzt werden, der anzeigt, dass das Basisprimitiv nicht verworfen werden könnte. Ferner kann der Tessellationsfaktor auf einen Wert gesetzt werden, der anzeigt, dass das Basisprimitiv nicht zu tessellieren ist, grob zu tessellieren ist oder mit einer geringeren Rate zu tessellieren ist.
  • Die Details und Effekte des Basisprimitiv-Culling werden weiter in Verbindung mit den 3a und 3b unten beschrieben.
  • Die Ausgabe 224 von dem Anzeigeadapter 205 kann auf einer Anzeige angezeigt werden.
  • In einer anderen Ausführungsform (vgl. 2b) kann der Anzeigeadapter 225 eine Basisprimitiv-Cullingeinheit 212 und einen Tessellator 214 umfassen. Der Tessellator 214 kann von dem gleichen Typ sein wie der Tessellator 120, der mit Bezug auf 1 oben beschrieben wurde.
  • Die Basisprimitv-Cullingeinheit 212, die Eingabe 210 an die Basisprimitv-Cullingeinheit 212 und die Ausgabe 224 von dem Anzeigeadapter 205 wurden vorhergehend in Verbindung mit 2a beschrieben.
  • Wenn der Tessellator 214 aus der Basisprimitiv-Cullingeinheit 212 ein Basisprimitiv erhält und ein Tessellationsfaktor anzeigt, dass das Basisprimitiv nicht zu tessellieren ist, tesselliert der Tessellator das Basisprimitiv nicht. Wenn der Tessellator 214 von der Basisprimitiv-Cullingeinheit 212 ein Basisprimitiv empfangt, jedoch keinen Tessellationsfaktor empfängt, der anzeigt, dass das Basisprimitiv nicht zu tessellieren ist, tesselliert der Tessellator 214 das Basisprimitiv.
  • Die 2c ist ein Blockdiagramm, welches darstellt, wie verschiedene Einheiten in dem Anzeigeadapter 205 in einer Ausführungsform der vorliegenden Erfindung zusammenwirken können. Der Anzeigeadapter 205 umfasst eine Basisprimitv-Cullingeinheit 212, einen Tessellator 214, einen Vertexschattierer 216, eine Dreiecktraversaleinheit 218 und einen Fragmentenschattierer 220. Die Einheiten 214, 216, 218 und 220 können vom gleichen Typ sein, wie jene, die in Bezug auf 1 oben beschrieben wurden.
  • Die Basisprimitiv-Cullingeinheit 212, die Eingabe 210 an die Basisprimitiv-Cullingeinheit 212 und die Ausgabe 224 von dem Anzeigeadapter 205 wurden vorhergehend in Verbindung mit der 2a beschrieben.
  • In einer weiteren Ausführungsform (vgl. 2d) umfasst der Anzeigeadapter 205 eine Basisprimitiv-Cullingeinheit 212, einen Tessellator 214, einen Vertexschattierer 216, eine Dreiecktraversaleinheit 218, eine programmierbare Cullingeinheit (PCU) 226 und einen Fragmentenschattierer 220. Die Einheiten 214, 216, 218 und 220 können der gleiche oder ähnliche Typ sein, wie jene, die oben in Bezug auf 1 beschrieben wurden. Die Basisprimitiv-Cullingeinheit 212, die Eingabe 210 an die Basisprimitiv-Cullingeinheit 212 und die Ausgabe 224 von dem Basisadapter 205 wurden vorhergehend in Verbindung mit 2a beschrieben.
  • In der programmierbaren Cullingeinheit 226 wird ein Culling auf Kacheln entsprechend einem ersetzbaren Cullingprogramm ausgeführt, welches auch als ein ersetzbares Cullingmodul bekannt ist. Die Details dieses Cullingprogramms und die Effekte werden in mehr Details in der nicht veröffentlichten schwedischen Patentanmeldung SE0700162-1 beschrieben, deren Inhalt hierin im Wege der Bezugnahme aufgenommen wird.
  • Der Anzeigeadapter 205 der 2a kann ferner eine Basisprimitiv-Prüfeinheit 211 umfassen (siehe 2e). Die Basisprimitiv-Prüfeinheit 211 ist dafür eingerichtet, um zu überprüfen, ob wenigstens ein Vertex des Basisprimitivs nicht gecullt werden kann. Wenigstens ein Vertex von dem Basisprimitiv wird ausgewählt. Der wenigstens eine Vertex kann eines der Vertizes des Basisprimitivs oder der Mittelpunkt des Basisprimitivs sein. Wenn der wenigstens eine Vertex des Basisprimitivs nicht gecullt werden kann, impliziert dies, dass Basisprimitiv nicht gecullt werden kann, und dann ist es besser, das Culling des Basisprimitivs in der Basisprimitiv-Cullingeinheit 212 nicht auszuführen, da ein Basisprimitiv-Culling Kapazitäten erfordert.
  • Wie in 2f gezeigt ist, kann der Anzeigeadapter 205 der 2b ferner eine Basisprimitiv-Prüfeinheit 211 umfassen. Ferner kann der Anzeigeadapter 205 der 2c eine Basisprimitiv-Prüfeinheit 211 umfassen (siehe 2g). Der Anzeigeadapter 205 der 2d kann eine Basisprimitiv-Prüfeinheit 211 umfassen (siehe 2h).
  • 3a zeigt ein Ablaufdiagramm für ein Basisprimitiv-Cullingprogramm, das in der Basisprimitiv-Cullingeinheit 212 der 2a, b, c und d ausgeführt werden kann.
  • Im Schritt 310 wird eine erste Darstellung eines Basisprimitivs empfangen.
  • Im Schritt 320 wird ein Satz von Anweisungen geliefert. Dieser gelieferte Satz von Anweisungen ist mit einer Vertexpositionsbestimmung verknüpft. Vertexpositionen werden z. B. unter Verwendung von baryzentrischen Koordinaten für jeden Vertex als p(u, v) berechnet, wie in Verbindung mit der Vertex-Schattierereinheit 216 beschrieben. Der Satz von Anweisungen wird abgeleitet oder empfangen von einem Vertex-Schattiererprogramm, das in der Vertexschattierereinheit 216 ausgeführt werden kann. Der Satz von Anweisungen wird anschließend analysiert und alle Anweisungen, die benutzt werden, um die Vertexposition zu berechnen, die arithmetischen Anweisungen, werden isoliert. Die Anweisungen werden neu definiert zum Ausführen in einer begrenzten Arithmetik, z. B. einer Taylor-Arithmetik, einer Intervall-Arithmetik, einer affinen Arithmetik oder einer anderen geeigneten Arithmetik, die einem Fachmann bekannt ist. In einer Ausführungsform werden die Anweisungen zum Ausführen an Taylor-Modellen (anstellen von Fließkommazahlen) neu definiert und die Eingabe zu den neuen Instruktionen wird neu definiert, so dass sie als Taylor-Modelle vorliegen.
  • Eine kurze Beschreibung der Taylor-Modelle folgt, um dem Verständnis der folgenden Schritte zu dienen.
  • Intervalle werden in Taylor-Modellen verwendet und die folgende Notation wird für ein Intervall verwendet:
    Figure 00140001
  • Bei einer n + 1-mal differenzierbaren Funktion f(u), wobei u ∊ [u0, u1], setzt sich das Taylor-Modell von f aus einem Taylor-Polynom Tf und einem Intervallrestglied ȓf zusammen. Ein Taylor-Modell n-ter Ordnung, das hier als f ~ bezeichnet wird, über den Bereich u ∊ [u0, u1] ist dann:
    Figure 00140002
    wobei
    Figure 00140003
    das Taylor-Polynom ist und
    Figure 00140004
    ist der Intervallrestglied.
  • Diese Darstellung wird als Taylor-Modell bezeichnet und ist eine konservative Abdeckung der Funktion f über dem Bereich u ∊[u0, u1]. Es ist auch möglich, die Arithmetikoperatoren auf Taylor-Modellen zu definieren, wobei das Ergebnis ebenso eine konservative Abdeckung ist (ein anderes Taylor-Modell). Als ein einfaches Beispiel wird angenommen, dass f + g berechnet werden soll und dass diese Funktionen als Taylor-Modelle f = (Tf, r ~f) und g ~ = (Tg, r ~g) dargestellt sind. Das Taylor-Modell der Summe ist dann (Tf + Tg, ȓf + ȓg). Komplexere Operationen wie Multiplikationen, Sin, Log, Exp, Kehrwert usw. können auch abgeleitet werden. Details der Implementierung für diese Operationen sind in Berz, M., und Hofstätter, G. 1998, Computation and Application of Taylor Polynominals with Interval Remainder Sounds, Reliable Computing, 4, 1, 83–97 beschrieben.
  • Die baryzentrischen Koordinaten können als ein Taylor-Modell neu definiert werden, z. B. wie folgt: ba ~ry(u, v) = (u, v, 1 – u – v).
  • Im Schritt 330 wird der gelieferte Satz von Anweisungen an der ersten Darstellung des Basisprimitivs unter Verwendung der begrenzten Arithmetik ausgeführt. Die Ausgabe dieser Ausführung des Satzes von Anweisungen ist eine zweite Darstellung des Basisprimitivs.
  • Die zweite Darstellung des Basisprimitivs kann ein Taylor-Modell sein und kann eine Polynomnäherung der Vertexpositionsattribute sein. Genauer ausgedrückt kann die Ausgabe vom Schritt 330 Positionsgrenzen sein: p ~(u, v) = (p ~x, p ~v, p ~z, p ~w), welche vier Taylor-Modelle sind. Für eine einzelne Komponente, z. B. x, kann dies in der Powerbasis wie folgt dargestellt werden (das Restglied ȓf wurde zur Klarheit weggelassen):
    Figure 00150001
  • Die begrenzte Arithmetik, die im Schritt 330 verwendet wird, kann z. B. eine Taylor-Arithmetik, eine Intervall-Arithmetik, eine affine Arithmetik oder eine andere geeignete Arithmetik sein, die einem Fachmann bekannt ist.
  • In einer Ausführungsform kann die zweite Darstellung des Basisprimitivs durch Normalgrenzen gebildet sein. Für eine parametrisierte Oberfläche kann die nicht-normalisierte Normale n wie folgt berechnet werden:
    Figure 00150002
  • Die Normalgrenzen, welche das Taylorpopolynom der Normalen ist, wird dann berechnet als
    Figure 00150003
  • In einer Ausführungsform kann der Schritt 330, in welchem der Satz von Anweisungen ausgeführt wird, den Schritt 331 in 3b umfassen. Der Schritt 331 umfasst ein Ableiten eines zweiten Satzes von Anweisungen aus dem ersten Satz von Anweisungen, die mit einer Vertexpositionsbestimmung verknüpft sind. Der zweite Satz von Anweisungen wird von einem Vertexschattiererprogramm empfangen, das in der Vertexschattierereinheit 216 ausgeführt wird, wobei die Anweisungen analysiert werden und alle Anweisungen, welche benutzt werden, um die Vertexposition zu berechnen, die Arithmetikanweisungen, werden isoliert. Die Anweisungen werden zum Anwenden auf Taylor-Modellen (anstelle von Fließkommazahlen) neu definiert und die Eingabe an die neuen Anweisungen wird in Taylor-Modellen neu definiert. Der zweite Satz von Anweisungen wird anschließend ausgeführt, um Normalgrenzen zu liefern.
  • Ein Begrenzungsvolumen für einen Satz von Objekten ist ein geschlossenes Volumen, das vollständig die Einheit der Objekte in dem Satz begrenzt. Begrenzungsvolumen können von verschiedenen Formen haben, z. B. Boxen wie Quader oder Rechtecke, Kugeln, Zylinder, Polytope und konvexe Hüllen.
  • In einer Ausführungsform wird ein Begrenzungsvolumen, das die zweite Darstellung des Basisprimitivs einschließt, bestimmt (Schritt 350 in 3b) und das Begrenzungsvolumen wird einem Culling-Vorgang unterzogen. Der Culling-Vorgang wird weiter in Verbindung mit Schritt 340 beschrieben.
  • Das erfinderische Begrenzungsvolumen ist ein dichtes Begrenzungsvolumen. Das Begrenzungsvolumen, welches dicht ist, impliziert, dass die Fläche oder das Volumen des Begrenzungsvolumens so klein wie möglich ist, jedoch immer noch die zweite Darstellung des Basisprimitivs vollständig einschließt.
  • In einer Ausführungsform wird das Begrenzungsvolumen durch Berechnen eines Minimum und eines Maximum der zweiten Darstellung berechnet (Schritt 351).
  • Die zweite Darstellung des Basisprimitivs kann ein Taylor-Polynom in Potenzform sein.
  • Ein Weg zum Bestimmen des Begrenzungsvolumens kann durch Berechnen der Ableitungen der Taylor-Polgnome und somit durch Finden des Minimum und Maximum der zweiten Darstellung erfolgen.
  • Ein anderer Weg zum Bestimmen des Begrenzungsvolumens kann wie folgt sein. Die Taylor-Polynome werden in Bernstein-Form konvertiert. Aufgrund der Tatsache, dass die Eigenschaft der konvexen Hülle der Bernstein-Basis garantiert, dass die tatsächliche Oberfläche oder Kurve des Polynoms innerhalb der konvexen Hülle der Kontrollpunkte liegt, die in der Bernstein-Basis erlangt werden, wird das Begrenzungsvolumen durch Auffinden des minimalen und maximalen Kontrollpunktwertes in jeder Dimension berechnet. Das Umwandeln der Gleichung (3) in Berstein-Basis ergibt:
    Figure 00170001
    wobei
    Figure 00170002
    Bernstein-Polgnome in dem bivariaten Fall über einen Dreiecksbereich sind. Diese Umwandlung wird unter Verwendung der folgenden Formel ausgeführt, wobei die Formel in Hungerbühler, R., und Garloff, J. 1998, Bounds for the Range of a Bivariate Polynominal over a Triangle, Reliable Computing, 4, 1, 3–13 beschrieben ist:
    Figure 00170003
  • Zum Berechnen der Begrenzungsbox werden einfach der minimale und maximale Wert über alle pij für jede Dimension x, y, z und w berechnet. Dies ergibt eine Begrenzungsbox b ^ = (b ^x, b ^y, b ^z, b ^w) im Clip-Raum, wobei jedes Element ein Intervall ist, z. B.
  • Figure 00170004
  • Im Schritt 340 wird die zweite Darstellung des Basisprimitivs einem Culling-Vorgang unterzogen.
  • Das Culling wird ausgeführt, um das Zeichnen von Objekten oder Teilen von Objekten zu vermeiden, die nicht zu sehen sind.
  • GPUs aus dem Stand der Technik führen Culling an tessellierten Polygonen aus. Die vorliegende Erfindung führt das Culling aus, bevor eine Tessellation auch nur stattgefunden hat, was zu einer Performanceerhöhung führt.
  • In diesem Ansatz werden die Positionsgrenzen, die Normalgrenzen und das Begrenzungsvolumen, wie oben abgeleitet, verwendet, um verschiedene Culling-Techniken auf das Basisprimitiv anzuwenden.
  • In einer Ausführungsform wird ein View Frustum Culling ausgeführt unter Verwendung der Positionsgrenzen oder des Begrenzungsvolumens (Schritt 341 in 3b).
  • In einer Ausführungsform wird ein Back-Face Culling ausgeführt unter Verwendung von der Normalbegrenzung, der Positionsbegrenzung und/oder des Begrenzungsvolumens (Schritt 342 in 3b).
  • In einer Ausführungsform wird ein Occlusion Culling ausgeführt unter Verwendung der Positionsgrenzen oder des Begrenzungsvolumens (Schritt 343 in 3b).
  • In einer Ausführungsform wird wenigstens einer der Schritt 341 bis 343 ausgeführt.
  • Die Culling-Techniken, die unten offenbart werden, sind nicht als eine Begrenzung konstruiert, sie liefern jedoch einen beispielhaften Weg. Es ist für einen Fachmann offensichtlich, dass Back-Face Culling, Occlusion Culling und View Frustum Culling ausfgeführt werden kann unter Verwendung anderer Techniken, als jene, die unten beschrieben sind.
  • View Frustum Culling ist eine Culling-Technik, die auf der Tatsache beruht, dass nur Objekte zu zeichnen sind, die sichtbar sind, d. h. Objekte, die innerhalb des aktuellen Sichtkegels liegen. Der Sichtkegel (View Frustum) kann definiert sein als der Bereich im Raum in der Modellwelt, der auf dem Bildschirm erscheint. Ein Zeichnen von Objekten außerhalb des Kegels wäre eine Verschwendung von Zeit und Ressourcen, da sie ohnehin nicht sichtbar sind. Wenn ein Objekt vollständig außerhalb des Sichtkegels liegt, kann es nicht sichtbar sein und kann verworfen werden.
  • In einer Ausführungsform werden die Positionsgrenzen des Begrenzungsvolumens gegenüber den Ebenen des Sichtkegels getestet. Da das Begrenzungsvolumen b ^ im Clip-Raum homogen ist, kann der Test in dem Clip-Raum ausgeführt werden. Eine Standardoptimierung für Flächen-Box-Tests kann verwendet werden, bei denen nur eine einzelne Ecke des Begrenzungsvolumens – das Begrenzungsvolumen ist die Begrenzungsbox – verwendet wird, um die Flächengleichung zu berechnen. Jeder Flächentest läuft auf eine Addition und einen Vergleich hinaus. Wenn beispielsweise das Volumen außerhalb der linken Fläche liegt, wird der Flächentest ausgeführt unter Verwendung von:
    Figure 00190001
    Das Testen kann auch ausgeführt werden unter Verwendung der Positionsgrenzen: p ~(u, v) = (p ~x, p ~y, p ~z, p ~w). Da diese Tests zeit- und ressourceneffizient sind, ist es von Vorteil, den Sichtkegeltest als ersten Test zu nehmen.
  • Back-Face Culling verwirft Objekte, die von dem Betrachter weg weisen, d. h. der Normalvektor der Objekte ist in einer Richtung von dem Betrachter weg gerichtet. Diese Objekte werden nicht sichtbar sein und es besteht daher keine Notwendigkeit, diese zu zeichnen.
  • Für einen Punkt p(u, v) auf einer Oberfläche wird das Back-Face Culling im Allgemeinen wie folgt berechnet: c = p(u, v)·n(u, v) (8) wobei n(u, v) der Normalvektor bei (u, v) ist. Falls c > 0 ist, weist p(u, v) für diesen bestimmten Wert von (u, v) zurück (back-facing). Diese Formel kann als solche auch benutzt werden, um ein gesamtes Dreieck zu cullen, welches nur eine einzelne Normale aufweist. Das Taylor-Modell des Punktproduktes (siehe Gleichungen (5) und (8)) wird berechnet: c ~ = p ~(u, v)·n ~(u, v) . Um in der Lage zu sein, das Back-Face Culling auszuführen, muss das Folgende über den gesamten Dreiecksbereich eingehalten werden: c ~ > 0. Die untere Grenze auf c wird wieder konservativ abgeschätzt unter Verwendung der Eigenschaft der konvexen Hülle der Bernstein-Form. Dies liefert ein Intervall c ~ = [c, c ] und ein Dreieck (welches an diesem Punkt nicht tesselliert wurde) kann gecullt (verworfen) werden, wenn c > 0.
  • In einer anderen Ausführungsform werden Intervallgrenzen für die Normalen berechnet zum Überprüfen, ob die Back-Face-Bedingung erfüllt ist.
  • Der Test kann auch ausgeführt werden unter Verwendung der Positionsgrenzen p ~(u, v) = (p ~x, p ~v, p ~z, p ~w) oder alternativ des Begrenzungsvolumens.
  • Occlusion Culling impliziert, dass Objekte, die verdeckt sind, verworfen werden. Im Folgenden wird Occlusion Culling für eine Begrenzungsbox beschrieben, es ist jedoch für einen Fachmann naheliegend, dass es auch möglich ist, Occlusion Culling auch auf andern Arten von Begrenzungsvolumen durchzuführen.
  • Die Technik des Occlusion Culling ist sehr ähnlich zu einer hierarchischen Tiefenpufferung mit der Ausnahme, dass nur ein extra Level in der Tiefenpufferung benutzt wird (8×8 Pixelkacheln). Der maximale Tiefenwert Z tile / max , wird für jede Kachel gespeichert. Dies ist eine Standardtechnik in GPUs, die beim Rastern von Dreiecken verwendet wird. Die Clip-Raum-Begrenzungsbox b wird projiziert und alle Kacheln, welche diese entlang der Achse ausgerichteten Box überlappen, sind sichtbar. An jeder Kachel wird ein klassischer Occlusion Culling-Test durchgeführt: Z box / min ≥ Z tile / max , was anzeigt, dass die Box an der aktuellen Kachel verdeckt ist, wenn der Vergleich erfüllt ist. Die minimale Tiefe der Box Z box / min wird von der Clip-Raum-Begrenzungsbox erlangt und die maximale Tiefe der Kachel Z tile / max aus dem hierarchischen Tiefenpuffer (der bereits in einer derzeitigen GPU existiert). Es ist zu beachten, dass das Testen beendet werden kann, sobald eine Kachel gefunden ist, die nicht verdeckt ist, und dass es einfach ist, mehrere Level zu dem hierarchischen Tiefenpuffer hinzuzufügen. Der Occlusion Culling-Test kann als ein sehr kostengünstiger Vorrasterisierer der Begrenzungsbox des Dreiecks, welches tesselliert werden soll, gesehen werden. Da es auf einer Kachelbasis arbeitet, ist es weniger aufwendig als eine Occlusion-Abfrage.
  • In einer anderen Ausführungsform kann das Testen auch unter Verwendung der Positionsgrenzen p ~(u, v) = (p ~x, p ~v, p ~z, p ~w) ausgeführt werden.
  • In einer Ausführungsform ist der Culling-Vorgang ersetzbar. Dies impliziert, dass die Basisprimitv-Cullingeinheit 212 mit einem benutzerdefinierten Culling-Vorgang ausgerüstet sein kann.
  • Der Schritt 340 (und 350), der einen Culling-Vorgang ausführt, kann verschiedene Ausgaben aufweisen. In einer Ausführungsform kann eine Ausgabe des Culling-Vorgangs sein, dass das Basisprimitiv zu verwerfen ist. In einer anderen Ausführungsform kann die Ausgabe des Culling-Vorgangs sein, dass ein Tessellationsfaktor erzeugt wird. Dieser Tessellationsfaktor kann auf einen Wert gesetzt werden, der anzeigt, dass das Basisprimitv zu verwerfen ist. Alternativ kann der Tessellationsfaktor auf einen Wert gesetzt werden, der anzeigt, dass das Basisprimitiv nicht verworfen werden könnte. Ferner kann der Tessellationsfaktor auf einen Wert gesetzt werden, der anzeigt, dass das Basisprimitiv nicht zu tessellieren ist.
  • In einer Ausführungsform wird nach dem Schritt 340 (und dem Schritt 350), welcher einen Culling-Vorgang ausführt, die Ausgabe der Ausführung des Culling-Vorgangs an den Tessellator 212 gesendet. Ein Tessellationsvorgang wird ausgeführt (Schritt 360 in 3b). Wenn der Tessellator 214 ein Basisprimitiv und einen Tessellationsfaktor empfängt, der anzeigt, dass das Basisprimitiv nicht zu tessellieren ist, tesselliert der Tessellator das Basisprimitiv nicht.
  • Wenn der Tessellator 212 ein Basisprimitiv empfängt, das in dem Culling-Vorgang nicht verworfen wurde, jedoch keinen Tessellationsfaktor empfängt, der anzeigt, dass das Basisprimitiv nicht zu tessellieren ist, tesselliert der Tessellator 214 das Basisprimitiv.
  • Die Schritte, die in Verbindung mit der 3a und 3b beschrieben wurden, können in der Vorrichtung 205 der Erfindung ausgeführt werden.
  • 4 stellt die Ergebnisse der Schritte der 3a und 3b dar. 4a zeigt ein Basisprimitiv in der Form eines Basisdreiecks 405. 4b zeigt die resultierende erzeugte Fläche 410 über dem Basisdreieck 405, die durch die Vertexschattierereinheit 216 (und der Tessellationsfrequenz) bestimmt wird. In 4c wird das Basisdreieck 405 in einer Taylor-Form ausgedrückt (Polynom 415 und Restglied 420, 425), wodurch eine konservative Näherung der Oberfläche 410 erlangt wird. In 4d wird das Taylor-Polynom in Bernstein-Form 430 für eine effiziente Bereichsbegrenzung (unter Verwendung der Eigenschaft der konvexen Hülle) erweitert. In 4e wird das Intervallrestglied 420, 425 von dem Taylor-Modell zu dem Bernstein-Grenzen 430 addiert, wodurch konservative Oberflächengrenzen 445, 450 erlangt werden.
  • 5 zeigt eine Übersichtsarchitektur eines typischen Computers für allgemeine Zwecke 583, der einen Anzeigeadapter 205 der 2 enthält. Der Computer 583 besitzt einen Controller 570, wie eine CPU, der in der Lage ist, Softwarebefehle auszuführen. Der Controller 570 ist mit einem flüchtigen Speicher 571 verbunden, wie einem Random Access Memory (RAM) und einem Anzeigeadapter 500, wobei der Anzeigeadapter dem Anzeigeadapter 205 der 2 entspricht. Der Anzeigeadapter 500 ist wiederum mit einer Anzeige 576 verbunden, wie einem CRT-Monitor, einem LCD-Monitor usw. Der Controller 570 ist außerdem mit einem Permanentspeicher 573, wie einer Festplatte oder einem Flashspeicher, und einem optischen Speicher 574, wie einem Leser und/oder Schreiber von optischen Medien, wie CD, DVD, HD-DVD oder Blu-ray, verbunden. Eine Netzwerkschnittstelle 581 ist außerdem mit dem Controller 570 verbunden, um einen Zugang zu einem Netzwerk 582 bereitzustellen, wie einem Local Area Network, einem Wide Area Network (z. B. Internet), einem Wireless Local Area Network oder einem Wireless Metropolitan Area Network. Durch eine Peripherieschnittstelle 577, z. B. einer USB-Schnittstelle, Wireless Universal Series Bus, Firewire, RS232 Serial, Centronics Parallel, PS/2, kann der Controller 570 mit einer Maus 578, einer Tastatur 579 oder anderen Peripheriegeräten 580, einschließlich eines Joysticks, eines Druckers, eines Scanners usw., kommunizieren.
  • Es ist zu verstehen, dass, obgleich ein Computer für allgemeine Zwecke zum Aufnehmen der Erfindung beschrieben wurde, die Erfindung ebenso in anderen Umgebungen enthalten sein kann, in der digitale Grafiken und insbesondere dreidimensionale Grafiken verwendet werden, z. B. Spielkonsolen, Handys, MP3-Player usw.
  • Diese Erfindung kann ferner in sehr viel allgemeineren Architekturen enthalten sein. Die Architektur kann z. B. aus vielen kleinen Prozessorkernen bestehen, die jede Art von Programm ausführen können. Dies impliziert eine Art von Software-GPU im Unterschied zu mehr Hardware-centric GPUs.
  • Die Erfindung wurde vorhergehend hauptsächlich mit Bezug auf einige Ausführungsformen beschrieben. Wie jedoch leicht durch einen Fachmann zu erkennen ist, sind andere Ausführungsformen als diejenigen, die oben beschrieben wurden, gleichermaßen innerhalb des Umfangs der Erfindung möglich, der durch die beigefügten Patentansprüche definiert ist.
  • Zusammenfassung
  • Ein Verfahren zum Verbessern der Performance zum Erzeugen von digital dargestellten Grafiken. Das Verfahren umfasst: Empfangen einer ersten Darstellung eines Basisprimitivs; Liefern eines ersten Satzes von Anweisungen, die einer Vertexpositionsbestimmung zugeordnet sind; Ausführen des empfangenen Satzes von Anweisungen an der ersten Darstellung des Basisprimitivs unter Verwendung einer begrenzten Arithmetik zum Liefern einer zweiten Darstellung des Basisprimitivs, und Unterziehen der zweite der Darstellung des Basisprimitivs einem Culling-Vorgang. Eine entsprechende Vorrichtung und ein Computerprogrammprodukt werden ebenso dargestellt.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • SE 0700162-1 [0070]
  • Zitierte Nicht-Patentliteratur
    • Berz, M., und Hofstätter, G. 1998, Computation and Application of Taylor Polynominals with Interval Remainder Sounds, Reliable Computing, 4, 1, 83–97 [0079]
    • Hungerbühler, R., und Garloff, J. 1998, Bounds for the Range of a Bivariate Polynominal over a Triangle, Reliable Computing, 4, 1, 3–13 [0093]

Claims (15)

  1. Verfahren zum Verbessern der Performance zum Erzeugen von digital dargestellten Grafiken, wobei das Verfahren Folgendes umfasst: Empfangen einer ersten Darstellung eines Basisprimitivs, Liefern eines ersten Satzes von Anweisungen, die mit einer Vertexpositionsbestimmung verknüpft sind, Ausführen des Satzes von Anweisungen an der ersten Darstellung des Basisprimitivs unter Verwendung einer begrenzten Arithmetik zum Liefern einer zweiten Darstellung des Basisprimitivs, und Unterziehen der zweiten Darstellung des Basisprimitivs einem Culling-Vorgang.
  2. Verfahren nach Anspruch 1, das weiterhin Folgendes umfasst: Auswählen von wenigstens einem Vertex aus der ersten Darstellung des Basisprimitivs, Ausführen eines Satzes von Anweisungen, die mit einer Basispositionsbestimmung verknüpft sind, an der ersten Darstellung des wenigstens einen Vertex zum Liefern einer zweiten Darstellung des wenigstens einen Vertex, und Unterziehen der zweiten Darstellung des wenigstens einen Vertex einem Culling-Vorgang, wobei eine Ausgabe des Culling-Vorgangs wenigstens eines von Folgendem umfasst: eine Entscheidung, den wenigstens einen Vertex zu cullen, und eine Entscheidung, den wenigstens einen Vertex nicht zu cullen, und falls die Ausgabe des Culling-Vorgangs eine Entscheidung umfasst, den wenigstens einen Vertex zu cullen, Folgendes durchzuführen: das Empfangen der ersten Darstellung des Basisprimitivs, das Liefern eines Satzes von Anweisungen, die mit einer Vertexpositionsbestimmung verknüpft sind, das Ausführen des Satzes von Anweisungen auf der ersten Darstellung des Basisprimitivs unter Verwendung einer begrenzten Arithmetik zum Liefern einer zweiten Darstellung des Basisprimitivs, und das Unterziehen der zweiten Darstellung des Basisprimitivs einem Culling-Vorgang.
  3. Verfahren nach einem der Ansprüche 1 bis 2, das weiterhin Folgendes umfasst: Bestimmen eines Begrenzungsvolumens, welches die zweite Darstellung des Basisprimitivs einschließt, und Unterziehen des Begrenzungsvolumens einem Culling-Vorgang.
  4. Verfahren nach einem der Ansprüche 1 bis 3, das weiterhin Folgendes umfasst: Ausführen eines Tessellationsvorgangs, wobei der Tessellationsvorgang auf der Ausgabe des Culling-Vorgangs beruht.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei der Culling-Vorgang ersetzbar ist.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei die begrenzte Arithmetik wenigstens eine aus der Gruppe von Taylor-Arithmetik, Intervall-Arithmetik und affiner Arithmetik ist.
  7. Verfahren nach Anspruch 3, wobei das Bestimmen des Begrenzungsvolumens weiterhin ein Berechnen eines Minimums und eines Maximums der zweiten Darstellung umfasst.
  8. Verfahren nach einem der Ansprüche 1 bis 7, wobei die zweite Darstellung eine Positionsgrenze und/oder eine Normalgrenze ist.
  9. Verfahren nach Anspruch 1, wobei das Ausführen des Satzes von Anweisungen ferner Folgendes umfasst: Ableiten eines zweiten Satzes von Anweisungen aus dem ersten Satz von Anweisungen, die mit einer Vertexpositionsbestimmung verknüpft sind, und Ausführen des zweiten Satzes von Anweisungen zum Liefern einer Normalgrenze.
  10. Verfahren nach Anspruch 3, wobei das Unterziehen des Begrenzungsvolumens dem Culling-Vorgang weiterhin ein Ausführen von wenigstens einem des Folgenden umfasst: Unterziehen des Begrenzungsvolumens einem View Frustum Culling, Unterziehen des Begrenzungsvolumens einem Back-Face Culling, und Unterziehen des Begrenzungsvolumens einem Occlusion Culling.
  11. Verfahren nach Anspruch 8, wobei das Unterziehen der zweiten Darstellung dem Culling-Vorgang ferner das Ausführen von wenigstens einem des Folgenden umfasst: Unterziehen der Positionsgrenze einem View Frustum Culling, Unterziehen der Positionsgrenze oder der Normalgrenze einem Back-Face Culling, und Unterziehen der Positionsgrenze einem Occlusion Culling.
  12. Verfahren nach Anspruch 1 bis 11, wobei eine Ausgabe des Culling-Vorgangs eines von Folgendem umfasst: eine Entscheidung, das Basisprimitiv zu verwerfen, und einen Tessellationsfaktor.
  13. Verfahren nach Anspruch 12, das weiterhin ein Ausführen eines Tessellationsvorgangs umfasst, wenn die Ausgabe des Culling-Vorgangs einen Tessellationsfaktor umfasst.
  14. Vorrichtung, die dafür eingerichtet ist, digital dargestellte Grafiken zu erzeugen, mit einer Schaltung zur Verbesserung der Performance zum Erzeugen von digital dargestellten Grafiken, wobei die Schaltung eingerichtet ist zum: Empfangen einer ersten Darstellung eines Basisprimitivs, Liefern eines ersten Satzes von Anweisungen, die mit einer Vertexpositionsbestimmung verknüpft sind, Ausführen des Satzes von Anweisungen an der ersten Darstellung des Basisprimitivs unter Verwendung einer begrenzten Arithmetik zum Liefern einer zweiten Darstellung des Basisprimitivs, und Unterziehen der zweiten Darstellung des Basisprimitivs einem Culling-Vorgang.
  15. Computerprogrammprodukt, welches Computerprogrammcode umfasst, der auf einem computerlesbaren Speichermedium gespeichert ist und der, wenn er von einem Prozessor ausgeführt wird, das Verfahren nach einem der Ansprüche 1 bis 13 durchführt.
DE112009000180T 2008-01-23 2009-01-23 Verfahren, Vorrichtung und Computerprogrammprodukt für eine verbesserte Grafikperformance Ceased DE112009000180T5 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
SE0800165A SE532399C2 (sv) 2008-01-23 2008-01-23 Förfarande, apparat och datorprogramprodukt för s kapande av digitalt representerad grafik
SE0800165-3 2008-01-23
US6263508P 2008-01-29 2008-01-29
SE61/062635 2008-01-29
SE0801742-8 2008-07-30
SE0801742A SE0801742L (sv) 2008-07-30 2008-07-30 Förfarande, apparat och datorprogramprodukt för förbättrad grafikprestanda
PCT/SE2009/000022 WO2009093956A1 (en) 2008-01-23 2009-01-23 Method, apparatus, and computer program product for improved graphics performance

Publications (1)

Publication Number Publication Date
DE112009000180T5 true DE112009000180T5 (de) 2011-03-31

Family

ID=40901330

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112009000180T Ceased DE112009000180T5 (de) 2008-01-23 2009-01-23 Verfahren, Vorrichtung und Computerprogrammprodukt für eine verbesserte Grafikperformance

Country Status (7)

Country Link
US (4) US9947130B2 (de)
JP (2) JP2011510396A (de)
CN (1) CN102016928B (de)
DE (1) DE112009000180T5 (de)
GB (1) GB2468994B (de)
HK (1) HK1156428A1 (de)
WO (1) WO2009093956A1 (de)

Families Citing this family (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2010048093A2 (en) * 2008-10-20 2010-04-29 Intel Corporation Graphics processing using culling on groups of vertices
US8542492B2 (en) * 2009-12-10 2013-09-24 Richard Anthony Dunn, JR. Scalable up and down nesting integrated electronic enclosures with form factors including asteroids and/or dumbbells and/or approximated tessellation(s)/tiling(s) or combinations thereof with thermal management, wiring, sliding fit, manual and/or automated full range vertical to horizontal positioning, access and structural systems for individual modules and intra-and inter-planar stacks, columns, rows, arrays and associated infrastructures
US8144147B2 (en) * 2010-04-07 2012-03-27 Intel Corporation Hierarchical bounding of displaced parametric surfaces
GB201007348D0 (en) 2010-04-30 2010-06-16 Imagination Tech Ltd Programmable tessellation in a tile based rendering system
US20110285736A1 (en) 2010-05-21 2011-11-24 Kilgard Mark J Decomposing cubic bèzier segments for tessellation-free stencil filling
US10559123B2 (en) 2012-04-04 2020-02-11 Qualcomm Incorporated Patched shading in graphics processing
US9619853B2 (en) 2012-08-09 2017-04-11 Qualcomm Incorporated GPU-accelerated path rendering
US9275498B2 (en) * 2012-08-09 2016-03-01 Qualcomm Incorporated GPU-accelerated path rendering
GB2509113B (en) 2012-12-20 2017-04-26 Imagination Tech Ltd Tessellating patches of surface data in tile based computer graphics rendering
US9483861B2 (en) * 2013-03-15 2016-11-01 Qualcomm Incorporated Tile-based rendering
KR102109130B1 (ko) 2013-08-12 2020-05-08 삼성전자주식회사 그래픽스 프로세싱 유닛, 이의 동작 방법, 및 이를 포함하는 장치들
KR102066533B1 (ko) 2013-11-19 2020-01-16 삼성전자 주식회사 도메인 쉐이딩 방법과 이를 수행하는 장치들
GB2526359B (en) * 2014-05-23 2020-07-22 Advanced Risc Mach Ltd Graphics processing systems
WO2016105218A1 (en) * 2014-12-23 2016-06-30 Intel Corporation Facilitating culling of composite objects in graphics processing units when such objects produce no visible change in graphics images
US20160259404A1 (en) 2015-03-05 2016-09-08 Magic Leap, Inc. Systems and methods for augmented reality
US10838207B2 (en) 2015-03-05 2020-11-17 Magic Leap, Inc. Systems and methods for augmented reality
US10180734B2 (en) 2015-03-05 2019-01-15 Magic Leap, Inc. Systems and methods for augmented reality
KR102381945B1 (ko) 2015-11-18 2022-04-01 삼성전자주식회사 그래픽 프로세싱 장치 및 그래픽 프로세싱 장치에서 그래픽스 파이프라인을 수행하는 방법
US10909711B2 (en) 2015-12-04 2021-02-02 Magic Leap, Inc. Relocalization systems and methods
KR102626821B1 (ko) 2016-08-02 2024-01-18 매직 립, 인코포레이티드 고정-거리 가상 및 증강 현실 시스템들 및 방법들
US10812936B2 (en) 2017-01-23 2020-10-20 Magic Leap, Inc. Localization determination for mixed reality systems
JP7009495B2 (ja) 2017-03-17 2022-01-25 マジック リープ, インコーポレイテッド 多ソース仮想コンテンツ合成を伴う複合現実システムおよびそれを使用して仮想コンテンツを生成する方法
CN110431599B (zh) 2017-03-17 2022-04-12 奇跃公司 具有虚拟内容扭曲的混合现实系统及使用该系统生成虚拟内容的方法
JP7009494B2 (ja) 2017-03-17 2022-01-25 マジック リープ, インコーポレイテッド カラー仮想コンテンツワーピングを伴う複合現実システムおよびそれを使用して仮想コンテンツ生成する方法
US10614611B2 (en) * 2017-04-07 2020-04-07 Intel Corporation Apparatus and method for implementing bounding volume hierarchy (BVH) operations on tesselation hardware
US10373365B2 (en) * 2017-04-10 2019-08-06 Intel Corporation Topology shader technology
EP3827584A4 (de) 2018-07-23 2021-09-08 Magic Leap, Inc. Intrafeld-subcode-timing in feldsequenziellen anzeigen
JP7304934B2 (ja) 2018-07-23 2023-07-07 マジック リープ, インコーポレイテッド 仮想コンテンツワーピングを伴う複合現実システムおよびそれを使用して仮想コンテンツを生成する方法
US10831503B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Saving and restoring machine state between multiple executions of an instruction
US10831478B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Sort and merge instruction for a general-purpose processor
US10831502B2 (en) 2018-11-06 2020-11-10 International Business Machines Corporation Migration of partially completed instructions
US10832465B2 (en) * 2018-12-13 2020-11-10 Advanced Micro Devices, Inc. Use of workgroups in pixel shader
US20220319091A1 (en) * 2021-03-31 2022-10-06 Advanced Micro Devices, Inc. Post-depth visibility collection with two level binning

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2271260A (en) * 1992-10-02 1994-04-06 Canon Res Ct Europe Ltd Processing image data
GB9716251D0 (en) * 1997-08-01 1997-10-08 Philips Electronics Nv Attribute interpolation in 3d graphics
JP2975336B2 (ja) * 1998-01-09 1999-11-10 コナミ株式会社 3次元ビデオゲームにおける衝突検出方法及びこれを用いたビデオゲーム装置並びに3次元ビデオゲームにおける衝突検出プログラムを記録したコンピュータ読み取り可能な媒体
US6717578B1 (en) * 1998-02-17 2004-04-06 Sun Microsystems, Inc. Graphics system with a variable-resolution sample buffer
US6359629B1 (en) * 1998-07-06 2002-03-19 Silicon Graphics, Inc. Backface primitives culling
US7068272B1 (en) 2000-05-31 2006-06-27 Nvidia Corporation System, method and article of manufacture for Z-value and stencil culling prior to rendering in a computer graphics processing pipeline
US6462740B1 (en) * 1999-07-30 2002-10-08 Silicon Graphics, Inc. System for in-scene cloth modification
JP4253190B2 (ja) 2001-02-01 2009-04-08 メンタル イメージズ ゲーエムベーハー 細分表面における滑らかな特徴線の生成
JP4803909B2 (ja) * 2001-06-21 2011-10-26 株式会社バンダイナムコゲームス 画像生成システム、プログラム及び情報記憶媒体
US6809738B2 (en) * 2001-12-21 2004-10-26 Vrcontext S.A. Performing memory management operations to provide displays of complex virtual environments
US20030117398A1 (en) * 2001-12-21 2003-06-26 Hubrecht Alain Yves Nestor Systems and methods for rendering frames of complex virtual environments
NZ540742A (en) * 2002-11-15 2007-10-26 Sunfish Studio Inc Visible surface determination system & methodology in computer graphics using interval analysis
US20050122338A1 (en) * 2003-12-05 2005-06-09 Michael Hong Apparatus and method for rendering graphics primitives using a multi-pass rendering approach
US7400325B1 (en) * 2004-08-06 2008-07-15 Nvidia Corporation Culling before setup in viewport and culling unit
JP4683623B2 (ja) * 2005-05-10 2011-05-18 株式会社ディジタルメディアプロフェッショナル 幾何演算装置
JP4717622B2 (ja) * 2005-12-15 2011-07-06 株式会社バンダイナムコゲームス プログラム、情報記録媒体および画像生成システム
JP4116648B2 (ja) * 2006-05-22 2008-07-09 株式会社ソニー・コンピュータエンタテインメント オクルージョンカリング方法および描画処理装置
US7847798B1 (en) * 2006-10-24 2010-12-07 Adobe Systems Incorporated Clipping and culling artwork using a graphics processing unit
CN1949272A (zh) * 2006-11-23 2007-04-18 北京航空航天大学 基于视域剔除和图像缓存技术的复杂场景快速绘制方法
EP2122577B1 (de) 2007-01-24 2018-03-07 Swiftfoot Graphics Ab Verfahren, anzeigeadapter und computerprogramm für verbesserte graphikleistung durch anwendung eines austauschbaren sortierungsprogramms
US7948489B1 (en) * 2007-05-30 2011-05-24 Adobe Systems Incorporated Minimizing tessellation of surfaces
CN100568289C (zh) * 2007-07-13 2009-12-09 威盛电子股份有限公司 计算机绘图元素描绘方法及装置
US8044971B2 (en) * 2008-01-31 2011-10-25 Arm Norway As Methods of and apparatus for processing computer graphics

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Berz, M., und Hofstätter, G. 1998, Computation and Application of Taylor Polynominals with Interval Remainder Sounds, Reliable Computing, 4, 1, 83-97
Hungerbühler, R., und Garloff, J. 1998, Bounds for the Range of a Bivariate Polynominal over a Triangle, Reliable Computing, 4, 1, 3-13

Also Published As

Publication number Publication date
HK1156428A1 (en) 2012-06-08
JP5518967B2 (ja) 2014-06-11
US20110018874A1 (en) 2011-01-27
WO2009093956A1 (en) 2009-07-30
JP2011510396A (ja) 2011-03-31
JP2012252725A (ja) 2012-12-20
US11361498B2 (en) 2022-06-14
US11222462B2 (en) 2022-01-11
US10373370B2 (en) 2019-08-06
CN102016928A (zh) 2011-04-13
WO2009093956A8 (en) 2010-09-10
GB201012145D0 (en) 2010-09-01
US9947130B2 (en) 2018-04-17
CN102016928B (zh) 2014-01-08
US20170109921A1 (en) 2017-04-20
GB2468994B (en) 2012-11-28
US20190172253A1 (en) 2019-06-06
GB2468994A (en) 2010-09-29
US20190172254A1 (en) 2019-06-06

Similar Documents

Publication Publication Date Title
DE112009000180T5 (de) Verfahren, Vorrichtung und Computerprogrammprodukt für eine verbesserte Grafikperformance
DE102013114090B4 (de) Konservative Rasterung von Primitiven unter Benutzung eines Fehler-Terms
DE102015113797B4 (de) Relative Kodierung für eine blockbasierte Begrenzungsvolumenhierarchie
US9779536B2 (en) Graphics processing
DE69322575T2 (de) Verfahren und Gerät zur Wiedergabe von abgeglichenen NURB Oberflächen
DE102018113845A1 (de) Systeme und Verfahren zum Trainieren von neuronalen Netzwerken mit dünnbesetzten Daten
DE69716877T2 (de) System und Verfahren zur genauen Gradientberechnung für die Texturabbildung in einem Computergraphiksystem
DE102015113240A1 (de) System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters
DE102013114176A1 (de) Tessellieren von Oberflächendatensegmenten beim kachelbasierten Rendern von Computergrafik
DE102018114286A1 (de) Durchführen einer Traversierungs-Stack-Komprimierung
DE102011016347A1 (de) Hierarchisches Umgrenzen von verschobenen parametrischen Flächen
DE102017108096A1 (de) System, verfahren und computerprogrammprodukt zum rendern bei variablen abtastraten mittels projektiver geometrischer verzerrung
DE102013114373A1 (de) Konsistente Vertex-Einrastung für Rendering mit variabler Auflösung
DE102010048486A1 (de) Bildverarbeitungstechniken
DE112013005255T5 (de) Bedarfsweise Geometrie- und Beschleunigungsstrukturerzeugung
CN104933749B (zh) 图形图元的裁剪
DE112009004418T5 (de) Tessellator, dessen Tessellationszeit mit dem Tessellationsumfang linear steigt
DE102013022257A1 (de) Programmierbares Mischen in mehrsträngigen Verarbeitungseinheiten
DE602004003111T2 (de) Tiefen-basiertes Antialiasing
DE102013018445A1 (de) Festlegung eines nachgeordneten Bilderzeugungszustands in einer vorgeordneten Schattierungseinheit
DE102013020613A1 (de) Umgehung der Pixel-Schattierung für die grafische Bilderzeugung mit geringer Leistung
DE112012002623T5 (de) Verfahren zum Simulieren der Bearbeitung von Objekten durch Bewegung eines Werkzeugs, und System und Computerprogrammprodukt für dieses
DE102020121814A1 (de) Vorrichtung und Verfahren zum Verwenden von Dreieckspaaren und gemeinsam genutzten Transformationsschaltungen zum Verbessern der Strahlverfolgungsleistung
DE102017109472A1 (de) Stereo-mehrfach-projektion implementiert unter verwendung einer graphikverarbeitungs-pipeline
DE112009002383T5 (de) Grafikverarbeitung unter Verwendung von Culling auf Gruppen von Vertices

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R081 Change of applicant/patentee

Owner name: INTEL CORPORATION, SANTA CLARA, US

Free format text: FORMER OWNER: SWIFT-FOOT GRAPHICS AB, LUND, SE

Effective date: 20110412

R016 Response to examination communication
R130 Divisional application to

Ref document number: 112009005583

Country of ref document: DE

Ref document number: 112009005559

Country of ref document: DE

R130 Divisional application to

Ref document number: 112009005583

Country of ref document: DE

Ref document number: 112009005559

Country of ref document: DE

R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final