DE112005002076T5 - Unterteilung von Geometriebildern in Grafikhardware - Google Patents

Unterteilung von Geometriebildern in Grafikhardware Download PDF

Info

Publication number
DE112005002076T5
DE112005002076T5 DE112005002076T DE112005002076T DE112005002076T5 DE 112005002076 T5 DE112005002076 T5 DE 112005002076T5 DE 112005002076 T DE112005002076 T DE 112005002076T DE 112005002076 T DE112005002076 T DE 112005002076T DE 112005002076 T5 DE112005002076 T5 DE 112005002076T5
Authority
DE
Germany
Prior art keywords
data
vertex
geometry images
resolution
geometry
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
DE112005002076T
Other languages
English (en)
Inventor
Adam Portland Lake
Carl Portland Marshall
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 DE112005002076T5 publication Critical patent/DE112005002076T5/de
Ceased legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

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

Abstract

System, umfassend:
einen Grafikspeicher;
einen wirksam mit dem Grafikspeicher zusammenwirkend verbundenen Datenbus;
einen Prozessor zum Senden von Vertexdaten zu dem Grafikspeicher über den Datenbus; und
einen Vertexshader zum Lesen der Vertexdaten aus dem Grafikspeicher, zum Unterteilen der Vertexdaten in unterteilte Vertexdaten und zum Schreiben der unterteilten Vertexdaten in den Grafikspeicher.

