DE112009002383T5 - Grafikverarbeitung unter Verwendung von Culling auf Gruppen von Vertices - Google Patents

Grafikverarbeitung unter Verwendung von Culling auf Gruppen von Vertices Download PDF

Info

Publication number
DE112009002383T5
DE112009002383T5 DE112009002383T DE112009002383T DE112009002383T5 DE 112009002383 T5 DE112009002383 T5 DE 112009002383T5 DE 112009002383 T DE112009002383 T DE 112009002383T DE 112009002383 T DE112009002383 T DE 112009002383T DE 112009002383 T5 DE112009002383 T5 DE 112009002383T5
Authority
DE
Germany
Prior art keywords
vertices
representation
vertex
culling
instructions
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
DE112009002383T
Other languages
English (en)
Inventor
Jon Hasselgren
Jacob Munkberg
Petrik Clarberg
Tomas Akenine-Möller
Ville Miettinen
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 DE112009002383T5 publication Critical patent/DE112009002383T5/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
    • 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

Landscapes

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

Abstract

Eine erste Darstellung einer Gruppe von Vertices kann empfangen werden und eine zweite Darstellung der Gruppe von Vertices kann basierend auf der ersten Darstellung bestimmt werden. Ein erster Satz von Befehlen kann auf der zweiten Darstellung der Gruppe von Vertices ausgeführt werden zum Bereitstellen einer dritten Darstellung der Gruppe von Vertices. Der erste Satz von Befehlen ist einer Vertex-Positionsbestimmung zugeordnet. Die dritte Darstellung der Gruppe von Vertices wird einem Culling-Prozess unterzogen.