Description

  • Implementierungen der beanspruchten Erfindung betreffen allgemein die Verarbeitung von Grafikbildern und insbesondere die Verarbeitung von Grafikbildern unter Verwendung von Geometriebildern.
  • 1 ist ein Flußdiagramm typischer Grafikverarbeitung 100. Grafische Bilder darstellende Geometrie kann einer Grafik-Pipeline zugeführt werden (Schritt 110). Solche Geometrie kann typischerweise Dreiecke, aber auch Vierecke oder andere Arten von Geometrie umfassen. Vertexshader können dann die Geometrie verarbeiten, wobei sie zum Beispiel ein Verarbeiten wie Transformieren und Beleuchten jedes Polygons, Bestimmen von Farben für Vertices, gegebenenfalls Bestimmen von Normalen usw. durchführen (Schritt 120). Vertexshader enthalten typischerweise Hardware, die einen Befehlssatz zur Anwendung auf Daten, die Vertices zugeordnet sind, implementiert. Solche Daten können zum Beispiel die Vertexposition, die Vertexnormale und die Texturkoordinaten je Vertex sein. Diese Werte können auch später von der Shadinghardware zum Interpolieren über ein Polygon zur Erzeugung eines schattierten Bildes benutzt werden.
  • Als nächstes können die Polygone an entsprechenden Positionen auf den Schirm abgeschnitten werden (Schritt 130). Pixelshader können dann jedes Polygon schattieren (Schritt 140). Pixelshader enthalten typischerweise Hardware, die auf jedem Fragment, während es die Grafik-Pipeline durchläuft, einen Satz von Befehlen ausführt, bevor es auf dem Schirm wiedergegeben wird. Pixel- und Vertexshader können identische oder unterschiedliche Befehlssätze aufweisen. Zusätzlich können die von ihnen ausgeführten Befehlssätze von den einem Programmierer offenstehenden Befehlen verschieden sein.
  • Wenn sich nach der Schattierung ein bestimmtes Pixel vor etwaigen zuvor wiedergegebenen Pixeln befindet, kann es in den Bildpuffer (frame buffer) geschrieben werden (Schritt 150). In bestimmten Grafik-Engines kann es zu Alpha-Mischung (alpha blending) kommen. Alpha-Mischung ist ein Mechanismus zum Ermöglichen der Implementierung teilweise transpa renter Objekte und kann typischerweise durch einen zusätzlichen Kanal zu den in einer traditionellen dreidimensionalen (3D)-Grafik-Pipeline verwendeten Farbkanälen realisiert werden.
  • Vor kurzem wurde eine Technik zum Darstellen der Oberflächengeometrie grafischer Bilder vorgeschlagen, die bestimmte Vorteile haben kann. Eine solche Technik kann eine beliebige grafische Oberfläche auf eine völlig reguläre Struktur übertragen (remesh), die als "Geometriebild" bezeichnet wird. Das Geometriebild kann die Oberflächengeometrie eines grafischen Bildes als ein zweidimensionales (2D-)Array quantisierter Punkte erfassen. Oberflächensignale, wie zum Beispiel Normalen und/oder Farben, können unter Verwendung derselben Oberflächenparametrisierung wie bei dem Geometriebild in ähnlichen 2D-Bildern gespeichert werden. Eine weitere Diskussion von Geometriebildern findet sich zum Beispiel in Xianfeng Gu et al., "Geometry Images," SIGGRAPH 2002 Proceedings, Seiten 355–361; und in F. Losasso et al., "Smooth Geometry Images," Eurographics 2003, Seiten 138–145 und 273. Um besser zu verstehen, was ein Geometriebild ist und wie es ein 3D-Grafikobjekt darstellen kann, wird eine kurze Erläuterung gegeben.
  • 2 zeigt die Bildung eines Geometriebildes 250 aus einem 3D-Modell 210 (siehe z.B. Hughes Hoppe, "Irregular To Completely Regular Meshing In Computer Graphics", International Meshing Roundtable 2002, September 2002). Das 3D-Modell 210 kann als eine zweidimensionale (2D-) Form aufgefaßt werden, die im 3D-Raum gebogen (bent) und deformiert (warped) wird, um ein 3D-Maschengitter zu bilden. Das Modell 210 kann ein solches Maschengitter geometrischer Formen (z.B. Dreiecke, Vierecke usw.) enthalten, die durch Vertices und Kanten zwischen den Vertices definiert werden. Die Vertices in dem Modell 210 können zugeordnete räumliche Koordinatenwerte in einem 3D-Koordinatensystem aufweisen (z.B. [x,y,z]-Koordinaten).
  • Das 3D-Modell 210 kann entlang seiner Kanten geschnitten werden, um eine andere (z.B. nicht kaninchenförmige) 2D-Form zu bilden. Der Schnitt 220 stellt einen solchen Schnitt dar. Diese andere Form kann unter Verwendung bekannter Techniken deformiert (warped) oder parametrisiert werden, um eine reguläre Form 230 zu bilden. Die reguläre Form 230 kann verbundene Vertices aus dem Modell 210 (z.B. als Dreiecke dargestellt) enthalten, wobei sich der Schnitt 220 an der äußeren Kante bzw. den äußeren Kanten der Form 230 befindet. Somit behält die reguläre Form 230 sowohl die [x,y,z]-Positionswerte für die Vertices in dem Modell 210 als auch die Verbindungsbeziehungen zwischen diesen Vertices. Es ist zu beachten, daß, obwohl die reguläre Form 230 als ein Quadrat dargestellt ist, auch andere Arien von regulären Formen (z.B. Kreise usw.) verwendet werden können.
  • Die Polygone in der regulären Form 230 können regulär erfaßt werden, um eine abgetastete Form 240 zu erzeugen. Jeder erfaßte Punkt in der erfaßten Form 240 kann ein neuer Vertex sein, der sowohl einen Positionswert (z.B. eine [x,y,z]-Koordinate) behält als auch implizit mit anderen Vertices in dem erfaßten Bild 240 verbunden ist. Das heißt, Vertices in dem erfaßten Bild 240 können mittels der regulären Abtastung der regulären Form 230 durch Kanten mit anderen Vertices auf ihren oberen, unteren, linken und rechten Seiten verbunden werden.
  • Das abgetastete Bild 240 kann in ein Rot/Grün/Blau-Farbbild (RGB) (oder einen beliebigen anderen Farbraum) umgesetzt werden, indem man die Dreikanal-[x,y,z]-Koordinaten der Vertices in dem abgetasteten Bild 240 auf die Koordinaten des Dreikanal-RGB-Raums [r,g,b] abbildet, um das Geometriebild 250 zu erzeugen. Jedes Pixel in dem Geometriebild 250 kann einen abgetasteten Vertex in dem Modell 210 darstellen, wobei die Werte von Rot, Grün und Blau des Pixels die räumliche [x,y,z]-Position des abgetasteten Vertex darstellen. Die Nachbarvertices des entsprechenden abgetasteten Vertex in dem Modell 210 werden durch die zu einem gegebenen Pixel in dem Geometriebild 250 benachbarten Pixel bestimmt. Anders ausgedrückt, sind die Nachbarvertices des Modells 210 durch die Nachbarpixel in dem Geometriebild 250 bekannt, und die Positionswerte dieser Vertices sind durch die Farbwerte für Pixel in dem Geometriebild 250 bekannt.
  • Obwohl das Geometriebild 250 in Bezug auf Positionsinformationen erläutert wurde, können Geometriebilder 250 für beliebige Informationen erzeugt werden, die den Vertices des Modells 210 zugeordnet sind. Zum Beispiel können auch Normalen, die [x,y,z]-Vektoren sind, die in den Raum zeigen, durch ein Geometriebild 250 dargestellt werden. Außerdem können auch Farbwerte und/oder Texturkoordinaten durch Geometriebilder 250 dargestellt werden. Das Darstellen von Modellen als Bilder kann es einem erlauben, existierende Bildverarbeitungsalgorithmen, wie zum Beispiel Bildkomprimierungsalgorithmen, zu verwenden.
  • Obwohl es möglich ist, Geometriebilder zu komprimieren, können solche Geometriebilder, auch wenn sie komprimiert sind, in bestimmten Fällen über einen Datenbus zu einem Grafikprozessor gesendet werden. In bestimmten Fällen kann die Bandbreite des Datenbusses die Auflösung und/oder visuelle Wiedergabetreue begrenzen, die durch den Grafikprozessor aus den Geometriebildern angezeigt werden kann.
  • Kurze Beschreibung der Zeichnungen
  • Die beigefügten Zeichnungen, die in die vorliegende Beschreibung aufgenommen sind und einen Teil davon bilden, zeigen eine oder mehrere mit den Prinzipien der Erfindung übereinstimmende Implementierungen und erläutern zusammen mit der Beschreibung solche Implementierungen. Die Zeichnungen sind nicht notwendigerweise maßstabsgetreu, wobei stattdessen die Veranschaulichung der Prinzipien der Erfindung betont wird. Es zeigen:
  • 1 ein Flußdiagramm typischer Grafikverarbeitung;
  • 2 die Bildung eines Geometriebildes;
  • 3 ein beispielhaftes System; und
  • 4 ein Flußdiagramm eines Prozesses zum Unterteilen von Grafikdaten.
  • Detaillierte Beschreibung
  • Die folgende ausführliche Beschreibung bezieht sich auf die beigefügten Zeichnungen. In verschiedenen Zeichnungen können dieselben Bezugszeichen verwendet werden, um gleiche oder ähnliche Elemente zu identifizieren. In der folgenden Beschreibung werden zum Zwecke der Erläuterung und nicht der Einschränkung spezifische Einzelheiten dargelegt, wie zum Beispiel konkrete Strukturen, Architekturen, Schnittstellen, Techniken usw., um ein eingehendes Verständnis der verschiedenen Aspekte der beanspruchten Erfindung zu gewährleisten. Für Fachleute ist jedoch anhand der vorliegenden Offenlegung ersichtlich, daß die verschiedenen Aspekte der beanspruchten Erfindung in anderen Beispielen ausgeübt werden können, die von diesen spezifischen Einzelheiten abweichen. In bestimmten Fällen wurden Beschreibungen wohlbekannter Einrichtungen, Schaltungen und Verfahren weggelassen, um die Beschreibung der vorliegenden Erfindung nicht durch unnötige Einzelheiten undeutlich zu machen.
  • 3 zeigt ein beispielhaftes System 300. Das System 300 kann einen Hauptspeicher 310, einen Prozessor 320, einen Datenbus 330, einen Grafikspeicher 340, einen oder mehrere Vertexshader 350, einen oder mehrere Pixelshader 360 und einen Bildpuffer 370 enthalten. Bei bestimmten Implementierungen können eines oder mehrere der Elemente 340370 in einer physisch unterscheidbaren Grafikkarte enthalten sein, die über den Datenbus 330 mit dem Prozessor 320 verbunden ist. Bei bestimmten Implementierungen können sich die Elemente 340370 auf einer gemeinsamen Leiterplatte (z.B. einem Motherboard, einer Tochterkarte usw.) mit den Elementen 310 und 320 befinden. Bei bestimmten Implementierungen kann eines oder können mehrere der Elemente 350 und 360 Teil eines Teils (z.B. eines Kerns) einer Einrichtung sein, und der Prozessor 320 kann in einem anderen Teil (z.B. einem anderen Kern) derselben Einrichtung enthalten sein.
  • Der Hauptspeicher 310 kann eine Speichereinrichtung zum Speichern von Geometriebildern enthalten. Der Hauptspeicher 310 kann eine Direktzugriffsspeichereinrichtung (RAM) enthalten, wie zum Beispiel einen dynamischen RAM (DRAM), einem Doppeldatenraten-RAM (DDR-RAM) usw.. Der Hauptspeicher 310 kann vorberechnete Geometriebilder und/oder grafische Daten speichern, aus denen Geometriebilder zu berechnen sind.
  • Der Prozessor 320 kann einen General-Purpose-Prozessor, einen Specific-Purpose-Prozessor und/oder für einen spezifischen Zweck konfigurierte Logik enthalten. Der Prozessor 320 kann dafür eingerichtet sein, Geometriebilder aus dem Hauptspeicher 310 über den Datenbus 330 zu dem Grafikspeicher 340 zu verteilen. Der Prozessor 320 kann die Geometriebilder über den Datenbus 330 unter der Kontrolle eines Programms senden, wie zum Beispiel eines Programms für grafische Wiedergabe (rendering), Spiele, grafische Kreation oder eines anderen Typs grafikbezogener Programme. Bei bestimmten Implementierungen kann der Prozessor 320 die Geometriebilder aus anderen Informationen in dem Hauptspeicher 310 berechnen und die Geometriebilder in dem Hauptspeicher 310 speichern. Bei bestimmten Implementierungen kann der Prozessor 320 die Geometriebilder vor der Übertragung über den Datenbus 330 komprimieren (z.B. über JPEG 2000 oder ein anderes verlustloses Verfahren).
  • Der Datenbus 330 kann den Prozessor 320 mit dem Grafikspeicher 340 verbinden. Der Datenbus 330 kann ein typisches Verbindungsprotokoll oder ein angepaßtes Kommunikationsprotokoll benutzen. Der Datenbus 330 kann eine zugehörige Bandbreite aufweisen, die eine maximale Datenmenge definiert, die er zu einem gegebenen Zeitpunkt transferieren kann. Bei bestimmten Implementierungen kann die Bandbreite des Datenbusses 330 die Leistungsfähigkeit anderer Teile des Systems 300 (z.B. der Schattierer 350 und/oder 360) begrenzen. Bei einigen Implementierungen begrenzt die Bandbreite des Datenbusses 330 möglicherweise nicht die Gesamtleistungsfähigkeit des Systems 300.
  • Der Grafikspeicher 340 kann eine Speichereinrichtung zum Speichern von Geometriebildern enthalten. Der Grafikspeicher 340 kann eine Direktzugriffsspeichereinrichtung (RAM), wie zum Beispiel einen dynamischen RAM (DRAM), einen Doppeldatenraten-RAM (DDR-RAM) usw., enthalten. Der Grafikspeicher 340 kann Geometriebilder von dem Prozessor 320 und den Vertexshadern 350 empfangen und speichern. Zusätzlich zu dem Speichern von Geometriebildern über Schreiboperationen kann der Grafikspeicher 340 solche Geometriebilder über Leseoperationen den Vertexshadern 350 und den Pixeleshadern 360 zuführen. Zum Beispiel kann der Grafikspeicher 340 verschiedene zu den Geometriebildern gehörige "Pro-Vertex"-Daten speichern. Solche Vertexdaten können eine oder mehrere Vertexposition(en), Texturkoordinate(n), Farbkoordinate(n) oder einen oder mehrere Normalenvektor(en) umfassen.
  • Die Vertexshader 350 können dazu eingerichtet sein, die Vertexdaten aus dem Grafikspeicher 340 zu lesen und die Vertexdaten zu unterteilen, um höher auflösende Vertexdaten zu erzeugen. Die Vertexshader 350 können eine parallele Architektur aufweisen und können einen größeren Befehlssatz als zum Beispiel die Pixelshader 360 aufweisen. Die Vertexshader 350 können verschiedene Vertexerzeugungsprogramme und Unterteilungsverfahren verwenden, um die Auflösung der Vertexdaten zu vergrößern, wie später beschrieben werden wird. Die Vertexshader 350 können auch die Vertexdaten mit höherer Auflösung in den Grafikspeicher 340 schreiben.
  • Aufgrund eines Zugriffs mit relativ hoher Bandbreite auf den Grafikspeicher 340 können die Vertexshader 350 eine relativ große Menge an Vertexdaten mit höherer Auflösung in den Grafikspeicher 340 schreiben. Typische Unterteilungsverfahren können die Datenmenge in einem Geometriebild um einen Faktor vier vergrößern. Die Vertexshader 350 können dafür eingerichtet sein, eine oder mehrere Ebene(n) der Unterteilung für ein gegebenes Geometriebild durchzuführen, und in dem Grafikspeicher 340 gespeicherte einmal unterteilte Vertexdaten können zum Beispiel von den Vertexshadern 350 benutzt werden, um eine zweite Ebene unterteilter Daten (z.B. mit einer höheren/feineren Auflösung) zur Speicherung im Grafikspeicher 340 zu erzeugen.
  • Die Pixelshader 360 können dafür eingerichtet sein, die unterteilten Vertexdaten aus dem Grafikspeicher 340 zu lesen und zur Darstellung aufzubereiten. Die Pixelshader 360 können eine Verbindung zu dem Grafikspeicher 340 mit einer höheren Bandbreite als zum Beispiel die Vertexshader 350 aufweisen, und die Pixelshader 360 können in Bezug auf die Anzahl der Befehle und den Befehlssatz begrenzter als die Vertexshader 350 sein. Zum Beispiel können die Pixelshader 360 dafür ausgelegt sein, die neuen Geometriebilder mit höherer Auflösung aus dem Grafikspeicher 340 zu lesen, die Bilder zu rastern und die gerasterten Pixeldaten zu dem Bildpuffer 370 zu senden. Bei bestimmten Implementierungen können die Pixelshader 360 die neuen Geometriebilder unter Verwendung der Geometriebilder mit geringerer Auflösung aus dem Prozessor 320 (die in dem Grafikspeicher 340 bleiben können) als Darstellungsprimitiven (display primitives) rastern.
  • Der Bildpuffer 370 kann dafür eingerichtet sein, Pixeldaten aus den Pixelshadern 360 zu empfangen und sie gegebenenfalls vor der Anzeige zu puffern. Der Bildpuffer 370 kann auch möglicherweise unter der Kontrolle eines (nicht gezeigten) Grafikprozessors Daten an eine Anzeige oder Anzeigenschnittstelle ausgeben.
  • 4 ist ein Flußdiagramm eines Prozesses 400 zum Unterteilen von Grafikdaten. Obwohl der Prozeß zur leichteren Erläuterung mit Bezug auf das System 300 beschrieben werden kann, ist die beanspruchte Erfindung diesbezüglich nicht notwendigerweise beschränkt.
  • Die Verarbeitung kann damit beginnen, daß der Prozessor 320 Texturen, Geometriebilder und etwaige andere zugeordnete Werte für Vertexpositionen in einem Bild erhält (Schritt 410). Bei bestimmten Implementierungen kann der Prozessor 320 die Werte berechnen, und bei bestimmten Implementierungen kann der Prozessor 320 die Werte aus dem Hauptspeicher 310 lesen. Zusätzlich zu dem Erhalten eines Geometriebildes kann der Prozessor 320 auch eine Texturkoordinatenabbildung und/oder eine Farbkoordinatenabbildung erzeugen. Ausführliche Prozeduren zum Erzeugen von Geometriebildern (z.B. Schneiden eines Maschengitters entlang Kantenwegen und Parametrisieren der resultierenden Karte in ein Quadrat) finden sich zum Beispiel in Xianfeng Gu et al. "Geometry Images", SIGGRAPH 2002 Proceedings, Seiten 355–361. Eine solche Texturabbildung, ein solches Geometriebild und/oder eine solche Farbabbildung können als Arrays mit spezifizierten Breiten und Höhen implementiert werden.
  • Textur-, Farb- und/oder Normalenabbildungen können auf dieselbe Weise wie die Vertexabbildung in 2 erzeugt werden. Für Texturen können tu und tv in dem Rot- bzw. dem Grün-Kanal gespeichert werden. Ähnlich können für die Farbe r, g und b Werte in den r-, g-, und b-Werten für die Texturabbildung gespeichert werden. Da Texturen normalerweise nur Arrays von Farben sind, verwenden sowohl Farb- als auch Texturabbildungen r, g und b. Schließlich können x-, y- und z-Werte der Normalen in den Kanälen r, g und b der Texturabbildung gespeichert werden. Es wird angemerkt, daß eine solche Abbildung nicht auf eine 2D-Struktur, wie zum Beispiel ein Bild, beschränkt sein muß. Stattdessen können die hier beschriebenen Techniken Texturen, Normalen und Farben unterstützen, indem eine beliebige Anzahl von Kanälen verarbeitet wird, die auf r, g, b und (gegebenenfalls) α abgebildet werden. Wenn mehr als vier Kanäle vertexbezogener Informationen oder Daten gewünscht werden, kann man für diese Informationen zusätzliche Texturabbildungen verwenden. Die mit Bezug auf 2 beschriebene Technik kann somit mit relativ beliebigen und/oder komplexen Vertexdaten verwendet werden.
  • Außerdem kann der Prozessor 320 im Schritt 410 Platzhalterarrays für die Texturen, Geometriebilder und Farben erzeugen, wenn sie ein- oder mehrmals unterteilt werden. Solche Platzhalterarrays können in abgekürzter (shorthand) Form unter Verwendung minimaler Bandbreite über den Datenbus 330 gesendet werden, um Platz in dem Grafikspeicher 340 für die unterteilten Texturen, Geometriebilder usw. zu reservieren. Bei bestimmten Implementierungen können die Platzhalterarrays lokal durch die Vertexshader 350 als Reaktion auf eine Anweisung von dem Prozessor 320 erzeugt werden. In jedem Fall können die Platzhalterarrays auf null initialisiert und in dem Grafikspeicher 340 gespeichert werden.
  • Die Verarbeitung kann damit voranschreiten, daß der Prozessor 320 die Texturen, Geometriebilder und etwaige andere Werte (z.B. Farbkoordinaten und/oder Normalenvektoren) über den Datenbus 330 zu dem Grafikspeicher 340 sendet (Schritt 420). Bei bestimmten Implementierungen kann der Prozessor 320 die Texturen, Geometriebilder und etwaigen anderen Werte zu einer Grafik-Anwendungsprogrammschnittstelle (API) leiten, die den Transport der Texturen und Geometriebilder zu dem Grafikspeicher 340 abwickeln kann. Bei bestimmten Implemen tierungen können die Texturen, Geometriebilder usw. (z.B. über ein verlustloses Verfahren wie etwa JPEG 2000) vor der Übertragung über den Datenbus 330 komprimiert werden.
  • Die Vertexshader 350 können die gespeicherten Texturen, Geometriedaten und etwaigen anderen Werte (kollektiv "Vertexdaten") aus dem Grafikspeicher 340 lesen und können die Vertexdaten unterteilen (Schritt 430). Wie bereits erwähnt, kann die Unterteilung eines zweidimensionalen Bildes (z.B. eines Geometriebildes) die Auflösung des Bildes um etwa einen Faktor vier vergrößern. Bei bestimmten Implementierungen können die Vertexshader 350 die Unterteilung unter Verwendung der Catmull-Clark-Technik implementieren, die in Ed Catmull und Jim Clark, "Recursively Generated B-Spline Surfaces on Arbitrary Topological Meshes", Computer Aided Geometric Design, Band 10, Nr. 6, 1978, skizziert wird.
  • Die Vertexshader 350 können jedoch auch andere Unterteilungstechniken verwenden. Bei bestimmten Implementierungen können die Vertexshader 350 die Vertexdaten unter Verwendung der Butterfly-Technik unterteilen, die in "Subdividing Reality: Employing Subdivision Surfaces for Real Time Scalable Photorealism", Stephen Junkins, Game Developers Conference proceedings, 2000, skizziert wird. Bei bestimmten Implementierungen können die Vertexshader 350 die Vertexdaten unter Verwendung der Loop-Technik unterteilen, die in C.T. Loop "Smooth Subdivision Surfaces Based on Triangles", M.S. Arbeit, Fachbereich für Mathematik, Universität von Utah, August, 1987, skizziert wird. Bei bestimmten Implementierungen können die Vertexshader 350 die Vertexdaten unter Verwendung der Doo-Sabin-Technik unterteilen, die in D. Doo und M. Sabin, "Behavior of Recursive Division Surfaces Near Extraordinary Points", Computer Aided Design, Band 10, Nr. 6, 1978 skizziert wird.
  • Die Vertexshader 350 können die unterteilten ausgegebenen Vertexdaten in den Grafikspeicher 340 schreiben (Schritt 440). Bei bestimmten Implementierungen überschreiben die Vertexshader 350 ein oder mehrere Platzhalterarrays in dem Grafikspeicher 340 mit den ausgegebenen Vertexdaten. Bei bestimmten Implementierungen können die Vertexshader 350 für die ausgegebenen Vertexdaten je nach Bedarf neue Strukturen in dem Grafikspeicher 340 erzeugen.
  • Abhängig von einer Anzahl der Ebenen der gewünschten Unterteilung können die Vertexshader 350 die Schritte 430 und 440 ein- oder mehrmals wiederholen, wie in 4 durch den gestrichelten Pfeil gezeigt. Wenn zum Beispiel mehr als eine Unterteilungsoperation ge wünscht wird (z.B. um eine höhere Auflösung zu produzieren), können die Vertexshader 350 einmal unterteilte (oder bei Wiederholung von Schritt 430 für ein zweites Mal zweimal unterteilte) ausgegebene Vertexdaten (output vertex data), die in einem vorigen Schritt 440 im Grafikspeicher 340 gespeichert werden, lesen und weiter unterteilen. Da die Unterteilung von Vertexdaten mit der unmittelbar vorausgehenden Auflösung (z.B. der Ausgabe der vorherigen Unterteilung) abhängen kann, können die Vertexshader 350 in bestimmten Implementierungen Vertexdaten einer höheren Auflösung überschreiben und/oder löschen, um Platz in dem Grafikspeicher 340 zu schaffen. Zum Beispiel können bei der Durchführung einer zweiten (oder höheren) Ebene der Unterteilung die von dem Prozessor 320 gesendeten ursprünglichen Vertexdaten überschrieben und/oder gelöscht werden.
  • Man kann auch andere Techniken beim Unterteilen verwenden, um Platz in dem Grafikspeicher 340 und/oder anderen Betriebsmitteln des Systems 300 zu sparen. Zum Beispiel kann man in dem Grafikspeicher 340 Platz sparen, indem Textur-, Normalen- und Farbkoordinaten nicht so vollständig wie zum Beispiel die zugehörigen Geometriebilder unterteilt werden. In einem solchen Fall können sich die Pixelshader 360 lediglich auf eine niedrigere Ebene der Unterteilung (z.B. nur einmal unterteilte Daten für zwei- oder mehrmals unterteilte Auflösung) beziehen (reference) und für jedes Nachschlagen (lookup) durch 4 dividieren. Wenn beispielsweise das Erzeugen und/oder Speichern eine 256 × 256-Normalenabbildung zusammen mit einem entsprechenden 256 × 256-Geometriebild nicht erwünscht ist, können die Pixelshader 360 stattdessen eine Normalenabbildung aus der 64 × 64-Auflösungsebene verwenden. Für einen Eintrag an dem Index (32, 32) in dem Positionsarray können sich die Pixelshader 360 während ihrer Verarbeitung auf die Position (8, 8) in der 64 × 64-Normalenabbildung beziehen. Somit können die Pixelshader 360 eine oder mehrere Abbildungen einer geringeren Auflösung (z.B. eine Normalenabbildung) beim Formatieren anderer Vertexdaten (z.B. eines Geometriebildes oder einer anderen Struktur) verwenden, die durch die Vertexshader 350 auf eine höhere Auflösung unterteilt wurden.
  • Bei bestimmten Implementierungen kann man eine geeignete Normale berechnen, und dann kann die nächstliegende Normale in der alten Normalenabbildung nachgeschlagen werden. Die resultierenden Normalendaten können in einer Normalenabbildung beliebiger Größe gespeichert werden. Andere Techniken können verwendet werden, um für eine gegebene Auflösung ein volles Unterteilen aller Grafikdaten in dem Grafikspeicher 340 zu vermeiden.
  • In bestimmten Bereichen (z.B. Bereichen in einem Geometriebild) ist möglicherweise keine Unterteilung erwünscht. Für diese Bereiche können das existierende Geometriebild, das Normalenbild und/oder Texturabbildungen belassen werden. Für die anderen Bereiche, deren Unterteilung erwünscht wird, kann man ein Unterteilungsverfahren verwenden (z.B. Catmull-Clark). Für Grenzen zwischen zwei Regionen (z.B. unterteilt und nicht) können bestimmte Vertexinformationen dupliziert werden.
  • Eine andere Technik zum Sparen von Platz in dem Grafikspeicher 340 kann darin bestehen, die darin gespeicherten Daten (z.B. die ursprünglichen Vertexdaten und/oder die unterteilten Vertexdaten) über ein verlustloses Komprimierungsverfahren zu komprimieren. Ein solches Verfahren, daß sich für das Komprimieren von zum Beispiel unterteilten Geometriebildern eignen kann, kann JPEG 2000 sein, wodurch Kompressionsverhältnisse von etwa 2,5 zu 1 erzielt werden können. Datenkomprimierung kann anstelle von oder zusätzlich zu anderen Techniken zum Reduzieren der in dem Grafikspeicher 340 gespeicherten Datenmenge verwendet werden.
  • Die Verarbeitung kann fortgesetzt werden, indem die Pixelshader 360 die in dem Grafikspeicher 340 gespeicherten unterteilten Vertexdaten zur Darstellung aufbereiten (Schritt 450). Die Pixelshader 360 können die gespeicherten Vertexdaten (z.B. Geometriebilder, Farbabbildungen usw.) zur Darstellung rastern und/oder anderweitig formatieren. Bei bestimmten Implementierungen können die Pixelshader 360 die unterteilten Vertexdaten unter Verwendung von einer oder mehreren Gruppe(n) von Vertexdaten mit geringerer Auflösung (z.B. ursprünglichen Geometriebildern) als Darstellungsprimitiven aufbereiten. Obwohl es in 4 nicht explizit gezeigt ist, können die formatierten Grafikbilder dann aus dem Bildpuffer 370 angezeigt werden.
  • Das oben beschriebene System und Verfahren zum Unterteilen von Vertexdaten durch die Vertexshader 350 kann bei bestimmten Implementierungen eine visuelle Wiedergabetreue/Auflösung angezeigter Daten für eine gegebene Bandbreite von über den Datenbus 330 übertragenen Daten vergrößern. Zum Beispiel können die Vertexshader 350 Vertexdaten, die den größten Teil oder im wesentlichen die gesamte Bandbreite des Datenbusses 330 benutzen, unterteilen, um die Darstellungsauflösung gegenüber der ansonsten aufgrund der Bandbreite des Datenbusses 330 möglichen zu vergrößern. Bei bestimmten Implementierungen kann ein solches Unterteilungsverfahren das Produzieren einer gegebenen visuellen Wiedergabetreue/ Auflösung unter Verwendung von weniger Bandbreite des Datenbusses 330 ermöglichen, als wenn keine Unterteilung durchgeführt wird. Zum Beispiel kann die Darstellungsauflösung die gleiche bleiben wie in dem Fall, in dem keine Unterteilung durchgeführt wird, aber eine Unterteilung erlaubt es dem ersteren Fall, wesentlich weniger Bandbreite des Datenbusses 330 für dieselbe Auflösung zu benutzen.
  • Um das Verständnis des oben beschriebenen Systems 300 und des Prozesses 400 weiter zu erleichtern, wird ein Beispiel gegeben. In diesem Beispiel kann der Prozessor 320 im Schritt 410 drei n × n-Arrays (wobei n eine ganze Zahl wie etwa 8, 16, 32 usw. ist), G0, T0 und C0 erzeugen oder aus dem Hauptspeicher 320 lesen. G0 kann ein Geometriebild sein. T0 kann eine Texturkoordinatenabbildung sein, wobei jede Position entsprechende Texturkoordinaten enthält. CO kann eine Farbkoordinatenabbildung (color coordinate cap) sein, wobei jede Position entsprechende Farbwerte für rot, grün und blau enthält. G0, T0 und C0 können eine ursprüngliche Auflösung (z.B. 8 × 8, 16 × 16 usw.) aufweisen.
  • Außerdem können im Schritt 410 für jede gewünschte Ebene der Unterteilung (z.B. zwei Ebenen) der Prozessor 320 und/oder die Vertexshader 350 für jeweils G0, T0 und C0 ein Platzhalterarray bzw. eine Platzhalterabbildung mit einer jeweiligen unterteilten Auflösung erzeugen. Für eine erste Unterteilungsebene können G1, T1 und C1 mit einer Größe/Auflösung von 4·n × 4·n erzeugt werden, weil die Unterteilung die Größe/Auflösung eines Arrays/Bildes um einen Faktor 4 vergrößern kann. Für eine zweite Unterteilungsebene können G2, T2 und C2 mit einer Größe/Auflösung von 4·4·n × 4·4·n (d. h. 16n × 16n) erzeugt werden. Der Zweckmäßigkeit halber können G1, T1, C1, G2, T2 und C2 auf null initialisiert werden.
  • In Schritt 420 kann der Prozessor die Strukturen G0, T0, C0, G1, T1, C1, G2, T2 und C2 über den Datenbus 330 an den Grafikspeicher 340 senden. Bei bestimmten Implementierungen kann eine solche Operation durch Verwendung einer Grafik-API durchgeführt werden. Diese Operation kann Platz in dem Grafikspeicher 340 zum späteren Auffüllen durch den Vertexshader 350 initialisieren.
  • Die Vertexshader 350 können dann G0, T0 und C0 unterteilen, um in Schritt 430 erste unterteilte Vertexdaten G1, T1 und C1 zu erzeugen. Wenn zum Beispiel das konkrete verwendete Unterteilungsverfahren das Unterteilungsverfahren von Catmull-Clark ist, können für eine Fläche (face) durch Mittelung von die Fläche definierenden alten Punkten neue Flächenpunkte berechnet werden. Neue Kantenpunkte kann man berechnen, indem man Mittelpunkte alter Kanten mit dem Mittelwert der beiden neuen Flächenpunkte der sich eine Kante teilenden Flächen mittelt. Neue Vertexpunkte kann man berechnen, indem man Q/n + (2·R)/n + (S·(n-3))/n mittelt, wobei Q gleich dem Mittelwert neuer Flächenpunkte aller an den alten Vertexpunkt angrenzenden Flächen, R gleich dem Mittelwert von Mittelpunkten aller an den alten Vertexpunkt stoßenden alten Kanten und S der alte Vertexpunkt ist. Bei bestimmten Implementierungen können andere Unterteilungsverfahren als Catmull-Clark verwendet werden.
  • Während jede Gruppe von Punkten in G1, T1 und C1 erzeugt wird, können die Vertexshader 350 im Schritt 440 die Werte in den entsprechenden Platzhalterstrukturen in dem Grafikspeicher 340 speichern. Wenn die erste Unterteilung ausreichend vollständig ist, können die Vertexshader 350 G1, T1 und C1 weiter unterteilen, um im Schritt 430 zweite unterteilte Vertexdaten G2, T2 und C2 zu erzeugen. Die Vertexshader 350 können die weiter unterteilten Werte im Schritt 440 in entsprechenden Platzhalterstrukturen G2, T2 und C2 in dem Grafikspeicher 340 speichern. Wie bereits erläutert, werden G1, T1 oder C1 möglicherweise bei bestimmten Implementierungen keiner Unterteilung auf einem zweiten Niveau unterzogen. Die Pixelshader 360 können die final unterteilten Vertexdaten (z.B. G2, T2 und C2, wenn alle zweimal unterteilt wurden) aus dem Grafikspeicher 340 lesen und sie zur Darstellung über den Bildpuffer 370 aufbereiten. Bei Implementierungen, in denen G0, T0 und C0 nicht alle zweimal unterteilt werden, können die Pixelshader 360 G2 und eine oder mehrere weniger unterteilte Strukturen, wie etwa T1 und/oder C1, zur Darstellung aufbereiten.
  • Obwohl das obige Anschauungsbeispiel eine spezifische Implementierung enthält, ist die beanspruchte Erfindung nicht notwendigerweise darauf beschränkt. Zum Beispiel können die anfänglichen Vertexdaten andere grafische Daten als G0, T0 und C0 enthalten, wie zum Beispiel Normalendaten. Die Anzahl der durch die Vertexshader 350 durchgeführten Unterteilungen kann kleiner oder größer als zwei sein. Ähnlich kann man bei bestimmten Implementierungen ein anderes Unterteilungsverfahren als Catmull-Clark verwenden.
  • Die obige Beschreibung einer oder mehrerer Implementierungen stellt eine Veranschaulichung und Beschreibung bereit, beabsichtigt aber nicht, erschöpfend zu sein oder den Schutzumfang der Erfindung auf die genaue offengelegte Form zu beschränken. Angesichts der obi gen Lehren sind Modifikationen und Varianten möglich oder können aus einer Ausübung verschiedener Implementierungen der Erfindung erzielt werden.
  • Obwohl das Unterteilungsverfahren hier mit Bezug auf die Vertexshader 350 beschrieben wurde, kann man zum Beispiel bei bestimmten Implementierungen andere Grafikhardware zur Implementierung der Unterteilung verwenden. Solche andere Hardware (z.B. andere Arten von Shadern usw.) kann geeignet sein, wenn sie die Fähigkeit aufweist, Vertexdaten aus dem Grafikspeicher 340 zu lesen und unterteilte Vertexdaten in den Grafikspeicher 340 zu schreiben.
  • Ferner kann das hier beschriebene Unterteilungsverfahren bei bestimmten Implementierungen auf Bedarfsbasis (z.B. im wesentlichen in Echtzeit) von dem Vertexshader 350 durchgeführt werden, und es kann bei bestimmten Implementierungen durch die Vertexshader 350 vorberechnet werden. Außerdem können bei bestimmten Implementierungen die Vertexshader 350 die unterteilten Vertexdaten direkt an die Pixelshader 360 senden, statt sie zuerst in den Grafikspeicher 340 zu schreiben.
  • Darüber hinaus müssen die Schritte in 4 nicht in der gezeigten Reihenfolge implementiert werden; genauso müssen auch nicht unbedingt alle Schritte durchgeführt werden. Außerdem können die Schritte, die nicht von anderen Schritten abhängen, parallel mit den anderen Schritten durchgeführt werden. Ferner können mindestens einige der Schritte in dieser Figur als in einem maschinenlesbaren Medium implementierte Befehle oder Gruppen von Befehlen implementiert werden.
  • Kein Element, kein Schritt oder kein Befehl, die in der Beschreibung der vorliegenden Anmeldung verwendet werden, sollten als kritisch oder wesentlich für die Erfindung aufgefaßt werden, sofern es nicht ausdrücklich dergestalt beschrieben wird. Außerdem soll, wie hier verwendet, der Artikel "ein" ein oder mehrere Elemente umfassen. An der oben beschriebenen Implementierung bzw. den oben beschriebenen Implementierungen der beanspruchten Erfindung können Abwandlungen und Modifikationen vorgenommen werden, ohne wesentlich von dem Gedanken und den Prinzipien der Erfindung abzuweichen. Alle solchen Modifikationen oder Varianten sollen in den Schutzumfang dieser Offenbarung aufgenommen und durch die folgenden Ansprüche geschützt sein.
  • Zusammenfassung
  • Ein System kann einen Grafikspeicher, einen Datenbus, einen Prozessor und einen Vertexshader umfassen. Der Datenbus kann wirksam mit dem Grafikspeicher verbunden sein. Der Prozessor kann Vertexdaten über den Datenbus an den Grafikspeicher senden. Der Vertexshader kann die Daten aus dem Grafikspeicher lesen und kann die Vertexdaten in unterteilte Vertexdaten unterteilen. Der Vertexshader kann auch die unterteilten Vertexdaten in den Grafikspeicher schreiben.