Description

  • HINTERGRUND
  • Dies bezieht sich allgemein auf Grafikverarbeitung und insbesondere auf Culling bei der Grafikverarbeitung.
  • Neue Anwendungen und Spiele verwenden realistischere Grafikverarbeitungstechniken denn je. Als ein Ergebnis liegt immer ein Vorteil in einer Erhöhung der aufrechterhaltenen Bildfrequenz, die die gerenderten Bilder auf einem Bildschirm pro Sekunde darstellt, bei einer höheren Komplexität der Szene, einer höheren Geometriedetaillierung, einer höheren Auflösung und einer höheren Qualität. Idealerweise bestehen die verbesserten Eigenschaften darin, dass das Bild auf dem Bildschirm so schnell wie möglich gerendert werden kann.
  • Eine Möglichkeit, die Leistungsfähigkeit zu erhöhen, besteht darin, die Rechenleistung von Grafikverarbeitungseinheiten durch Ermöglichen von höheren Taktgeschwindigkeiten, Pipelining oder Ausnutzen von parallelen Berechnungen zu erhöhen. Jedoch können einige dieser Techniken zu einem höheren Leistungsverbrauch und zu mehr erzeugter Wärme führen. Für batteriebetriebene Vorrichtungen kann ein höherer Leistungsverbrauch die Batterielebenszeit reduzieren. Leistungsverbrauch und Wärme sind größte Beschränkungen für mobile Vorrichtungen und Desktop-Display-Adapter. Darüber hinaus sind den Taktgeschwindigkeiten von jeder gegebenen Grafikverarbeitungseinheit Schranken gesetzt.
  • Ein Primitiv ist ein geometrisches Gebilde, wie zum Beispiel ein Dreieck, ein Viereck, ein Polygon oder irgendeine andere geometrische Form. Alternativ kann ein Primitiv eine Oberfläche oder ein Punkt im Raum sein. Ein Primitiv, das als ein Dreieck dargestellt ist, hat drei Vertices und ein Viereck hat vier Vertices. Somit umfasst ein Vertex (Eckpunkt) Daten, die einer Stelle im Raum zugeordnet sind. Ein Vertex kann zum Beispiel alle Daten umfassen, die der Ecke eines Primitivs zugeordnet sind. Den Vertices sind nicht nur drei räumliche Koordinaten zugeordnet, sondern ebenfalls andere grafische Informationen, um Objekte richtig zu rendern, die Farbe, Reflektionseigenschaften, Texturen und Oberflächennormalen aufweisen.
  • Culling kann verwendet werden, um eine unnötige Grafikverarbeitung zu vermeiden. Bildelemente, die zum Beispiel nicht in der Endabbildung offengelegt werden, können frühzeitig bei der Verarbeitung ausgesondert werden, um einen Leistungsverlust zu vermeiden, der einer Verarbeitung von Elementen eigen ist, die keinen Unterschied ausmachen. Somit kann Culling verwendet werden, um Details der Rückseite einer Oberfläche zu entfernen, die in der Endabbildung nicht gezeigt wird, um Elemente zu entfernen, die von anderen Elementen verdeckt werden, und in einer Vielzahl von anderen Fällen können Elemente ausgesondert werden, die für die Endabbildung unwesentlich sind.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • 1a ist eine schematische Abbildung einer Vertex-Culling-Operation in Übereinstimmung mit einer Ausführungsform;
  • 1b ist eine schematische Abbildung einer anderen Ausführungsform der vorliegenden Erfindung;
  • 1c ist eine schematische Abbildung einer noch weiteren Ausführungsform der vorliegenden Erfindung;
  • 1d ist eine schematische Abbildung einer noch weiteren Ausführungsform der vorliegenden Erfindung;
  • 1e ist eine schematische Abbildung einer noch weiteren Ausführungsform der vorliegenden Erfindung;
  • 2a ist ein Flussdiagramm für die in den 1a bis 1e gezeigte Ausführungsform;
  • 2b ist ein Flussdiagramm für die in den 1a bis 1e gezeigte Ausführungsform;
  • 2c ist ein Flussdiagramm für die in den 1a bis 1e gezeigte Ausführungsform;
  • 2d ist ein Flussdiagramm für die in den 1a bis 1e gezeigte Ausführungsform;
  • 3 ist ein Flussdiagramm, das das Vertex-Sondierungsverfahren zeigt, das in den Vertex-Sondierungseinheiten aus den 1a bis 1e ausgeführt werden kann; und
  • 4 ist eine schematische Abbildung eines Universalcomputers in Übereinstimmung mit einer Ausführungsform der vorliegenden Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • In Übereinstimmung mit einigen Ausführungsformen kann im Gegensatz zum Durchführen von Culling auf einzelnen Vertices ein Culling auf Gruppen von Vertices durchgeführt werden. Das Durchführen von Culling auf Gruppen von Vertices kann in einigen Ausführungsformen vorteilhaft sein, da Gruppen von Vertices verworfen werden können, was in einigen Fällen zu einem Leistungszugewinn führen kann. Darüber hinaus ist eine Mehrzahl von Oberflächen von Objekten, die gerendert werden, unsichtbar und die vollständig gerenderten Bilder werden bei dem Verfahren nicht weitergegeben, was zu einem Leistungszugewinn führt. Anders ausgedrückt vermeidet in einigen Ausführungsformen das Durchführen von Culling auf Gruppen von Vertices ein Rendern von Oberflächen, die im aktuellen Frame nicht sichtbar sind, wodurch in einigen Fällen ein Leistungszugewinn erreicht wird.
  • 1a ist ein Blockdiagramm, das eine Ausführungsform eines Display-Adapters 201 gemäß einer Ausführungsform darstellt. Der Display-Adapter 201 umfasst Schaltkreise zum Erzeugen von digital dargestellter Grafik, die eine Vertex-Culling-Einheit 214 zum Culling von Gruppen von Vertices bilden.
  • Die Eingabe 210 der Vertex-Culling-Einheit 214 ist eine erste Darstellung einer Gruppe von Vertices. Eine erste Darstellung einer Gruppe von Vertices können die Vertices selbst sein.
  • In der Vertex-Culling-Einheit 214 wird das Culling auf Gruppen von Vertices und auf Darstellungen von Vertices durchgeführt. Die Ausgabe 222 der Vertex-Culling-Einheit 214 kann darin bestehen, dass die Gruppe von Vertices verworfen werden soll. Die Ausgabe 224 des Display-Adapters 201 kann auf einem Display dargestellt sein.
  • Der Display-Adapter 201 kann ferner eine in 1b gezeigte Vertex-Sondierungseinheit 212 umfassen. Die Vertex-Sondierungseinheit 212 ist eingerichtet, zu prüfen, ob mindestens ein Vertex aus der Gruppe von Vertices ausgesondert werden kann. Der mindestens eine Vertex kann der erste, der letzte und/oder der mittlere Vertex in der Gruppe von Vertices sein. Alternativ kann er aus der Gruppe von Vertices zufällig ausgewählt sein. Die Vertex-Sondierungseinheit 212 kann einen Vertex-Shader verwenden, um den Vertex zu transformieren. Die Vertex-Sondierungseinheit 212 führt dann zum Beispiel ein Sichtbereich-Culling durch. Die Einheit 212 bestimmt, ob der mindestens eine Vertex innerhalb des Sichtbereichs liegt und falls dem so ist, kann er nicht ausgesondert werden. Es ist jedoch zu beachten, dass andere einem Fachmann bekannte Culling-Techniken ebenfalls verwendet werden können.
  • Falls der mindestens eine Vertex aus der Gruppe von Vertices nicht ausgesondert werden kann, impliziert dies, dass die gesamte Gruppe von Vertices nicht ausgesondert werden kann und dann ist es besser, das Culling in der Vertex-Culling-Einheit 214 auf der gesamten Gruppe der Vertices nicht durchzuführen, da ein solches Culling Verarbeitungskapazität verbraucht.
  • 1c ist ein Blockdiagramm, das darstellt, wie in einer Ausführungsform unterschiedliche Entitäten in einem Display-Adapter 201 interagieren können. Der Display-Adapter 201 umfasst eine Vertex-Culling-Einheit 214, einen Vertex-Shader 216, eine Dreieckstraversierungseinheit 218 und einen Fragment-Shader 220.
  • In einer Ausführungsform kann der Display-Adapter 201 aus 1c ebenfalls eine Vertex-Sondierungseinheit 212 umfassen, die vorher in Verbindung mit 1b beschrieben worden ist.
  • In einer noch weiteren in 1d gezeigten Ausführungsform umfasst der Display-Adapter 201 eine Vertex-Culling-Einheit 214, einen Vertex-Shader 216, eine Dreieckstraversierungseinheit 218, eine Fragment-Culling-Einheit 228 und einen Fragment-Shader 220. In einer Ausführungsform kann der Display-Adapter 201 aus 1d ebenfalls eine Vertex-Sondierungseinheit 212 umfassen.
  • In der Fragment-Culling-Einheit 228 wird Culling auf Kacheln gemäß einem austauschbaren Culling-Programm durchgeführt, das ebenfalls als ein austauschbares Culling-Modul bekannt ist. Die Details dieses Culling-Programms und die Auswirkungen werden detaillierter in der US-Patentanmeldung mit der Seriennummer 12/523,894, eingereicht am 21. Juli 2009, erklärt, deren Inhalt in Form eines Verweises hiermit aufgenommen ist.
  • Die Ausführungsform aus 1d kann ebenfalls eine Fragment-Sondierungseinheit 226 umfassen. Die Fragment-Sondierungseinheit 226 ist eingerichtet, zu prüfen, ob mindestens ein Pixel aus einer Kachel ausgesondert werden kann. Das mindestens eine Pixel kann zum Beispiel aus dem Mittelpixel der Kachel oder den vier Ecken der Kachel bestehen. Falls das mindestens eine Pixel der Kachel nicht ausgesondert werden kann, impliziert dies, dass die Kachel nicht ausgesondert werden kann und dann ist es besser, das Culling in der Fragment-Culling-Einheit 228 nicht durchzuführen, da das Culling Kapazität verschwenden kann.
  • In einer noch weiteren in 1e gezeigten Ausführungsform umfasst der Display-Adapter 201 eine Culling-Einheit für Basisprimitive 234, eine Vertex-Culling-Einheit 214, einen Vertex-Shader 216, eine Dreieckstraversierungseinheit 218 und einen Fragment-Shader 220.
  • Die Vertex-Culling-Einheit 214 und die Ausgabe 224 aus dem Display-Adapter 201 wurden vorher in Verbindung mit 1a beschrieben. Die Eingabe 208 der Culling-Einheit für Basisprimitive 234 ist ein Basisprimitiv. Ein geometrisches Primitiv im Bereich der Computergrafik wird gewöhnlich als ein atomares geometrisches Objekt interpretiert, welches das System zum Beispiel mit einem Zeichenvorgang oder einem Strich behandeln kann. Atomare geometrische Objekte können als geometrische Objekte interpretiert werden, die nicht in kleinere Objekte unterteilt werden können. Alle anderen grafischen Elemente sind aus diesen Primitiven aufgebaut.
  • In einer Ausführungsform kann der Display-Adapter 201 aus 1e ebenfalls eine Vertex-Sondierungseinheit 212 umfassen, die vorher in Verbindung mit 1b beschrieben worden ist. In der Culling-Einheit für Basisprimitive 234 wird Culling auf Basisprimitiven gemäß einem Culling-Programm durchgeführt.
  • Die Ausführungsform aus 1e kann ebenfalls eine Sondierungseinheit für Basisprimitive 232 umfassen. Die Sondierungseinheit für Basisprimitive 232 ist eingerichtet, zu prüfen, ob mindestens ein Vertex einer Basisprimitive ausgesondert werden kann. Mindestens ein Vertex der Basisprimitive wird ausgewählt. Der mindestens eine Vertex kann zum Beispiel aus den Vertices des Basisprimitivs oder dem Mittelpunkt des Basisprimitivs bestehen. Wenn der mindestens eine Vertex des Basisprimitivs nicht ausgesondert werden kann, kann das Basisprimitiv nicht ausgesondert werden und dann ist es besser, das Culling von Basisprimitiven in der Culling-Einheit für Basisprimitive 234 nicht durchzuführen, da das Culling von Basisprimitiven Kapazität verschwendet.
  • In einer noch weiteren Ausführungsform, die nicht in den Figuren gezeigt ist, kann der Display-Adapter 201 eine Sondierungseinheit für Basisprimitive 232, eine Culling-Einheit für Basisprimitive 234, eine Vertex-Sondierungseinheit 212, eine Vertex-Culling-Einheit 214, einen Vertex-Shader 216, eine Dreieckstraversierungseinheit 218, eine Fragmentsondierungseinheit 226, eine Fragment-Culling-Einheit 228 und einen Fragment-Shader 220 umfassen.
  • 2a zeigt ein Flussdiagramm für ein Culling-Programm, das auf einer Gruppe von Vertices in der Vertex-Culling-Einheit 214 aus den 1a, 1b, 1c, 1d und 1e ausgeführt werden kann. In Schritt 310 wird eine erste Darstellung einer Gruppe von Vertices empfangen. Die empfangene Gruppe von Vertices kann Vertices aus mindestens zwei Primitiven umfassen. Die Vertices, die in den Vertex-Shader 216 eingegeben werden sollen, werden unter Verwendung von so genannten Zeichenaufrufen in Gruppen gesammelt. Ein Zeichenaufruf umfasst Vertices und Informationen darüber, wie die Vertices verbunden sind, um Primitive zu erzeugen, wie zum Beispiel Dreiecke.
  • Die Vertices in einem Zeichenaufruf teilen sich einen gemeinsamen Rendering-Zustand, was impliziert, dass sie dem gleichen Vertex-Shader und ebenfalls dem gleichen Geometrie-Shader, Pixel-Shader und ebenfalls anderen Shader-Typen zugeordnet sind. Ein Rendering-Zustand beschreibt, wie ein bestimmter Typ eines Objekts gerendert wird, aufweisend seine Materialeigenschaften, zugeordnete Shader, Texturen, Transformationsmatritzen, Beleuchtung usw. Ein Rendering-Zustand kann zum Beispiel zum Rendern von allen Primitiven eines Teils eines Holzstücks, eines Teils eines Menschen oder des Stiels einer Blume verwendet werden. Alle Vertices in demselben Zeichenaufruf können verwendet werden, um Objekte mit dem gleichen Material/Erscheinungsbild zu rendern.
  • Gewöhnlich werden viele Zeichenaufrufe benötigt, um ein gesamtes Bild zu rendern. Zeichenaufrufe werden verwendet, da es effizienter ist, einen relativ großen Satz von Primitiven mit den gleichen Zuständen und Shadern zu rendern, als ein Primitiv pro Zeitpunkt zu rendern und für jedes Primitiv Shader-Programme wechseln zu müssen. Ein anderer Vorteil der Verwendung von Zeichenaufrufen besteht darin, dass Overhead in der Anwendungsprogrammierschnittstelle (API) und in der Grafikhardwarearchitektur vermieden wird.
  • In Schritt 320 wird basierend auf der ersten Gruppe von Vertices eine zweite Darstellung der Gruppe von Vertices bestimmt. Die zweite Darstellung der Gruppe von Vertices kann unter Verwendung von beschränkter Arithmetik berechnet werden. Ein dreidimensionales Modell umfasst k Vertices, pi, i ∊ [0, k – 1]. Die Grenzen der x-Koordinaten können zum Beispiel wie folgt berechnet werden: p ~x = [mini(pi x), maxi(pi x)], das heißt, dass das Minimum und das Maximum von allen x-Koordinaten der Vertices pi, i ∊ [0, k – 1] berechnet werden. Dies ergibt ein Intervall:
    Figure 00070001
    . Ein solches Intervall kann für alle anderen Komponenten von p sowie für alle anderen wechselnden Parameter berechnet werden. Es ist zu beachten, dass stattdessen andere Typen von Berechnungen angewendet werden können, um diese Grenzen zu berechnen. In dem obigen Beispiel wird Intervallarithmetik verwendet. Affine Arithmetik oder Taylor-Arithmetik sind Beispiele von anderen Typen von beschränkter Arithmetik, die stattdessen verwendet werden können.
  • In Schritt 330 wird ein erster Satz von Befehlen auf der zweiten Darstellung der Gruppe von Vertices zum Bereitstellen einer dritten Darstellung der Gruppe von Vertices ausgeführt. Bei der Ausführung des ersten Satzes von Befehlen kann beschränkte Arithmetik verwendet werden. Die beschränkte Arithmetik kann zum Beispiel Taylor-Arithmetik, Intervallarithmetik oder affine Arithmetik sein, um ein paar Beispiele zu nennen.
  • In einer Ausführungsform werden ein oder mehrere Polynome auf die Attribute der Gruppe von Vertices angepasst und Taylor-Modelle werden konstruiert, wobei der polynomielle Teil die Koeffizienten der angepassten Polynome umfasst und das Restglied derart angeglichen ist, dass das Taylor-Modell alle Vertices in der Gruppe aufweist. Ein solcher Ansatz kann in einigen Fällen genauere Grenzen als beim Verwenden von Intervallarithmetik ergeben.
  • In Schritt 340 wird die dritte Darstellung der Gruppe von Vertices einem Culling-Prozess unterzogen. Culling wird durchgeführt, um ein Zeichnen von Objekten oder Teilen von Objekten zu vermeiden, die nicht gesehen werden.
  • 2b bis 2d zeigen Flussdiagramme für unterschiedliche Ausführungsformen eines Culling-Programms gemäß 2a, das auf einer Gruppe von Vertices in der Vertex-Culling-Einheit 214 aus den 1a, 1b, 1c, 1d und 1e ausgeführt werden kann. Die in Schritt 310 empfangenen Gruppen von Vertices können auf unterschiedliche Art und Weise gesammelt werden. Eine Möglichkeit besteht darin, den gesamten Zeichenaufruf zu verwenden, was impliziert, dass die erste Darstellung der Gruppe von Vertices alle Vertices in dem Zeichenaufruf umfasst. Eine andere Möglichkeit besteht darin, die Vertices von m Primitiven zu sammeln, wobei m eine Konstante ist. Wenn diese Alternative verwendet wird, kann sich die erste Darstellung der Gruppe von Vertices über mehr als einen Zeichenaufruf erstrecken. Eine andere Möglichkeit besteht darin, die Vertices gemäß Schritt 311, wie in 2b angegeben, zu sammeln. Wenn die Anzahl von Vertices in der Gruppe von Vertices einen Schwellwert übersteigt, wird die Gruppe von Vertices in mindestens zwei Untergruppen geteilt, wobei die mindestens zwei Untergruppen Vertices umfassen, die dem gleichen Satz von Befehlen zugeordnet sind, die der Vertex-Positionsbestimmung zugeordnet sind. Diese Möglichkeit des Sammelns von Vertices kann in einer Ausführungsform eine Kombination der zwei vorhergehend beschriebenen Möglichkeiten sein. Beim Verwenden dieser Möglichkeit kann sich eine Gruppe nicht über mehr als einen Zeichenaufruf erstrecken und die Größe der Gruppe muss nicht größer als m sein. Eine andere Möglichkeit, die Vertices zu sammeln, umfasst ein Berechnen von Intervallen, die zum Beispiel die Positionen der Vertices umschließen. Die Intervalle können ebenenfalls für andere Parameter berechnet werden, wie zum Beispiel Farbe. Vertices werden zu der Gruppe hinzugefügt, bis die Intervalle einen vorherbestimmten Schwellwert übersteigen.
  • In einer Ausführungsform kann in Schritt 320 die zweite Darstellung der Gruppe von Vertices berechnet werden und dann in einem Speicher in Schritt 320a gespeichert werden (2b). Das nächste Mal, wenn die zweite Darstellung der Gruppe von Vertices benötigt wird, kann sie aus dem Speicher geholt werden. Dies ist kapazitätseffizient, da die Berechnung nicht für jede Gruppe von Vertices durchgeführt werden muss. Diese Lösung ist möglich, so lange die Gruppen von Vertices, die eingegeben werden, dem gleichen Satz von Befehlen, die der Vertex-Positionsbestimmung zugeordnet sind, und den gleichen Vertex-Attributen zugeordnet sind. Vertex-Attribute können zum Beispiel Vertex-Positionen, Normalen, Texturkoordinaten usw. sein.
  • In einer anderen Ausführungsform kann in Schritt 320 die zweite Darstellung der Gruppe von Vertices aus einem Speicher in Schritt 320b geholt werden (2b).
  • In einer Ausführungsform kann der erste Satz von Befehlen aus einem zweiten Satz von Befehlen abgeleitet sein, die der Vertex-Positionsbestimmung zugeordnet sind (Schritt 321 in 2c). Der zweite Satz von Befehlen, die der Vertex-Positionsbestimmung zugeordnet sind, soll hier als die Befehle in einem Vertex-Shader interpretiert werden.
  • Der Satz von Befehlen wird dann analysiert und alle Befehle, die zum Berechnen der Vertex-Position verwendet werden, werden isoliert. Die Befehle werden auf ein Arbeiten mit beschränkter Arithmetik neu definiert, z. B. Taylor-Arithmetik, Intervallarithmetik, affine Arithmetik oder eine andere geeignete Arithmetik.
  • Angenommen, dass ein Vertex in homogenen Koordinaten als P = (px, py, pz, pw)T bezeichnet wird (wobei normalerweise pw = 1 ist) und T der Transponiertenoperator ist, das heißt, es werden Spaltenvektoren verwendet. In der einfachsten Form ist ein Vertex-Shader-Programm eine Funktion, die auf einem Vertex, p, arbeitet und eine neue Position Pd berechnet. Allgemeiner ist ein Vertex-Shader-Programm eine Funktion, die auf einem Vertex, p, und einem Satz von wechselnden Parametern, ti, i ∊ [0, n – 1], arbeitet, siehe Gleichung (1). P = f(p, t, M) Gleichung (1)
  • Um die Notation zu vereinfachen, werden alle ti-Parameter in einen langen Vektor, t, gesteckt. Die Parameter können z. B. eine Zeit, Texturkoordinaten, Normalenvektoren, Texturen und weitere sein. Der Parameter, M, stellt eine Sammlung von konstanten Parametern dar, wie z. B. Matrizen, physikalische Konstanten usw.
  • Das Vertex-Shader-Programm kann neben Pd viele andere Ausgaben und deshalb ebenfalls weitere Eingaben haben. Im Folgenden wird angenommen, dass die Argumente (Parameter) für f bei der Berechnung von Pd verwendet werden.
  • Beim Ableiten des ersten Satzes von Befehlen, die der Vertex-Positionsbestimmung zugeordnet sind, wird der Vertex-Shader neu formuliert, so dass die Eingabe die zweite Darstellung ist (z. B. Intervallgrenzen für die Attribute der Gruppe von Vertices) und die Ausgabe aus Grenzen für die Vertex-Positionen besteht, siehe Gleichung (2). P ~d = f(P ~, t ~, M) Gleichung (2)
  • Eine kurze Beschreibung von Taylor-Modellen folgt, um das Verständnis der folgenden Schritte zu vereinfachen. Intervalle werden bei Taylor-Modellen verwendet und die folgende Notation wird für ein Intervall verwendet: â = [a, a] = {x|a ≤ x ≤ a} Gleichung (3)
  • Es sei eine n + 1-mal differenzierbare Funktion, f(u), gegeben, wobei u ∊ [u0, u1], dann ist das Taylor-Modell von f aus einem Taylor-Polynom, Tf, und einem Intervallrestglied, r ^f, zusammengestellt. Ein Taylor-Modell n-ter Ordnung, hier als f ~ bezeichnet, über dem Definitionsbereich u ∊ [u0, u1] ist dann gegeben als:
    Figure 00100001
    wobei
    Figure 00100002
    das Taylor-Polynom ist und
    Figure 00100003
    das Intervallrestglied ist. Diese Darstellung wird als ein Taylor-Modell bezeichnet und ist eine konservative Kapselung der Funktion f über dem Definitionsbereich u ∊ [u0, u1]. Es ist ebenfalls möglich, arithmetische Operationen auf Taylor-Modellen zu definieren, wobei das Ergebnis ebenfalls eine konservative Kapselung ist (ein anderes Taylor-Modell). Als ein einfaches Beispiel sei angenommen, dass f + g berechnet werden soll und dass diese Funktionen durch Taylor-Modelle dargestellt werden, f ~ = (Tf, r ~f) und g ~ = (Tg, r ~g). Das Taylor-Modell der Summe ist dann (Tf + Tg, r ^f + r ^g). Komplexere Operationen wie Multiplikation, Sinus, Logarithmus, Exponent, Kehrwert usw. können ebenfalls abgeleitet werden. Implementierungsdetails für diese Operatoren sind in BERZ, M. und HOFFSTÄTTER, G., 1998, Computation and Application of Taylor Polynomials with Interval Remainder Bounds, Reliable Computing, 4, 1, 83–97, beschrieben.
  • In einer Ausführungsform kann die zweite Darstellung der Gruppe von Vertices aus Intervallgrenzen für die Vertex-Attribute bestehen, z. B. Position und/oder Normalengrenzen. Der erste Satz von Befehlen kann unter Verwendung von beschränkter Arithmetik ausgeführt werden. In dieser Ausführungsform ist die dritte Darstellung ein Begrenzungsvolumen. In einer Ausführungsform kann das Begrenzungsvolumen eine Bounding-Box sein. Die dritte Darstellung ist z. B. durch Berechnen der minimalen und maximalen Werte für jedes Vertex-Attribut bestimmt. In einer Ausführungsform wird ein Begrenzungsvolumen bestimmt, das die dritte Darstellung der Gruppe von Vertices umschließt, und das Begrenzungsvolumen wird einem Culling-Prozess unterzogen, Schritt 332 aus 2c.
  • Ein Begrenzungsvolumen für einen Satz von Objekten ist ein geschlossenes Volumen, das die Vereinigung der Objekte in dem Satz vollständig umfasst. Begrenzungsvolumen können verschiedene Gebilde aufweisen, z. B. Boxen, wie Quader oder Rechtecke, Sphären, Zylinder, Polytope und konvexe Hüllen.
  • Das Begrenzungsvolumen kann in einer Ausführungsform ein enges Begrenzungsvolumen sein. Dass das Begrenzungsvolumen eng ist, impliziert, dass der Bereich oder das Volumen des Begrenzungsvolumens so klein wie möglich ist, jedoch weiterhin die dritte Darstellung der Gruppe von Vertices vollständig umschließt.
  • In einer Ausführungsform ist die zweite Darstellung der Gruppe von Vertices ein Taylor-Modell der Vertex-Attribute. Der erste Satz von Befehlen wird unter Verwendung von Taylor-Arithmetik ausgeführt. Die dritte Darstellung einer Gruppe von Vertices kann aus Grenzen bestehen, die aus der zweiten Darstellung unter Verwendung des ersten Satzes von Befehlen berechnet werden. Diese Grenzen können z. B. gemäß dem berechnet werden, was in „Interval Approximation of Higher Order to the Ranges of Functions", Qun Lin und J. G. Rokne, Computers Math. Applic., Vol. 31, Nr. 7, Seiten 101–109, 1996, offenbart ist. In einer Ausführungsform wird ein Begrenzungsvolumen bestimmt, das die dritte Darstellung der Gruppe von Vertices umschließt, und das Begrenzungsvolumen wird einem Culling-Prozess unterzogen.
  • In einer anderen Ausführungsform kann die erste Darstellung der Gruppe von Vertices eine parametrische Oberfläche (z. B. eine bereits tessellierte Oberfläche) beschreiben, die durch zwei Koordinaten parametrisiert ist, z. B. (u, v). In einer anderen Ausführungsform wurden ein oder mehrere polynomielle Modelle auf die Attribute der Gruppe von Vertices angepasst.
  • In einer Ausführungsform kann die dritte Darstellung ein Taylor-Modell sein und kann eine polynomielle Näherung der Vertex-Positionsattribute sein. Spezieller können es Positionsgrenzen sein: p ~(u, v) = (p ~x, p ~y, p ~z, p ~w), d. h. vier Taylor-Modelle. Für eine einzelne Komponente, z. B. x, kann dies auf der Basis von Potenzen wie folgt dargestellt werden (das Restglied, r ^f, ist aus Klarheitsgründen ausgelassen): Px(u, v) = Σ i+j≤na–ijuivj Gleichung (5)
  • In einer Ausführungsform kann die dritte Darstellung der Gruppe von Vertices aus Normalengrenzen bestehen. Für eine parametrisierte Oberfläche kann die nicht-normalisierte Normale, n, wie folgt berechnet werden: n(u, v) = ∂p(u, v) / ∂ux ∂p(u, v) / ∂v Gleichung (6)
  • Die Normalengrenzen, d. h. das Taylor-Modell der Normalen, werden dann wie folgt berechnet:
    Figure 00120001
  • Die dritte Darstellung der Gruppe von Vertices kann aus Taylor-Polynomen in einer Potenzform bestehen. Eine Möglichkeit des Bestimmens des Begrenzungsvolumens kann durch Berechnen der Ableitungen der Taylor-Polynome und somit Auffinden des Minimums und Maximums der dritten Darstellung erfolgen. Eine andere Möglichkeit zum Bestimmen des Begrenzungsvolumens kann gemäß dem Folgenden erfolgen. Die Taylor-Polynome werden in die Bernstein-Form umgewandelt. 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 erhalten werden, wird das Begrenzungsvolumen durch Auffinden des minimalen und maximalen Kontrollpunktwerts in jeder Dimension berechnet. Ein Transformieren von Gleichung 5 in die Bernstein-Basis ergibt: p(u, v) = Σ i+j≤nPijB n / ij(u, v) Gleichung (8) wobei B n / ij(u, v) = ( n / i)( n-i / j)uivj(1 – u – v)n-i-j die Bernstein-Polynome in dem bivariaten Fall über einem dreieckigen Definitionsbereich sind. Diese Umwandlung wird unter Verwendung der folgenden Formel durchgeführt, wobei die Formel in HUNGERBÜHLER, R. und GARLOFF, J., 1998, Bonds for the Range of a Bivariate Polynomial over a Triangle. Reliable Computing, 4, 1, 3–13, beschrieben ist:
    Figure 00130001
  • Um eine Bounding-Box zu berechnen, werden einfach die minimalen und maximalen Werte über allen pij für jede Dimension x, y, z und w berechnet. Dies ergibt eine Bounding-Box, b ^ = (b ^x, b ^y, b ^z, b ^w), wobei jedes Element ein Intervall ist, z. B.
    Figure 00130002
    .
  • In diesem Ansatz werden die oben abgeleiteten Positionsgrenzen, Normalengrenzen und das Begrenzungsvolumen zum Anwenden von unterschiedlichen Culling-Techniken auf den Gruppen von Vertices verwendet.
  • In einer Ausführungsform wird ein Sichtbereich-Culling unter Verwendung der Positionsgrenze oder des Begrenzungsvolumens durchgeführt, Schritt 341 aus 2d. In einer Ausführungsform wird ein Verdeckungs-Culling unter Verwendung der Positionsgrenze oder des Begrenzungsvolumens durchgeführt, Schritt 342 aus 2d. In einer Ausführungsform wird ein dritter Satz von Befehlen aus dem zweiten Satz von Befehlen abgeleitet und der dritte Satz von Befehlen wird zum Bereitstellen einer Normalengrenze ausgeführt, Schritt 343 aus 2d. In einer Ausführungsform wird ein Rückseiten-Culling unter Verwendung mindestens eines aus der Gruppe aus der Normalengrenze, der Positionsgrenze und dem Begrenzungsvolumen durchgeführt, Schritt 344 aus 2d. In einer Ausführungsform wird mindestens einer der Schritte 341, 342 und 344 durchgeführt. Die Schritte 341 bis 344 müssen nicht in der offenbarten genauen Reihenfolge durchgeführt werden.
  • Die hier offenbarten Culling-Techniken dürfen nicht beschränkend ausgelegt werden, da sie als Beispiele bereitgestellt werden. Einem Fachmann wäre klar, dass ein Rückseiten-Culling (Backface Culling), Verdeckungs-Culling (Occlusion Culling) und ein Sichtbereich-Culling (View Frustum Culling) unter Verwendung anderer als der hier beschriebenen Techniken durchgeführt werden können.
  • Sichtbereich-Culling ist eine Culling-Technik, die auf der Tatsache basiert, dass nur Objekte, die sichtbar sein werden, d. h., die sich innerhalb des aktuellen Sichtbereichs befinden, gezeichnet werden sollen. Der Sichtbereich kann als da Gebiet des Raums in der modellierten Welt definiert sein, der auf dem Bildschirm erscheinen kann. Das Zeichnen von Objekten außerhalb des Bereichs wäre eine Verschwendung von Zeit und von Ressourcen, da sie sowieso nicht sichtbar sind. Wenn sich eine Objekt gänzlich außerhalb des Sichtbereichs befindet, kann es nicht sichtbar sein und kann verworfen werden.
  • In einer Ausführungsform werden die Positionsgrenzen des Begrenzungsvolumens gegen die Ebenen des Sichtbereichs getestet. Da sich das Begrenzungsvolumen, b ^, im homogenen Clip-Raum befindet, kann der Test im Clip-Raum durchgeführt werden. Eine Standardoptimierung für reine Boxtests kann verwendet werden, wobei nur eine einzige Ecke des Begrenzungsvolumens, das Begrenzungsvolumen sei eine Bounding-Box, verwendet wird, um die Ebenengleichung zu evaluieren. Jeder Ebenentest ergibt dann eine Addition und einen Vergleich. Ein Testen, ob sich das Volumen außerhalb der linken Ebene befindet, wird z. B. durchgeführt unter Verwendung von: b x + b w < 0 . Das Testen kann ebenfalls unter Verwendung der Positionsgrenzen, p ~(u, v) = (p ~x, p ~y, p ~z, p ~w) durchgeführt werden. Da diese Tests zeit- und ressourceneffizient sind, kann es in einigen Ausführungsformen vorteilhaft sein, dass der Sichtbereichstest der erste Test ist.
  • Rückseiten-Culling verwirft Objekte, die von dem Betrachter weg orientiert sind, d. h. dass alle Normalenvektoren des Objekts von dem Betrachter weggerichtet sind. Diese Objekte werden nicht sichtbar sein und es besteht somit keine Notwendigkeit, sie zu zeichnen.
  • Es sei ein Punkt, p(u, v), auf einer Oberfläche gegeben, dann wird Rückseiten-Culling im Allgemeinen wie folgt berechnet: c = p(u, v)·n(u, v) Gleichung (10) wobei n(u, v) der Normalenvektor bei (u, v) ist. Wenn c > 0, dann ist p(u, v) für diesen bestimmten Wert von (u, v) rückseitig. Als solches kann diese Formel ebenfalls verwendet werden, um z. B. ein Dreieck oder eine Gruppe von Dreiecken auszusondern (zu cullen), wie z. B. Dreiecke, die von einer Gruppe von Vertices beschrieben sind. Das Taylor-Modell des Skalarprodukts (siehe Gleichungen 7 und 10) wird berechnet als: c ~ = p ~(u, v)·ñ(u, v). Um in der Lage zu sein, rückseitig auszusondern, muss das Folgende über dem gesamten Dreiecksdefinitionsbereich eingehalten sein: c ~ > 0. Die untere Grenze für wird konservativ gegen ein Verwenden der Eigenschaft der konvexen Hülle der Bernstein-Form geschätzt. Dies ergibt ein Intervall, c ~ = [c, c] und das Dreieck oder die Gruppe von Dreiecken können ausgesondert werden, wenn c > 0.
  • In einer anderen Ausführungsform werden Intervallgrenzen für die Normalen zum Prüfen, ob die Rückseitenbedingung erfüllt ist, berechnet.
  • Das Testen kann ebenfalls unter Verwendung der Positionsgrenzen, p ~(u, v) = (p ~x, p ~y, p ~z, p ~w) oder alternativ des Begrenzungsvolumens durchgeführt werden.
  • Verdeckungs-Culling impliziert, dass Objekte, die verdeckt sind, verworfen werden. Im Folgenden wird Verdeckungs-Culling für eine Bounding-Box beschrieben. Es ist jedoch möglich, Verdeckungs-Culling ebenfalls auf anderen Typen von Begrenzungsvolumen durchzuführen.
  • Die Verdeckungs-Culling-Technik ist einer hierarchischen Tiefenpufferung sehr ähnlich, außer dass im Tiefenpuffer nur eine einzige Zusatzstufe verwendet wird (8×8-Pixel-Kacheln). Der maximale Tiefenwert, Z tile / max , wird in jeder Kachel gespeichert. Dies ist eine Standardtechnik in der Grafikverarbeitung beim Rastern von Dreiecken. Die Bounding-Box des Clip-Raums, b, wird projiziert und alle Kacheln, die diese achsenausgerichtete Box überlappen, werden besucht. In jeder Kachel wird der klassische Verdeckungs-Culling-Test durchgeführt: Z box / min ≥ Z tile / max , der anzeigt, dass die Box in der aktuellen Kachel verdeckt wird, wenn der Vergleich erfüllt ist. Die minimale Tiefe der Box, Z box / min , wird aus der Bounding-Box des Clip-Raums und die maximale Tiefe der Kachel, Z tile / max , aus dem hierarchischen Tiefenpuffer (der in einer gegenwärtigen Grafikverarbeitungseinheit bereits existiert) erhalten. Es ist zu beachten, dass das Testen beendet werden kann, sobald eine Kachel gefunden wird, die nicht verdeckt ist, und dass es unmittelbar ersichtlich ist, weitere Stufen zu dem hierarchischen Tiefenpuffer hinzuzufügen. Der Verdeckungs-Culling-Test kann als eine sehr kosteneffektive Vor-Rasterisierung der Bounding-Box der Gruppe von Primitiven, die gerendert werden sollen, angesehen werden. Da er auf der Basis von Kacheln arbeitet, ist er preiswerter als eine Verdeckungsanfrage.
  • In einer anderen Ausführungsform kann das Testen ebenfalls unter Verwendung der Positionsgrenzen, p ~(u, v) = (p ~x, p ~y, p ~z, p ~w), durchgeführt werden.
  • In einer Ausführungsform ist der Culling-Prozess austauschbar. Dies impliziert, dass die Vertex-Culling-Einheit 214 mit einem benutzerdefinierten Culling-Prozess versorgt werden kann.
  • 3 zeigt ein Flussdiagramm für ein Sondierungsprogramm, das auf mindestens einem Vertex in der Vertex-Sondierungseinheit 212 aus den 1a, 1b, 1c, 1d und 1e ausgeführt werden kann.
  • Mindestens ein Vertex wird aus der Gruppe von Vertices in Schritt 301 ausgewählt. Ein Satz von Befehlen, die der Vertex-Positionsbestimmung zugeordnet sind, wird auf einer ersten Darstellung des mindestens einen Vertex zum Bereitstellen einer zweiten Darstellung des mindestens einen Vertex im Schritt 302 ausgeführt. Die zweite Darstellung des mindestens einen Vertex wird einem Culling-Prozess, Schritt 303, unterzogen, wobei ein Resultat des Culling-Prozesses eines aus einer Entscheidung, den mindestens einen Vertex zu verwerfen, und einer Entscheidung, den mindestens einen Vertex nicht zu verwerfen, umfasst. In dem Fall, dass das Resultat des Culling-Verfahrens eine Entscheidung umfasst, den mindestens einen Vertex zu verwerfen, werden die Schritte 310 bis 340 durchgeführt. Die in Verbindung mit den 2a bis 2d beschriebenen Schritte können in der Vorrichtung 201 der Erfindung oder Ausführungsformen der Erfindung durchgeführt werden.
  • 4 zeigt eine Übersichtsarchitektur eines typischen Universalcomputers 583, der den Display-Adapter 201 aus 1 verkörpert. Der Computer 583 hat einen Controller 570, z. B. eine Zentralverarbeitungseinheit, der in der Lage ist, Softwarebefehle auszuführen. Der Controller 570 ist mit einem flüchtigen Speicher 571, wie z. B. einem Random Access Memory (RAM), und einem Display-Adapter 500 verbunden, wobei der Display-Adapter dem Display-Adapter 201 aus 1 entspricht. Der Display-Adapter 500 ist wiederum mit einem Display 576 verbunden, wie z. B. einem Monitor, einem Flüssigkristall-Display(LCD)-Monitor usw. Der Controller 570 ist ebenfalls mit einem persistenten Speicher 573 verbunden, wie z. B. einem Festlaufwerk oder einem Flash-Speicher und einem optischen Speicher 574, wie z. B. einem Leser und/oder Schreiber von optischen Medien, wie z. B. CD, DVD, HD-DVD oder Blue-Ray. Eine Netzschnittstelle 581 ist ebenfalls mit dem Controller 570 zum Bereitstellen von Zugriff auf ein Netz 582 verbunden, wie z. B. ein Local Area Network, ein Wide Area Network (z. B. das Internet), ein Wireless Local Area Network oder ein Wireless Metropolitan Area Network. Durch eine Peripherieschnittstelle 577, z. B. eine Schnittstelle eines Typs eines Universal Serial Bus, Wireless Universal Serial Bus, Firewire, RS232-Serial, PS/2, kann der Controller 570 mit einer Maus 578, einer Tastatur 579 oder irgendeiner anderen Peripherie 580 kommunizieren, die einen Joystick, einen Drucker, einen Scanner usw. aufweist.
  • In einigen Ausführungsformen können die in den 2a bis 2d und 3 gezeigten Sequenzen als Hardware, Software oder Firmware implementiert sein. Bei als Software oder Firmware implementierten Ausführungsformen können computerausführbare Befehle in einem computerlesbaren Medium, wie z. B. einem Halbleiterspeichermedium, einem optischen oder magnetischen Speichermedium gespeichert sein. Geeignete Speichermedien für diesen Zweck weisen irgendeines aus dem Display-Adapter 500, dem Controller 570, der Peripherieschnittstelle 577, dem flüchtigen Speicher 571, dem persistenten Speicher 573 oder dem optischen Speicher 574 als Beispiele auf. Diese Befehle können von irgendeinem Prozessor, Controller oder Computer implementiert sein, aufweisend, jedoch nicht beschränkt auf den Display-Adapter 500, den Controller 570 oder die Peripherieschnittstelle 577, um ein paar Beispiele zu nennen.
  • Es ist zu beachten, dass, obwohl ein Universalcomputer oben beschrieben ist, um verschiedene Ausführungsformen der Erfindung zu verkörpern, die Erfindung gleichfalls gut in irgendeiner Umgebung verkörpert sein kann, in der digitale Grafik und insbesondere 3D-Grafik verwendet wird, z. B. Spielekonsolen, mobile Telefone, MP3-Player usw.
  • Ausführungsformen können in einer gänzlich universellen Architektur verkörpert sein. Die Architektur kann z. B. viele kleine Prozessorkerne umfassen, die einen beliebigen Typ eines Programms ausführen können. Dies impliziert im Gegensatz zu stärker hardwareorientierten Grafikverarbeitungseinheiten eine Art eines Softwaregrafikprozessors.
  • Die hier beschriebenen Grafikverarbeitungstechniken können in verschiedenen Hardwarearchitekturen implementiert sein. Grafikfunktionalität kann z. B. innerhalb eines Chipsatzes integriert sein. Alternativ kann ein diskreter Grafikprozessor verwendet werden. Als eine noch weitere Ausführungsform können die Grafikfunktionen von einem Universalprozessor implementiert sein, der einen Multicore-Prozessor aufweist.
  • Bezüge in diese Beschreibung auf „genau eine Ausführungsform” oder „eine Ausführungsform” bedeuten, dass ein bestimmtes Merkmal, Struktur oder Eigenschaft, die in Verbindung mit der Ausführungsform beschrieben ist, in mindestens eine Implementierung aufgenommen ist, die von der vorliegenden Erfindung umfasst ist. Somit beziehen sich die Vorkommen der Formulierungen „genau einer Ausführungsform” oder „in einer Ausführungsform” nicht notwendigerweise auf dieselbe Ausführungsform. Ferner können die bestimmten Merkmale, Strukturen oder Eigenschaften in anderen geeigneten Formen als der dargestellten bestimmten Ausführungsform eingerichtet sein und alle solche Formen können innerhalb der Ansprüche der vorliegenden Anmeldung umfasst sein.
  • Während die vorliegende Erfindung mit Bezug auf eine beschränkte Anzahl von Ausführungsformen beschrieben worden ist, wird der Fachmann zahlreiche Modifikationen und Variationen davon zu würdigen wissen. Es ist beabsichtigt, dass die angefügten Ansprüche alle solche Modifikationen und Variationen derart abdecken, dass sie im Umfang der vorliegenden Erfindung liegen.
  • 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 Nicht-Patentliteratur
    • BERZ, M. und HOFFSTÄTTER, G., 1998, Computation and Application of Taylor Polynomials with Interval Remainder Bounds, Reliable Computing, 4, 1, 83–97 [0050]
    • „Interval Approximation of Higher Order to the Ranges of Functions”, Qun Lin und J. G. Rokne, Computers Math. Applic., Vol. 31, Nr. 7, Seiten 101–109, 1996 [0054]
    • HUNGERBÜHLER, R. und GARLOFF, J., 1998, Bonds for the Range of a Bivariate Polynomial over a Triangle. Reliable Computing, 4, 1, 3–13 [0059]