Claims (28)

  1. System, umfassend: einen Grafikspeicher; einen wirksam mit dem Grafikspeicher zusammenwirkend verbundenen Datenbus; einen Prozessor zum Senden von Vertexdaten zu dem Grafikspeicher über den Datenbus; und einen Vertexshader zum Lesen der Vertexdaten aus dem Grafikspeicher, zum Unterteilen der Vertexdaten in unterteilte Vertexdaten und zum Schreiben der unterteilten Vertexdaten in den Grafikspeicher.
  2. System nach Anspruch 1, wobei die Vertexdaten ein Geometriebild umfassen.
  3. System nach Anspruch 2, wobei die Vertexdaten ferner Farbdaten, Texturdaten oder Normalendaten umfassen.
  4. System nach Anspruch 1, wobei der Prozessor dafür ausgelegt ist, die Vertexdaten unter Verwendung einer Anwendungsprogrammschnittstelle (API) zu senden.
  5. System nach Anspruch 1, wobei der Datenbus eine zugehörige Bandbreite aufweist und wobei die von dem Prozessor gesendeten Vertexdaten den größten Teil der Bandbreite des Datenbusses benutzen.
  6. System nach Anspruch 1, ferner umfassend: einen Pixelshader zum Lesen der unterteilten Vertexdaten aus dem Grafikspeicher und zum Aufbereiten der unterteilten Vertexdaten zur Darstellung.
  7. System nach Anspruch 6, wobei der Pixelshader die unterteilten Vertexdaten rastert.
  8. System nach Anspruch 6, ferner umfassend: einen Bildpuffer zum Puffern und Ausgeben aufbereiteter unterteilter Vertexdaten von dem Pixelshader.
  9. System nach Anspruch 1, ferner umfassend: einen Hauptspeicher zum Speichern der Vertexdaten, bevor der Prozessor die Vertexdaten zu dem Grafikspeicher sendet.
  10. System, umfassend: einen Speicher zum Speichern erster Geometriebilder mit einer ersten Auflösung; Vertexshader zum Unterteilen der ersten Geometriebilder in zweite Geometriebilder mit einer zweiten Auflösung, die höher als die erste Auflösung ist, und zum Speichern der zweiten Geometriebilder in dem Speicher; und Pixelshader zum Aufbereiten der zweiten Geometriebilder zur Darstellung.
  11. System nach Anspruch 10, ferner umfassend: einen Bildpuffer zum Puffern und Ausgeben von Daten von den Pixelshadern.
  12. System nach Anspruch 10, ferner umfassend: einen Prozessor zum Erhalten der ersten Geometriebilder und zum Senden der ersten Geometriebilder zu dem Speicher.
  13. System nach Anspruch 12, ferner umfassend: einen weiteren Speicher zum Speichern der ersten Geometriebilder für einen Zugriff durch den Prozessor.
  14. System nach Anspruch 10, wobei die Pixelshader die zweiten Geometriebilder rastern.
  15. System nach Anspruch 10, wobei die zweite Auflösung etwa viermal so groß wie die erste Auflösung ist.
  16. Verfahren, welches die folgenden Schritte umfaßt: Erhalten erster Geometriebilder einer ersten Größe; Speichern der ersten Geometriebilder; Unterteilen der ersten Geometriebilder in zweite Geometriebilder einer zweiten Größe, die größer als die erste Größe ist; und Speichern der zweiten Geometriebilder.
  17. Verfahren nach Anspruch 16, wobei das Erhalten umfaßt: Berechnen der ersten Geometriebilder.
  18. Verfahren nach Anspruch 16, wobei das Erhalten umfaßt: Lesen der ersten Geometriebilder aus einem Speicher.
  19. Verfahren nach Anspruch 16, wobei die zweite Größe etwa viermal so groß wie die erste Größe ist.
  20. Verfahren nach Anspruch 16, welches ferner die folgenden Schritte umfaßt: Unterteilen der zweiten Geometriebilder in dritte Geometriebilder einer dritten Größe, die größer als die zweite Größe ist; und Speichern der dritten Geometriebilder.
  21. Verfahren nach Anspruch 16, ferner umfassend: Übertragen der ersten Geometriebilder über einen Datenbus vor dem Speichern der ersten Geometriebilder.
  22. Verfahren nach Anspruch 16, ferner umfassend: Rastern der zweiten Geometriebilder.
  23. Vorrichtung, umfassend: einen Speicher zum Speichern grafischer Daten; und einen Vertexshader zum Lesen grafischer Daten aus dem Speicher, zum Erzeugen neuer grafischer Daten aus den gelesenen grafischen Daten und zum Schreiben der neuen grafischen Daten in den Speicher.
  24. Vorrichtung nach Anspruch 23, wobei die gelesenen grafischen Daten Geometriebilder umfassen.
  25. Vorrichtung nach Anspruch 23, wobei der Vertexshader dafür ausgelegt ist, die gelesenen grafischen Daten zu unterteilen, um die neuen grafischen Daten zu erzeugen.
  26. Verfahren, welches die folgenden Schritte umfaßt: Lesen von Vertexdaten, die eine erste Auflösung aufweisen, aus einem Speicher; Lesen von Normalendaten, die eine zweite Auflösung aufweisen, die kleiner als die erste Auflösung ist, aus dem Speicher; und Aufbereiten der Vertexdaten zur Darstellung unter Verwendung der Normalendaten.
  27. Verfahren nach Anspruch 26, welches ferner die folgenden Schritte umfaßt: Unterteilen von ursprünglichen Vertexdaten, die die zweite Auflösung aufweisen, in die Vertexdaten, die die erste Auflösung aufweisen; und Schreiben der Vertexdaten, die die erste Auflösung aufweisen, in den Speicher.
  28. Verfahren nach Anspruch 26, wobei das Aufbereiten umfaßt: Skalieren eines Index in den Vertexdaten, die die erste Auflösung aufweisen, um ein Verhältnis der ersten und der zweiten Auflösung, um einen entsprechenden Index in den Normalendaten zu erzeugen, die die zweite Auflösung aufweisen.
DE112005002076T 2004-08-26 2005-08-12 Unterteilung von Geometriebildern in Grafikhardware Ceased DE112005002076T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/926,875 2004-08-26
US10/926,875 US7750914B2 (en) 2004-08-26 2004-08-26 Subdividing geometry images in graphics hardware
PCT/US2005/028696 WO2006026118A1 (en) 2004-08-26 2005-08-12 Subdividing geometry images in graphics hardware

Publications (1)

Publication Number Publication Date
DE112005002076T5 true DE112005002076T5 (de) 2007-07-19

Family

ID=35431953

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112005002076T Ceased DE112005002076T5 (de) 2004-08-26 2005-08-12 Unterteilung von Geometriebildern in Grafikhardware

Country Status (7)

Country Link
US (5) US7750914B2 (de)
JP (1) JP2008511074A (de)
CN (2) CN102081804B (de)
DE (1) DE112005002076T5 (de)
GB (1) GB2431324B (de)
TW (1) TWI330782B (de)
WO (1) WO2006026118A1 (de)

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005179942A (ja) 2003-12-17 2005-07-07 Denso Corp 自動車用ワイヤレス送受信機
JP4566120B2 (ja) * 2005-11-21 2010-10-20 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成システム
JP4201207B2 (ja) * 2005-11-21 2008-12-24 株式会社バンダイナムコゲームス プログラム、情報記憶媒体及び画像生成システム
US8130227B2 (en) 2006-05-12 2012-03-06 Nvidia Corporation Distributed antialiasing in a multiprocessor graphics system
US7948489B1 (en) * 2007-05-30 2011-05-24 Adobe Systems Incorporated Minimizing tessellation of surfaces
US8217936B1 (en) 2007-05-30 2012-07-10 Adobe Systems Incorporated Minimizing tessellation of surfaces
US7868885B2 (en) * 2007-06-22 2011-01-11 Microsoft Corporation Direct manipulation of subdivision surfaces using a graphics processing unit
US20090033659A1 (en) * 2007-07-31 2009-02-05 Lake Adam T Real-time luminosity dependent subdivision
US20110310102A1 (en) * 2010-06-17 2011-12-22 Via Technologies, Inc. Systems and methods for subdividing and storing vertex data
GB201103699D0 (en) 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphic processing
GB201103698D0 (en) * 2011-03-03 2011-04-20 Advanced Risc Mach Ltd Graphics processing
US9087409B2 (en) * 2012-03-01 2015-07-21 Qualcomm Incorporated Techniques for reducing memory access bandwidth in a graphics processing system based on destination alpha values
US10559123B2 (en) 2012-04-04 2020-02-11 Qualcomm Incorporated Patched shading in graphics processing
US10699361B2 (en) * 2012-11-21 2020-06-30 Ati Technologies Ulc Method and apparatus for enhanced processing of three dimensional (3D) graphics data
US9940446B2 (en) 2013-07-25 2018-04-10 Siemens Healthcare Diagnostics Inc. Anti-piracy protection for software
US9417911B2 (en) 2014-03-12 2016-08-16 Live Planet Llc Systems and methods for scalable asynchronous computing framework
US9905046B2 (en) 2014-04-03 2018-02-27 Intel Corporation Mapping multi-rate shading to monolithic programs
US20160155261A1 (en) * 2014-11-26 2016-06-02 Bevelity LLC Rendering and Lightmap Calculation Methods
US9704217B2 (en) 2015-04-20 2017-07-11 Intel Corporation Apparatus and method for non-uniform frame buffer rasterization
US11379941B2 (en) * 2016-09-22 2022-07-05 Advanced Micro Devices, Inc. Primitive shader
CN106683162A (zh) * 2017-01-18 2017-05-17 天津大学 一种面向嵌入式GPU多着色器结构的后置顶点Cache设计方法
CA3059439A1 (en) 2017-04-13 2018-10-18 Spirox, Inc. Nasal implant and delivery tool for a nasal implant
CN111242333B (zh) * 2017-08-16 2021-04-06 北京嘀嘀无限科技发展有限公司 网约车订单处理方法、系统、终端及服务器
US12067753B2 (en) 2021-08-16 2024-08-20 Tencent America LLC 2D UV atlas sampling based methods for dynamic mesh compression

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2765075B2 (ja) 1989-07-26 1998-06-11 松下電器産業株式会社 厨房装置
JPH0521178A (ja) 1991-07-11 1993-01-29 Toshiba Lighting & Technol Corp 放電ランプ高周波点灯装置
US6747644B1 (en) * 1995-08-04 2004-06-08 Sun Microsystems, Inc. Decompression of surface normals in three-dimensional graphics data
US5963209A (en) * 1996-01-11 1999-10-05 Microsoft Corporation Encoding and progressive transmission of progressive meshes
JPH1173527A (ja) * 1997-06-30 1999-03-16 Sun Microsyst Inc グラフィカル・オブジェクトの規則的にタイリングされた表面部分を表現する3次元幾何データの圧縮および伸張
JP3705923B2 (ja) * 1998-04-09 2005-10-12 株式会社ソニー・コンピュータエンタテインメント 画像処理装置および画像処理方法、プログラム提供媒体、並びにデータ提供媒体
US6356263B2 (en) * 1999-01-27 2002-03-12 Viewpoint Corporation Adaptive subdivision of mesh models
US6587104B1 (en) * 1999-09-30 2003-07-01 Microsoft Corporation Progressive hulls
US6891533B1 (en) * 2000-04-11 2005-05-10 Hewlett-Packard Development Company, L.P. Compositing separately-generated three-dimensional images
WO2001095257A1 (en) * 2000-06-08 2001-12-13 Imagination Technologies Limited Tiling and compression for rendering 3d images
US6476225B2 (en) * 2001-02-15 2002-11-05 Boehringer Ingelheim Pharma Kg Process for purifying 20(S)-camptothecin
US6914610B2 (en) * 2001-05-18 2005-07-05 Sun Microsystems, Inc. Graphics primitive size estimation and subdivision for use with a texture accumulation buffer
JP3840966B2 (ja) 2001-12-12 2006-11-01 ソニー株式会社 画像処理装置およびその方法
US6765584B1 (en) * 2002-03-14 2004-07-20 Nvidia Corporation System and method for creating a vector map in a hardware graphics pipeline
US7009605B2 (en) 2002-03-20 2006-03-07 Nvidia Corporation System, method and computer program product for generating a shader program
US20040012600A1 (en) 2002-03-22 2004-01-22 Deering Michael F. Scalable high performance 3d graphics
US6982714B2 (en) * 2002-05-01 2006-01-03 Microsoft Corporation Systems and methods for providing a fine to coarse look ahead in connection with parametrization metrics in a graphics system
US7071936B2 (en) * 2002-05-01 2006-07-04 Microsoft Corporation Systems and methods for providing signal-specialized parametrization
GB2415118B (en) * 2002-05-10 2006-04-05 Imagination Tech Ltd An interface and method of interfacing between a parametic modelling unit and a polygon based rendering system
US8482559B2 (en) * 2002-11-04 2013-07-09 Ati Technologies Ulc Method and apparatus for triangle tessellation
US6839062B2 (en) * 2003-02-24 2005-01-04 Microsoft Corporation Usage semantics
US7148890B2 (en) * 2003-04-02 2006-12-12 Sun Microsystems, Inc. Displacement mapping by using two passes through the same rasterizer
US7151543B1 (en) * 2003-04-16 2006-12-19 Nvidia Corporation Vertex processor with multiple interfaces
US7379599B1 (en) * 2003-07-30 2008-05-27 Matrox Electronic Systems Ltd Model based object recognition method using a texture engine
US7382369B2 (en) * 2003-10-10 2008-06-03 Microsoft Corporation Systems and methods for robust sampling for real-time relighting of objects in natural lighting environments
US7948490B2 (en) * 2003-10-22 2011-05-24 Microsoft Corporation Hardware-accelerated computation of radiance transfer coefficients in computer graphics
US7567252B2 (en) * 2003-12-09 2009-07-28 Microsoft Corporation Optimizing performance of a graphics processing unit for efficient execution of general matrix operations
US7236170B2 (en) * 2004-01-29 2007-06-26 Dreamworks Llc Wrap deformation using subdivision surfaces
US7109987B2 (en) * 2004-03-02 2006-09-19 Ati Technologies Inc. Method and apparatus for dual pass adaptive tessellation
US7154500B2 (en) * 2004-04-20 2006-12-26 The Chinese University Of Hong Kong Block-based fragment filtration with feasible multi-GPU acceleration for real-time volume rendering on conventional personal computer
US7436405B2 (en) * 2004-05-14 2008-10-14 Microsoft Corporation Terrain rendering using nested regular grids