Claims (30)

  1. Verfahren, das folgende Schritte umfasst: Empfangen einer ersten Darstellung einer Gruppe von Vertices; Bestimmen einer zweiten Darstellung der Gruppe von Vertices basierend auf der ersten Darstellung; Ausführen eines ersten Satzes von Befehlen auf der zweiten Darstellung der Gruppe von Vertices zum Bereitstellen einer dritten Darstellung der Gruppe von Vertices, wobei der erste Satz von Befehlen einer Vertex-Positionsbestimmung zugeordnet ist; und Unterziehen der dritten Darstellung der Gruppe von Vertices einem Culling-Prozess.
  2. Verfahren nach Anspruch 1, wobei das Ausführen eines ersten Satzes von Befehlen ein Verwenden von beschränkter Arithmetik umfasst, wobei die beschränkte Arithmetik mindestens eine aus der Gruppe ist, die eine Taylor-Arithmetik, eine Intervallarithmetik und eine affine Arithmetik aufweist.
  3. Verfahren nach Anspruch 1, wobei das Bestimmen einer zweiten Darstellung ferner ein Verwenden von beschränkter Arithmetik umfasst.
  4. Verfahren nach Anspruch 3, wobei die beschränkte Arithmetik mindestens eine aus der Gruppe ist, die eine Taylor-Arithmetik, eine Intervallarithmetik und eine affine Arithmetik aufweist.
  5. Verfahren nach Anspruch 1, wobei die Gruppe von Vertices Vertices aus mindestens zwei Primitiven umfasst.
  6. Verfahren nach Anspruch 1, wobei die Gruppe von Vertices Vertices umfasst, die dem gleichen Satz von Befehlen zugeordnet sind, die einer Vertex-Positionsbestimmung zugeordnet sind.
  7. Verfahren nach Anspruch 1, das ferner ein Ableiten des ersten Satzes von Befehlen aus einem zweiten Satz von Befehlen umfasst, die einer Vertex-Positionsbestimmung zugeordnet sind.
  8. Verfahren nach Anspruch 7, das ferner folgende Schritte umfasst: Ableiten eines dritten Satzes von Befehlen aus dem zweiten Satz von Befehlen und Ausführen des dritten Satzes von Befehlen zum Bereitstellen einer Normalengrenze.
  9. Verfahren nach Anspruch 1, wobei das Empfangen einer ersten Darstellung ferner folgende Schritte umfasst: falls die Anzahl von Vertices in der Gruppe von Vertices einen Schwellwert übersteigt, Aufteilen der Gruppe von Vertices in mindestens zwei Untergruppen, wobei die mindestens zwei Untergruppen Vertices umfassen, die dem gleichen Satz von Befehlen zugeordnet sind, die einer Vertex-Positionsbestimmung zugeordnet sind.
  10. Verfahren nach Anspruch 1, wobei das Bestimmen einer zweiten Darstellung ferner folgende Schritte umfasst: Berechnen der zweiten Darstellung der Gruppe von Vertices; und Speichern der zweiten Darstellung der Gruppe von Vertices in einem Speicher.
  11. Verfahren nach Anspruch 1, wobei das Bestimmen einer zweiten Darstellung ferner folgenden Schritt umfasst: Holen der zweiten Darstellung der Gruppe von Vertices aus einem Speicher.
  12. Verfahren nach Anspruch 1, das ferner folgende Schritte umfasst: Auswählen mindestens eines Vertex aus der Gruppe von Vertices; Ausführen eines Satzes von Befehlen, die einer Vertex-Positionsbestimmung zugeordnet sind, auf einer ersten Darstellung des mindestens einen Vertex zum Bereitstellen einer zweiten Darstellung des mindestens einen Vertex; und Unterziehen der zweiten Darstellung des mindestens einen Vertex einem Culling-Prozess, wobei ein Resultat des Culling-Prozesses eines der Folgenden umfasst eine Entscheidung, den mindestens einen Vertex auszusondern; eine Entscheidung, den mindestens einen Vertex nicht auszusondern; und im Fall, dass das Resultat des Culling-Prozesses eine Entscheidung umfasst, den mindestens einen Vertex auszusondern, ein Durchführen des Empfangens einer ersten Darstellung einer Gruppe von Vertices; des Bestimmens einer zweiten Darstellung der Gruppe von Vertices; des Ausführens eines Satzes von Befehlen, die einer Vertex-Positionsbestimmung zugeordnet sind, auf der zweiten Darstellung der Gruppe von Vertices zum Bereitstellen einer dritten Darstellung der Gruppe von Vertices; und des Unterziehens der dritten Darstellung der Gruppe von Vertices einem Culling-Prozess.
  13. Verfahren nach Anspruch 1, das ferner folgende Schritte umfasst: Bestimmen eines Begrenzungsvolumens, das die dritte Darstellung der Gruppe von Vertices umschließt; und Unterziehen des Begrenzungsvolumens einem Culling-Prozess.
  14. Verfahren nach Anspruch 13, wobei das Unterziehen des Begrenzungsvolumens dem Culling-Prozess ferner ein Durchführen von mindestens einem der Schritte umfasst: Unterziehen des Begrenzungsvolumens einem Sichtbereich-Culling; Unterziehen des Begrenzungsvolumens einem Rückseiten-Culling; und Unterziehen des Begrenzungsvolumens einem Verdeckungs-Culling.
  15. Verfahren nach Anspruch 1, wobei die dritte Darstellung mindestens eine aus der Gruppe ist, die eine Positionsgrenze und eine Normalengrenze aufweist.
  16. Verfahren nach Anspruch 15, wobei das Unterziehen der dritten Darstellung dem Culling-Prozess ferner ein Durchführen von mindestens einem der Schritte umfasst: Unterziehen der Positionsgrenze einem Sichtbereich-Culling; Unterziehen der Positionsgrenze oder der Normalengrenze einem Rückseiten-Culling; und Unterziehen der Positionsgrenze einem Verdeckungs-Culling.
  17. Vorrichtung, die Folgendes umfasst: eine Vertex-Culling-Einheit zum Empfangen einer ersten Darstellung einer Gruppe von Vertices, Bestimmen einer zweiten Darstellung der Gruppe von Vertices, Ausführen eines ersten Satzes von Befehlen, die einer Vertex-Positionsbestimmung zugeordnet sind, auf der zweiten Darstellung der Gruppe von Vertices zum Bereitstellen einer dritten Darstellung der Gruppe von Vertices, und Unterziehen der dritten Darstellung der Gruppe von Vertices einem Culling-Prozess; und einen Vertex-Shader, der an die Einheit gekoppelt ist.
  18. Vorrichtung nach Anspruch 17, die eine Vertex-Sondierungseinheit aufweist, die an die Vertex-Culling-Einheit gekoppelt ist, wobei die Vertex-Sondierungseinheit eingerichtet ist zum Bestimmen, ob mindestens ein Vertex einer Gruppe von Vertices ausgesondert werden kann.
  19. Vorrichtung nach Anspruch 17, die eine Dreieckstraversierungseinheit und einen Fragment-Shader aufweist, der an den Vertex-Shader gekoppelt ist.
  20. Vorrichtung nach Anspruch 17, die eine Sondierungseinheit für Basisprimitive aufweist, um zu prüfen, ob mindestens ein Vertex eines Basisprimitivs ausgesondert werden kann.
  21. Vorrichtung nach Anspruch 20, die eine Culling-Einheit für Basisprimitive aufweist zum Durchführen von Culling auf Basisprimitiven.
  22. Vorrichtung nach Anspruch 17, wobei die Vertex-Culling-Einheit eingerichtet ist zum Verwenden von beschränkter Arithmetik, um den ersten Satz von Befehlen auszuführen.
  23. Vorrichtung nach Anspruch 17, wobei die Vertex-Culling-Einheit eingerichtet ist zum Verwenden von beschränkter Arithmetik zum Bestimmen der zweiten Darstellung.
  24. Vorrichtung nach Anspruch 22, wobei die beschränkte Arithmetik mindestens eine aus einer Taylor-Arithmetik, einer Intervallarithmetik oder einer affinen Arithmetik ist.
  25. Vorrichtung nach Anspruch 21, wobei die Gruppe von Vertices Vertices aus mindestens zwei Primitiven umfasst.
  26. Computerausführbares Speichermedium, das Befehle speichert, die einen Computer in die Lage versetzen zum: Empfangen einer ersten Darstellung einer Gruppe von Vertices; Bestimmen einer zweiten Darstellung der Gruppe von Vertices basierend auf der ersten Darstellung; Ausführen eines ersten Satzes von Befehlen auf der ersten Darstellung der Gruppe von Vertices zum Bereitstellen einer dritten Darstellung der Gruppe von Vertices, wobei der erste Satz von Befehlen einer Vertex-Positionsbestimmung zugeordnet ist; und Unterziehen der dritten Darstellung der Gruppe von Vertices einem Culling-Prozess.
  27. Medium nach Anspruch 26, das ferner Befehle speichert zum Bestimmen, ob die Gruppe von Vertices die Vertices umfasst, die dem gleichen Satz von Befehlen zugeordnet sind, die der Vertex-Positionsbestimmung zugeordnet sind.
  28. Medium nach Anspruch 26, das ferner Befehle speichert zum Ableiten des ersten Satzes von Befehlen aus einem Satz von Befehlen, die der Vertex-Positionsbestimmung zugeordnet sind.
  29. Medium nach Anspruch 28, das ferner Befehle speichert zum Ableiten eines dritten Satzes von Befehlen aus dem zweiten Satz von Befehlen und Ausführen des dritten Satzes von Befehlen, um eine Normalengrenze bereitzustellen.
  30. Medium nach Anspruch 26, das ferner Befehle speichert zum Bestimmen, ob die Anzahl von Vertices in der Gruppe von Vertices einen Schwellwert übersteigt, und, falls dem so ist, zum Unterteilen der Gruppe von Vertices in mindestens zwei Untergruppen, wobei die mindestens zwei Untergruppen Vertices umfassen, die dem gleichen Satz von Befehlen zugeordnet sind, die der Vertex-Positionsbestimmung zugeordnet sind.
DE112009002383T 2008-10-20 2009-10-19 Grafikverarbeitung unter Verwendung von Culling auf Gruppen von Vertices Ceased DE112009002383T5 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US10676608P 2008-10-20 2008-10-20
US61/106,766 2008-10-20
US12/581,339 US20100097377A1 (en) 2008-10-20 2009-10-19 Graphics Processing Using Culling on Groups of Vertices
PCT/US2009/061183 WO2010048093A2 (en) 2008-10-20 2009-10-19 Graphics processing using culling on groups of vertices
US12/581,339 2009-10-19

Publications (1)

Publication Number Publication Date
DE112009002383T5 true DE112009002383T5 (de) 2011-09-29

Family

ID=42108303

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112009002383T Ceased DE112009002383T5 (de) 2008-10-20 2009-10-19 Grafikverarbeitung unter Verwendung von Culling auf Gruppen von Vertices

Country Status (6)

Country Link
US (1) US20100097377A1 (de)
EP (1) EP2338139A4 (de)
CN (1) CN102171720A (de)
DE (1) DE112009002383T5 (de)
GB (1) GB2475465A (de)
WO (1) WO2010048093A2 (de)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8587585B2 (en) * 2010-09-28 2013-11-19 Intel Corporation Backface culling for motion blur and depth of field
US9777434B2 (en) 2011-12-22 2017-10-03 Kemira Dyj Compositions and methods of making paper products
CN102663805B (zh) * 2012-04-18 2014-05-28 东华大学 一种基于投影的视锥体裁剪的方法
KR102116976B1 (ko) * 2013-09-04 2020-05-29 삼성전자 주식회사 렌더링 방법 및 장치
US9424686B2 (en) * 2014-08-08 2016-08-23 Mediatek Inc. Graphics processing circuit having second vertex shader configured to reuse output of first vertex shader and/or process repacked vertex thread group and related graphics processing method thereof
US9824412B2 (en) * 2014-09-24 2017-11-21 Intel Corporation Position-only shading pipeline
CN104331918B (zh) * 2014-10-21 2017-09-29 无锡梵天信息技术股份有限公司 基于深度图实时绘制室外地表遮挡剔除以及加速方法
US10217272B2 (en) 2014-11-06 2019-02-26 Intel Corporation Zero-coverage rasterization culling
GB2541692B (en) * 2015-08-26 2019-10-02 Advanced Risc Mach Ltd Graphics processing systems
US10102662B2 (en) 2016-07-27 2018-10-16 Advanced Micro Devices, Inc. Primitive culling using automatically compiled compute shaders
US10733693B2 (en) * 2018-12-04 2020-08-04 Intel Corporation High vertex count geometry work distribution for multi-tile GPUs

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5341463A (en) * 1990-01-31 1994-08-23 The United States Of America As Represented By The Secretary Of The Navy Selective polygon map display method
CA2038412C (en) * 1990-04-26 2001-10-16 Glenn M. Courtright Polygon sort engine
US5517602A (en) * 1992-12-03 1996-05-14 Hewlett-Packard Company Method and apparatus for generating a topologically consistent visual representation of a three dimensional surface
JP3252623B2 (ja) * 1994-11-09 2002-02-04 松下電器産業株式会社 形状モデル生成装置
JP2915826B2 (ja) * 1995-07-11 1999-07-05 富士通株式会社 干渉チェック装置
JP3294224B2 (ja) * 1999-08-31 2002-06-24 株式会社スクウェア コンピュータ読み取り可能な記録媒体、画像処理方法および画像処理装置
US6879946B2 (en) * 1999-11-30 2005-04-12 Pattern Discovery Software Systems Ltd. Intelligent modeling, transformation and manipulation system
GB2406184B (en) * 2003-09-17 2006-03-15 Advanced Risc Mach Ltd Data processing system
US20050195186A1 (en) * 2004-03-02 2005-09-08 Ati Technologies Inc. Method and apparatus for object based visibility culling
US7400325B1 (en) * 2004-08-06 2008-07-15 Nvidia Corporation Culling before setup in viewport and culling unit
US8035636B1 (en) * 2005-09-08 2011-10-11 Oracle America, Inc. Software system for efficient data transport across a distributed system for interactive viewing
WO2008073798A2 (en) * 2006-12-08 2008-06-19 Mental Images Gmbh Computer graphics shadow volumes using hierarchical occlusion culling
US9460552B2 (en) * 2007-01-24 2016-10-04 Intel Corporation Method, display adapter and computer program product for improved graphics performance by using a replaceable culling program
US8031194B2 (en) * 2007-11-09 2011-10-04 Vivante Corporation Intelligent configurable graphics bandwidth modulator
SE0801742A0 (sv) * 2008-07-30 2010-01-31 Intel Corp Förfarande, apparat och datorprogramprodukt för förbättrad grafikprestanda
WO2009093956A1 (en) * 2008-01-23 2009-07-30 Swiftfoot Graphics Ab Method, apparatus, and computer program product for improved graphics performance

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"Interval Approximation of Higher Order to the Ranges of Functions", Qun Lin und J. G. Rokne, Computers Math. Applic., Vol. 31, Nr. 7, Seiten 101-109, 1996
BERZ, M. und HOFFSTÄTTER, G., 1998, Computation and Application of Taylor Polynomials with Interval Remainder Bounds, Reliable Computing, 4, 1, 83-97
HUNGERBÜHLER, R. und GARLOFF, J., 1998, Bonds for the Range of a Bivariate Polynomial over a Triangle. Reliable Computing, 4, 1, 3-13