Also Published As

Publication number Publication date
US8217942B2 (en) 2012-07-10
GB2431324A (en) 2007-04-18
CN102081804A (zh) 2011-06-01
US8044957B2 (en) 2011-10-25
TW200609728A (en) 2006-03-16
US8462159B2 (en) 2013-06-11
TWI330782B (en) 2010-09-21
US20120262459A1 (en) 2012-10-18
US7956860B2 (en) 2011-06-07
US20120007867A1 (en) 2012-01-12
US20060044313A1 (en) 2006-03-02
CN1741066A (zh) 2006-03-01
JP2008511074A (ja) 2008-04-10
US20100231591A1 (en) 2010-09-16
CN102081804B (zh) 2013-07-31
CN1741066B (zh) 2011-03-30
US7750914B2 (en) 2010-07-06
US20110205230A1 (en) 2011-08-25
WO2006026118A1 (en) 2006-03-09
GB2431324B (en) 2010-09-29
GB0700150D0 (en) 2007-02-14

Similar Documents

Publication Publication Date Title
DE112005002076T5 (de) Unterteilung von Geometriebildern in Grafikhardware
DE69811849T2 (de) Verfahren und gerät zur interpolation von attributen bei 3d-grafiken
DE69130545T2 (de) System zur Erzeugung einer texturierten Perspektivsicht
DE112022003721T5 (de) Mikro-netze, eine strukturierte geometrie für computergrafik
DE69932059T2 (de) Trilineare texturfilterung mit optimiertem speicherzugriff
DE69529253T2 (de) Verfahren und Gerät zum Erzeugen von Musterzeichen
DE60026197T2 (de) Detailgerichtete hierarchische Distanzfelder in der Objektmodellierung
DE60107130T2 (de) Sichtbarkeitsprojektion und Bildrekonstruktion für Oberflächenelemente
DE3689271T2 (de) Verfahren zur Bildanzeige.
DE69716877T2 (de) System und Verfahren zur genauen Gradientberechnung für die Texturabbildung in einem Computergraphiksystem
DE69924699T2 (de) Verfahren zur Schaffung von als Oberflächenelemente dargestellten grafischen Objekten
DE102019118838A1 (de) Virtuelle photogrammetrie
DE102015113240A1 (de) System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters
DE102018125472B4 (de) Grafikprozessor, der Abtastungs-basiertes Rendering durchführt, und Verfahren zum Betreiben desselben
DE602004003111T2 (de) Tiefen-basiertes Antialiasing
DE602004011749T2 (de) Umschlagsdeformation mittels unterteilten Oberflächen
DE19917092A1 (de) Verfahren zur Rasterisierung eines Graphikgrundelements
DE112005003003T5 (de) System, Verfahren und Programm zum Komprimieren von dreidimensionalen Bilddaten sowie Aufzeichnungsmedium hierfür
DE102010048486A1 (de) Bildverarbeitungstechniken
DE69606177T2 (de) Verfahren und gerät zur texturabbildung
DE69921696T2 (de) Verfahren zur perspektivischen darstellung, ausgehend von einem voxelraum
DE102008050449A1 (de) Clipping Geometrien beim Raycasting
DE69924230T2 (de) Verfahren zur Modellierung von durch Oberflächenelemente dargestellten grafischen Objekten
DE19807053A1 (de) Strahltransformationsverfahren für eine schnelle Volumenaufbereitung für eine perspektivische Betrachtung
EP2528042A1 (de) Verfahren und Vorrichtung zum Re-Meshing von 3D-Polygonmodellen

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R011 All appeals rejected, refused or otherwise settled
R003 Refusal decision now final

Effective date: 20140422