Also Published As

Publication number Publication date
WO2010048093A3 (en) 2010-07-22
GB201105491D0 (en) 2011-05-18
EP2338139A4 (de) 2012-11-07
EP2338139A2 (de) 2011-06-29
CN102171720A (zh) 2011-08-31
GB2475465A (en) 2011-05-18
WO2010048093A2 (en) 2010-04-29
US20100097377A1 (en) 2010-04-22

Similar Documents

Publication Publication Date Title
DE112009002383T5 (de) Grafikverarbeitung unter Verwendung von Culling auf Gruppen von Vertices
DE102017124573A1 (de) Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung
DE69907415T2 (de) Bestimmung sichtbarer objekte für interaktive visualisation
DE112019005750T5 (de) Erlernen des Erzeugens synthetischer Datensätze zum Trainieren neuronalerNetze
DE60033250T2 (de) System und Verfahren zur Darstellung mit Strahlverfolgung
EP2005259B1 (de) Verfahren zum rendern und generieren computer-generierter videohologramme in echtzeit
DE102018113845A1 (de) Systeme und Verfahren zum Trainieren von neuronalen Netzwerken mit dünnbesetzten Daten
DE102019103059A1 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE102020124932A1 (de) Vorrichtung und Verfahren zur Echtzeit-Grafikverarbeitung mittels lokaler und cloudbasierter Grafikverarbeitungsbetriebsmittel
DE102019103178A1 (de) Verfahren für vorankommen und programmierbare timeouts von baumtraversierungsmechanismen in hardware
DE112009000180T5 (de) Verfahren, Vorrichtung und Computerprogrammprodukt für eine verbesserte Grafikperformance
DE102011016347A1 (de) Hierarchisches Umgrenzen von verschobenen parametrischen Flächen
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102011101328A1 (de) Kachelrendering für die Bildbearbeitung
DE102012210521A1 (de) Unbeschnittene Zeit- und Linsen-Begrenzungen für verbesserte Probentest- Effizienz bei Bild-Rendering
DE102019118838A1 (de) Virtuelle photogrammetrie
DE102013114176A1 (de) Tessellieren von Oberflächendatensegmenten beim kachelbasierten Rendern von Computergrafik
DE102010048486A1 (de) Bildverarbeitungstechniken
DE102017102952A1 (de) Eine Vorrichtung zum Erzeugen eines dreidimensionalen Farbbildes und ein Verfahren zum Produzieren eines dreidimensionalen Farbbildes
DE202017104897U1 (de) Quadrangulierte geschichtete Tiefenbilder
DE102013017981A1 (de) Optimierung einer Dreieck-Topologie für Pfad-Bilderzeugung
DE102019121200A1 (de) Bewegungsadaptives rendern mittels shading mit variabler rate
DE102014105146A1 (de) System, Verfahren und Computerprogrammprodukt zum Durchführen einer Pfad-Raum-Filterung
DE102021114013A1 (de) Techniken zum effizienten abtasten eines bildes
US9754423B2 (en) System and method for rendering virtual contaminants

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final
R003 Refusal decision now final

Effective date: 20141021