DE102015113240A1 - System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters - Google Patents

System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters Download PDF

Info

Publication number
DE102015113240A1
DE102015113240A1 DE102015113240.0A DE102015113240A DE102015113240A1 DE 102015113240 A1 DE102015113240 A1 DE 102015113240A1 DE 102015113240 A DE102015113240 A DE 102015113240A DE 102015113240 A1 DE102015113240 A1 DE 102015113240A1
Authority
DE
Germany
Prior art keywords
shading
triangle
shaded
object space
grid
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.)
Pending
Application number
DE102015113240.0A
Other languages
English (en)
Inventor
Anjul Patney
Eric B. Enderton
Eric B. Lum
Marco Salvi
Christopher Ryan Wyman
Yubo Zhang
Yong He
G. Evan Hart Jr.
Kayvon Fatahalian
Yury Uralsky
Henry Packard Moreton
Aaron Eliot Lefohn
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.)
Nvidia Corp
Original Assignee
Nvidia 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 Nvidia Corp filed Critical Nvidia Corp
Publication of DE102015113240A1 publication Critical patent/DE102015113240A1/de
Pending 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/50Lighting effects
    • G06T15/80Shading
    • 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/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • 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/04Indexing scheme for image data processing or generation, in general involving 3D image data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail

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

Es werden ein System, ein Verfahren und ein Computerprogrammprodukt zur Schattierung unter Verwendung eines dynamischen Objektraumgitters bereitgestellt. Ein Objekt, das durch Dreiecksgrundformen in einem dreidimensionalen (3D) Raum definiert ist, der für das Objekt spezifisch ist, wird empfangen und es wird ein Objektraum-Schattierungsgitter für eine erste Dreiecksgrundform der Dreiecksgrundformen auf der Grundlage von Koordinaten der ersten Dreiecksgrundform in dem 3D-Raum definiert. Es wird ein Schattierungsprogramm von einer Verarbeitungs-Pipeline ausgeführt, um einen schattierten Wert an einem Punkt in dem Objektraum-Schattierungsgitter für die erste Dreiecksgrundform zu berechnen.

Description

  • BEANSPRUCHUNG EINER PRIORITÄT
  • Diese Anmeldung beansprucht die Priorität der vorläufigen US-Anmeldung mit der Nummer 62/036,552, mit dem Titel „Objektraum-Schattierung mit variabler Rate mit tri-linearer Filterung”, die am 12. August 2014 eingereicht wurde und deren gesamter Inhalt hiermit durch Bezugnahme mit eingeschlossen ist.
  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft die Grafikverarbeitung und betrifft insbesondere die Schattierung unter Verwendung eines dynamischen Objektraum-Gitters.
  • HINTERGRUND
  • Mit zunehmender Auflösung von Anzeigeeinrichtungen müssen mehr Pixel für jeden Bildblock schattiert werden. Um eine hohe Bildblockrate für Anzeigen mit hoher Auflösung beizubehalten, wurden Techniken entwickelt, um unnötige Schattierungsoperationen zu vermeiden. Zu Beispielen von Schattierungstechniken gehören Bildschirm-Raum-Schattierung mit niedriger Rate, Aufwärtsskalierung von Bildern mit geringer Auflösung und Bildschirm-Raum-Schattierung mit mehreren Raten.
  • Die Bildschirm-Raum-Schattierung mit geringer Rate zeigt zeitliche Instabilität, da Schattierungsabtastungen auf den Bildschirm und nicht auf das Objekt ausgerichtet sind. Bei geringen Raten können gegebenenfalls Schattierungsterme zu wenig abgetastet werden und die schattierten Pixel zum Schimmern oder zum Herumwandern oder Flackern, wenn sich die Kamera oder das Objekt bewegt. Die schimmernden und flackernden Bildfehler sind insbesondere auf Oberflächen mit Glanzbeleuchtung und normalen Abbildungen mit hoher Frequenz sichtbar. Ferner führt die Bewertung von Schattierungsprogrammen mit Raten, die kleiner als einmal pro Pixel sind, häufig zu einer Schattierung an Abtastungen, die außerhalb der ursprünglichen Grundform liegen, was sichtbare Bildfehler in Szenen mit feinen geometrischen Details hervorrufen kann.
  • Die Aufwärtsskalierung von Bildern mit geringer Auflösung ist dahingehend problematisch, dass die Schattierungsrate mit der Sichtbarkeitsrate zu koppeln ist. Anders ausgedrückt, die Rate, bei der eine Sichtbarkeitsprüfung ausgeführt wird, ist gleich der Rate, mit der die Schattierung ausgeführt wird. Folglich kann gegebenenfalls die Absenkung der Schattierungsrate auch das wahrgenommene geometrische Detail in einer Szene reduzieren, was häufig unerwünscht ist.
  • Die Bildschirm-Raum-Schattierung mit mehreren Raten ist eine Technik, die den Schattierungsaufwand reduziert, indem die Daten für die Niederfrequenzanteile der Szene reduziert werden. Daher ist die Schattierungsrate von der Szene abhängig und ist nicht gleichmäßig. Die Bildschirm-Raum-Schattierung mit mehreren Raten kann gegebenenfalls keine Bildblockrate mit konsistent höherer Leistung bereitstellen. Daher gibt es einen Bedarf, diese Problematik und/oder andere Probleme, die mit dem Stand der Technik einhergehen, anzusprechen.
  • ÜBERBLICK
  • Es werden ein System, ein Verfahren und ein Computerprogrammprodukt zur Schattierung unter Verwendung eines dynamischen Objektraum-Gitters bereitgestellt. Das Verfahren umfasst die Schritte des Empfangens eines Objekts, das durch Dreiecksgrundformen in einem dreidimensionalen (3D) Raum definiert ist, der für das Objekt spezifisch ist, und des Definierens eines Objektraum-Schattierungsgitters für eine erste Dreiecksgrundform der Dreiecksgrundformen auf der Grundlage von Koordinaten der ersten Dreiecksgrundform in dem 3D-Raum. Es wird dann ein Schattierungsprogramm von einer Verarbeitungs-Pipeline ausgeführt, um ein schattiertes Attribut an einem Punkt in dem Objektraum-Schattierungsgitter für die erste Dreiecksgrundform zu berechnen.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1A zeigt ein Flussdiagramm eines Verfahrens zur Schattierung unter Verwendung eines dynamischen Objektraum-Gitters gemäß einer Ausführungsform;
  • 1B zeigt ein Flussdiagramm eines Verfahrens zur Ausführung einer Objektraum-Schattierung gemäß einer Ausführungsform;
  • 2 zeigt eine Parallelverarbeitungseinheit (PPU) gemäß einer Ausführungsform;
  • 3 zeigt den Datenstrom-Multiprozessor aus 2 gemäß einer Ausführungsform;
  • 4 ist eine Konzeptansicht einer Grafikverarbeitungs-Pipeline, die durch die PPU aus 2 gemäß einer Ausführungsform eingerichtet ist;
  • 5A bis 5C zeigen ein Mip-abgebildetes Objektraum-Schattierungsgitter, das für eine Grundform gemäß einer weiteren Ausführungsform definiert ist;
  • 5D zeigt ein Objektraum-Schattierungsgitter, das für eine schmale Grundform gemäß einer weiteren Ausführungsform definiert ist;
  • 6A zeigt ein Abtastmuster für ein Pixel gemäß einer Ausführungsform;
  • 6B zeigt ein Fragment in einem Bildschirm-Raum gemäß einer Ausführungsform;
  • 6C zeigt einen Flächenabdruck des Fragments im Objektraum gemäß einer Ausführungsform;
  • 6D zeigt zwei nächste Mip-Stufen eines Objektraumgitters, das verwendet wird, um eine schattierte Abtastung gemäß einer Ausführungsform zu erzeugen;
  • 6E zeigt die erneute Abbildung von Interpolationen zur Verwendung einer der zwei nächsten Mip-Stufen eines Mip-abgebildeten Objektraumgitters gemäß einer Ausführungsform;
  • 6F zeigt finite Differenzen auf einem Unterdreieck, die transformiert werden, um Ableitungen in einer Orthonormalbasis gemäß einer Ausführungsform zu berechnen;
  • 7A zeigt eine Blockansicht zur Ermittlung von Punkten eines Objektraumgitters, in denen schattierten Abtastungen gemäß einer Ausführungsform berechnet werden;
  • 7B zeigt ein Flussdiagramm eines Verfahrens zur Berechnung schattierter Attribute pro Abtastung für Pixel gemäß einer Ausführungsform; und
  • 8 zeigt ein anschauliches System, in welchem die diversen Architekturen und/oder Funktionen der diversen vorhergehenden Ausführungsformen eingerichtet werden können.
  • DETAILLIERTE BESCHREIBUNG
  • Schattierung unter Verwendung eines dynamischen Objektraum-Gitters erlaubt es, dass eine Szene mit variierenden Raten für jedes Objekt mit geringem Einfluss auf die Bildqualität schattiert wird. Ein Objektraum-Schattierungssystem bietet eine verbesserte Bildqualität bei Schattierungsraten pro Pixel und eine relativ geringe Verringerung der Qualität bei niedrigeren Schattierungsraten. Da die Schattierung im Objektraum ausgeführt wird, werden Schimmereffekte des Objekts deutlich reduziert. Ferner kann die Sichtbarkeitsrate von der Schattierungsrate entkoppelt werden, so dass eine Sichtbarkeit bei voller Rate (d. h. z-Prüfung pro Abtastung) mit variabler Schattierungsrate ausgeführt werden kann.
  • 1A zeigt ein Flussdiagramm eines Verfahrens 100 zur Schattierung unter Anwendung eines dynamischen Objektraumgitters gemäß einer Ausführungsform. Im Schritt 110 wird ein Objekt empfangen. Das Objekt ist durch Dreiecksgrundformen im dreidimensionalen (3D) Raum definiert, der für das Objekt spezifisch ist. Im Zusammenhang der vorliegenden Beschreibung kann das lokale Koordinatensystem, das jeder Dreiecksgrundform innewohnt, durch Schwerpunktskoordinaten definiert werden. Im Zusammenhang der vorliegenden Beschreibung ist der 3D-Raum, der zu dem Objekt gehört, ein zeitlich kohärenter Objektraum, wobei das Objekt durch eine oder mehrere Dreiecksgrundformen definiert ist. Ein Welt-Raum umfasst alle Objekte in einer Szene und ist daher in der Lage, relative Positionen der unterschiedlichen Objekte in der Szene darzustellen. Im Gegensatz zum Objektraum ist ein Kameraraum eine Ansicht der Objekte in der Szene, wie sie von der Kamera aus gesehen werden. Anders ausgedrückt, der Kameraraum ist spezifisch für die Kamera. Schließlich ist der Bildschirm-Raum ein zweidimensionaler Raum, der eine Projektion der Szene auf eine zweidimensionale Ebene im Kameraraum ist.
  • Im Schritt 120 wird ein Objektraum-Schattierungsgitter für eine erste Dreiecksgrundform der Dreiecksgrundformen auf der Grundlage von Koordinaten der ersten Dreiecksgrundform im 3D-Raum definiert. Im Zusammenhang der vorliegenden Beschreibung definieren Schwerpunktskoordinaten das lokale Koordinatensystem, das in den Dreiecksgrundformen umfasst ist, und die Schwerpunktskoordinaten definierten ferner Punkte des Schattierungsgitters derart, dass das Schattierungsgitter ein Dreieck-Schattierungsgitter ist. Auf den Schwerpunkt bezogene Schattierungsgitter können einen alten Inhalt bei der Echtzeit-Bilderzeugung betreffen, und erfordern keine spezielle Szenenparametrisierung, Objektparametrisierung und/oder Parametrisierung der Grundformen. Daher kann der alte Inhalt unter Anwendung eines auf den Schwerpunkt bezogenen Schattierungsgitters schattiert werden. In einer Ausführungsform ist ein Objektraum-Schattierungsgitter für individuelle Grundformen definiert und das Objektraum-Schattierungsgitter für eine spezielle Grundform ist spezifisch für die Grundform.
  • In einer Ausführungsform wird das Objektraum-Schattierungsgitter Mip-abgebildet und eine oder mehrere Stufen des Mip-abgebildeten Objektraum-Schattierungsgitters werden entsprechend einer Schattierungsrate „abgetastet”. Anders als bei üblichen Mip-Abbildungen werden jedoch schattierte Abtastungen für die höheren Mip-Stufen (das heißt, Mip-Stufen mit niedrigerer Auflösung) durch die Filterung schattierter Abtastungen für die niedrigeren Mip-Stufen (das heißt, Mip-Stufen mit höherer Auflösung) nicht erzeugt. Stattdessen können schattierte Abtastungen für jede Mip-Stufe dynamisch für jeden speziellen Punkt auf einer beliebigen Mip-Stufe des Objektraum-Schattierungsgitters berechnet werden.
  • Im Schritt 130 wird dann ein Schattierungsprogramm von einer Verarbeitungs-Pipeline ausgeführt, um ein schattiertes Attribut an einem Punkt in dem Objektraum-Schattierungsgitter für die erste Dreiecksgrundform zu berechnen. Die Ausführung des Schattierungsprogramms an einem Punkt auf dem Objektraum-Schattierungsgitter entspricht der „Abtastung” des Objektraum-Schattierungsgitters und erzeugt ein schattiertes Attribut. Es kann ein einzelner Punkt oder es können mehrere Punkte abgetastet und gefiltert werden, um das schattierte Attribut zu erzeugen. Eine schattierte Abtastung umfasst ein oder mehrere schattierte Attribute.
  • In Verbindung mit der vorliegenden Beschreibung kann die Verarbeitungs-Pipeline eine Grafikverarbeitungs-Pipeline sein, die von einem Grafikprozessor oder einem Prozessor für Allgemeinzwecke eingerichtet wird, von denen jeder ausgebildet ist, Befehle des Schattierungsprogramms auszuführen. Im Zusammenhang der vorliegenden Beschreibung kann ein schattiertes Attribut eine Farbe und/oder Tiefe und/oder Texturkoordinaten oder dergleichen sein. Es kann eine Oberflächengleichung, die einer grafischen Grundform, etwa einem Dreieck, entspricht, an einer Abtastposition (d. h. Punkt) in dem Objektraum-Schattierungsgitter ausgewertet werden, um einen Attributwert zu erzeugen.
  • In einer Ausführungsform werden Schattierungsanforderungen im Objektraum erzeugt, nachdem Sichtbarkeitsberechnungen ausgeführt worden sind. Jede Bildschirm-Raum-Schattierungsposition für ein Objekt erzeugt eine oder mehrere Schattierungseinheiten, die entsprechende Punkte des Objektraum-Schattierungsgitters abtasten. Das Objektraum-Schattierungsgitter wird nicht notwendigerweise für jeden Bildblock erneut berechnet, selbst wenn sich die Kameraposition ändert. Da das Schattierungsgitter im Objektraum definiert ist, muss das Schattierungsgitter nur neu berechnet werden, wenn sich die Form des Objekts im Objektraum ändert. Da ferner die Schattierungsberechnung unter Verwendung von Schattierungsgittern ausgeführt werden, die jeweils auf die Grundformen ausgerichtet sind, liegen die Abtastungen stets innerhalb der jeweiligen Grundform. Folglich können zeitlich stabile Bilder erzeugt werden und durch die Schattierungseinheit hervorgerufene Bildfehler wie Glanzbildfehler können deutlich reduziert werden. Wenn sich die Kameraposition ändert, werden die Punkte auf dem Schattierungsgitter, die für ein spezielles Pixel im Bildschirm-Raum abgetastet werden, auf der Grundlage der Kameraposition relativ zu dem Objekt geändert. In einer Ausführungsform wird eine Pixelfläche im Bildschirm-Raum in den Objektraum transformiert, um die Punkte auf dem Objektraum-Schattierungsgitter zu ermitteln, die abgetastet werden.
  • 1B zeigt ein Flussdiagramm eines Verfahrens 150 zur Ausführung einer Objektraum-Schattierung gemäß einer Ausführungsform. Im Schritt 160 wird ein Objekt empfangen. Das Objekt ist durch Vertices bzw. Eckpunkte einer oder mehrerer Grundformen in einem 3D-Raum definiert, der spezifisch für das Objekt ist. Im Zusammenhang der vorliegenden Beschreibung ist der 3D-Raum, der dem Objekt zugeordnet ist, ein zeitlich kohärenter Objektraum. In einer Ausführungsform ist das Objekt durch eine oder mehrere Dreiecksgrundformen definiert.
  • Im Schritt 170 wird eine Schattierungsrate für die Grundform auf der Grundlage einer Bildschirm-Raum-Ableitung von Koordinaten eines Pixelfragments im 3D-Raum berechnet, der dem Objekt zugeordnet ist. Im Zusammenhang der vorliegenden Beschreibung kann die Bildschirm-Raum-Ableitung unter Anwendung von Objektraumkoordinaten einer Pixelfläche bzw. eines Pixel-Flächenabdrucks berechnet werden, die bzw. der von dem Bildschirm-Raum in den 3D-Raum transformiert wird. In einer Ausführungsform wird die Ableitung der Objektraumkoordinaten, die die Pixelfläche näherungsweise wiedergeben, berechnet, um die Schattierungabtastrate zu ermitteln. In einem Beispiel kann die Pixelfläche näherungsweise gleich der Größe des Objekts sein, wodurch mehrere Grundformen mit eingeschlossen werden, so dass die Schattierungsrate gering ist und das Objekt nahezu in das Bildschirm-Raum-Pixel passt. In einem weiteren Beispiel kann die Pixelfläche kleiner als die Größe einer einzigen Grundform des Objekts sein, so dass die Schattierungsrate hoch ist und das Objekt mehrere Bildschirm-Raum-Pixel abdeckt.
  • Im Schritt 180 wird dann ein Schattierungsprogramm von einer Verarbeitungs-Pipeline ausgeführt, um schattierte Attribute für die Grundform gemäß der Schattierungsabtastrate zu berechnen. Im Zusammenhang der vorliegenden Beschreibung entspricht eine Ausführung des Schattierungsprogramms an einem Punkt auf dem Objektraum-Schattierungsgitter einer „Abtastung” des Objektraum-Schattierungsgitters und einer Erzeugung schattierter Attribute. Es kann ein einzelner Punkt oder mehrere Punkte abgetastet und gefiltert werden, um das schattierte Attribut zu erzeugen. In einer Ausführungsform wird ein Objektraum-Schattierungsgitter für das Objekt Mip-abgebildet und eine oder mehrere Stufen des Mip-abgebildeten Objektraum-Schattierungsgitters werden gemäß der Schattierungsrate „abgetastet”.
  • Ferner wird nunmehr anschauliche Information im Hinblick auf diverse optionale Architekturen und Merkmale angegeben, mit denen die vorhergehende Plattform entsprechend den Wünschen des Anwenders eingerichtet werden kann oder auch nicht. Es sollte jedoch unbedingt beachtet werden, dass die folgende Information nur für anschauliche Zwecke angegeben ist und in keiner Weise als beschränkend erachtet werden sollte. Jegliches folgendes Merkmal kann optional mit oder ohne Ausschluss anderer beschriebener Merkmale umgesetzt werden.
  • Die Reyes-Bilderzeugungsarchitektur führte die Idee der Ausführung von Schattierungsberechnungen im Objektraum ein und machte diese bekannt. Reyes-Bilderzeugungseinheiten verwenden eine adaptive Parkettierung bzw. Mosaikeinteilung, um Schattierungsgitter erzeugen, bevor Sichtbarkeitsberechnungen ausgeführt werden. Die Erzeugung von Objektraum-Schattierungsgitter unter Anwendung einer Reyes-artigen adaptiven Parkettierung ist für die Echtzeit-Bilderzeugung möglich, ist aber aufwändig, um in feiner Weise jede Grundform mosaikmäßig einzuteilen und ist ineffizient für die Schattierung vor der Ausführung von Sichtbarkeitsberechnungen. Insbesondere die Schattierung vor der Sichtbarkeit in Szenen mit einem hohen Grad an Sichtbarkeit und Aussonderung durch Einschluss können äußerst ineffizient sein. Ferner besteht ein existierender Echtzeit-3D-Inhalt hauptsächlich aus Dreiecksgittern, die typischerweise fein mosaikmäßig unterteilt werden müssen für die Verarbeitung unter Verwendung einer Reyes-Bilderzeugungseinheit. Daher ist ein existierender Echtzeit-3D-Inhalt typischerweise nicht mit einer Reyes-Bilderzeugungseinheit oder bestehenden Objektraum-Bilderzeugungseinheit kompatibel.
  • Wie hierin beschrieben ist, können andererseits Schattierungsberechnungen im Objektraum ausgeführt, nachdem Sichtbarkeitsberechnungen ausgeführt sind, ohne dass eine mosaikmäßige Einteilung des 3D-Inhalts erforderlich ist. Ferner ist keine zusätzliche Parametrisierung eines bestehenden Echtzeit-3D-Inhalts für die Schattierung unter Anwendung eines Objektraum-Schattierungsgitters erforderlich. Daher ist bestehender Echtzeit-3D-Inhalt mit der Objektraum-Schattierungsgitter-Technik kompatibel. Ein Mip-abgebildetes Objektraum-Schattierungsgitter ermöglicht die Schattierung mit mehreren Raten in einer stabilen entkoppelten Weise ohne zeitliche Bildfehler und eröffnet Möglichkeiten, Schattierungsberechnungen innerhalb und über Grundformen hinweg in einem Objekt erneut zu verwenden.
  • In einer Ausführungsform werden nach der Sichtbarkeitsverarbeitung bestehende Bildschirm-Raum-Schattierungspositionen in Objektraum-Schattierungsoperationen pro Dreieck transformiert und dann zu einem Mip-abgebildeten Objektraum-Schattierungsgitter aus Punkten in Dreiecksform quantisiert. Es kann dann eine schattierte Abtastung für einen oder mehrere der Punkte berechnet werden. Jede Bildschirm-Raumposition ist eine gefilterte Kombination von mehreren Objektraumpunkten auf dem Objektraum-Schattierungsgitter zugeordnet. Eine Oberflächen-Schattierungseinheit kann an jedem der mehreren Objektraumpunkte aufgerufen werden, um schattierte Abtastungen zu berechnen. Schattierte Abtastungen, die für unterschiedliche Bildschirm-Raum-Punkte gleich sind (d. h., schattierte Abtastungen, die an Punkten berechnet sind, die für unterschiedliche Objektraum-Grundformen gemeinsam sind) können gespeichert werden, um die Anzahl an Oberflächen-Schattierungseinheiten zu reduzieren, die aufgerufen werden. Die Ausgaben der Oberflächen-Schattierungseinheit (d. h. schattierte Abtastungen) können gefiltert werden, um schattierte Attribute für Pixel, etwa endgültige Pixel-Farben, zu erhalten.
  • 2 zeigt eine Parallelverarbeitungseinheit (PPU) 200 gemäß einer Ausführungsform. Die diversen Architekturen und/oder Funktionen der diversen vorhergehenden Ausführungsformen können in der PPU 200 eingerichtet werden. Obwohl hierin ein paralleler Prozessor als ein Beispiel der PPU 200 bereitgestellt ist, sollte dringend beachtet werden, dass ein derartiger Prozessor nur aus anschaulichen Zwecken aufgeführt ist, und dass ein beliebiger Prozessor eingesetzt werden kann, um diesen zu ergänzen und/oder zu ersetzen. In einer Ausführungsform ist die PPU 200 ausgebildet, mehrere Stränge bzw. Threads gleichzeitig in zwei oder mehr Datenstrom-Multiprozessoren (SMs) 250 auszuführen. Ein Strang bzw. Thread (d. h. ein Strang im Ablauf) ist eine Instanz einer Gruppe von Befehlen, die innerhalb eines speziellen SM 250 ausgeführt werden. Jeder SM 250, der nachfolgend in Verbindung mit 3 detaillierter beschrieben ist, kann, ohne einschränkend zu sein, einen oder mehrere Verarbeitungskerne, eine oder mehrere Lade/Speicher-Einheiten (LSUs), einen Cache-Speicher der Ebene eins (L1), einen gemeinsam genutzten Speicher, und dergleichen aufweisen.
  • In einer Ausführungsform umfasst die PPU 200 eine Eingabe/Ausgabe-(I/O-)Einheit 205, die ausgebildet ist, Kommunikationsereignisse (d. h. Befehle, Daten, usw.) von einer zentralen Recheneinheit (CPU) (nicht gezeigt) über den Systembus 202 zu senden und zu empfangen. Die I/O-Einheit 205 kann eine periphere Komponenten Verbindung-Express(PCIe-)Schnittstelle für Kommunikation über einen PCIe-Bus implementieren. In alternativen Ausführungsformen kann die I/O-Einheit 205 andere Arten gut bekannter Busschnittstellen einrichten.
  • Die PPU 200 umfasst ferner eine Host-Schnittstelleneinheit 210, die die Befehle dekodiert und die Befehle an die Gitterverwaltungseinheit 215 oder andere Einheiten der PPU 200 (beispielsweise die Speicherschnittstelle 280) überträgt, wie dies durch die Befehle angegeben ist. Die Host-Schnittstelleneinheit 210 ist ausgebildet, Kommunikationsereignisse zwischen und unter den diversen logischen Einheiten der PPU 200 zu verteilen.
  • In einer Ausführungsform wird ein Programm, das als ein Befehlsstrom kodiert ist, von der CPU in einen Puffer geschrieben. Der Puffer ist ein Speichergebiet, beispielsweise Speicher 204 oder ein Systemspeicher, auf das sowohl die CPU als auch die PPU 200 zugreifen können (das heißt, lesen/schreiben). Die CPU schreibt den Befehlsstrom in den Puffer und sendet dann einen Zeiger auf den Beginn des Befehlsstroms an die PPU 200. Die Host-Schnittstelle 210 stellt der Strangblock-Array-Verwaltungseinheit (MU) 215 Zeiger auf einen oder mehrere Ströme bereit. Die MU 215 wählt einen oder mehrere Ströme aus und ist ausgebildet, die ausgewählten Ströme als eine Ansammlung anhängiger Strangblock-Arrays zu verwalten. Die Ansammlung anhängiger Strangblock-Arrays kann neue Strangblock-Arrays beinhalten, die noch nicht für die Ausführung ausgewählt sind, und kann Strangblock-Arrays beinhalten, die bereits teilweise ausgeführt und angehalten worden sind.
  • Eine Arbeitsverteilungseinheit 220, die zwischen der MU 215 und den SMs 250 angeordnet ist, verwaltet eine Anzahl aktiver Strangblock-Arrays, um damit aktive Strangblock-Arrays für die Ausführung durch die SMs 250 auszuwählen und auszugeben. Anhängige Strangblock-Arrays werden dann an die Ansammlung für aktive Strangblock-Arrays von der MU 215 übergeben, wenn ein anhängiges Strangblock-Array die Ausführung berechtigt ist, d. h. wenn es keine unaufgelösten Datenabhängigkeiten hat. Ein aktives Strangblock-Array wird an die anhängige Ansammlung übergeben, wenn die Ausführung des aktiven Strangblock-Arrays durch eine Abhängigkeit blockiert ist. Wenn die Ausführung eines Strangblock-Arrays abgeschlossen ist, wird das Strangblock-Array aus der Ansammlung aktiver Strangblock-Arrays von der Arbeitsverteilungseinheit 220 entfernt. Zusätzlich zum Empfang von Strangblock-Arrays aus der Host-Schnittstelleneinheit 210 und der Arbeitsverteilungseinheit 220 empfängt die MU 215 ebenfalls Strangblock-Arrays, die von den SMs 250 während der Ausführung eines Strangblock-Arrays erzeugt werden. Diese dynamisch erzeugten Strangblock-Arrays werden dann zu den anderen anhängigen Strangblock-Arrays in der Ansammlung anhängiger Strangblock-Arrays hinzugefügt.
  • In einer Ausführungsform führt die CPU einen Treiber-Systemkern aus, der eine Anwendungsprogrammierschnittstelle (API) einrichtet, die es einer oder mehreren Anwendungen, die gerade in der CPU ausgeführt werden, ermöglicht, Operationen zur Ausführung in der PPU 200 zu disponieren. Eine Anwendung kann Befehle (d. h. API-Aufrufe) enthalten, die den Treiber-Systemkern veranlassen, ein oder mehrere Strangblock-Arrays für die Ausführung zu erzeugen. In einer Ausführungsform implementiert die PPU 200 eine SIMD-(einzelner Befehl, Mehrfachdaten)-Architektur, in der jeder Strangblock (d. h. Stranggruppe) in einem Strangblock-Array gleichzeitig an einem anderen Datensatz durch andere Stränge in dem Strangblock ausgeführt wird. Der Treiber-Systemkern definiert Strangblöcke, die aus k zugehörigen Strängen aufgebaut sind, so dass Stränge in dem gleichen Strangblock Daten über einen gemeinsam benutzten Speicher austauschen können. In einer Ausführungsform umfasst ein Strangblock 32 zugehörige Stränge und ein Strangblock-Array ist ein Array aus einem oder mehreren Strangblöcken, die den gleichen Strom ausführen, und die unterschiedlichen Strangblöcke können Daten über den globalen Speicher austauschen.
  • In einer Ausführungsform umfasst die PPU 200X SMs 250(X). Beispielsweise kann die PPU 200 15 separate SMs 250 enthalten. Jeder SM 250 ist mehrsträngig und ausgebildet, mehrere Stränge (beispielsweise 32 Stränge) aus einem speziellen Strangblock gleichzeitig auszuführen. Jeder der SMs 250 ist mit einem Cache-Speicher der Ebene zwei (L2) 265 über eine Kreuzverbindungseinheit 260 (oder eine andere Art eines Verbindungsnetzwerkes) verbunden. Der L2-Cache-Speicher 265 ist mit einer oder mehreren Speicherschnittstellen 280 verbunden. Die Speicherschnittstellen 280 implementieren 16, 32, 64, 128-Bit-Datenbusse oder dergleichen für einen Hochgeschwindigkeitsdatentransfer. In einer Ausführungsform umfasst die PPU 200U Speicherschnittstellen 280(U), wobei jede Speicherschnittstelle 280(U) mit einer entsprechenden Speichereinrichtung 204(U) verbunden ist. Beispielsweise kann die PPU 200 mit bis zu 6 Speichereinrichtungen 204 verbunden sein, etwa einem synchronen dynamischen Speicher mit wahlfreiem Zugriff für Grafik mit doppelter Datenrate der Version 5 (GDDR5 SDRAM).
  • In einer Ausführungsform implementiert die PPU 200 eine Speicherhierarchie mit mehreren Ebenen. Der Speicher 204 ist außerhalb eines Chips als SDRAM angeordnet, der mit der PPU 200 verbunden ist. Daten aus dem Speicher 204 können abgeholt und in dem L2-Cache-Speicher 265 gespeichert werden, der im Chip angeordnet und gemeinsam von den diversen LSUs 350 verwendet wird. In einer Ausführungsform implementiert jeder der SMs 250 auch einen L1-Cache-Speicher. Der L1-Cache-Speicher ist ein privater Speicher, der einem speziellen SM 250 zugeordnet ist. Jeder der L1-Cache-Speicher ist mit dem gemeinsam genutzten L2-Cache-Speicher 265 verbunden. Daten aus dem L2-Cache-Speicher 265 können abgeholt und in jedem der L1-Cache-Speicher zur Verarbeitung in den Funktionseinheiten der SMs 250 gespeichert werden.
  • In einer Ausführungsform umfasst die PPU 200 eine grafische Verarbeitungseinheit (GPU). Die PPU 200 ist ausgebildet, Befehle zu empfangen, die Schattierungsprogramme zur Verarbeitung grafischer Daten spezifizieren. Grafische Daten können als eine Gruppe aus Grundformen, etwa Punkte, Linien, Dreiecke, Quadrate, Dreiecksstreifen, und dergleichen definiert sein. Typischerweise enthält eine Grundform Daten, die eine Reihe von Vertices bzw. Eckpunkten für die Grundform (beispielsweise im Modell-Raum-Koordinatensystem) sowie Attribute angeben, die jedem Eckpunkt der Grundform zugeordnet sind. Attribute können Position und/oder Farbe und/oder Oberflächennormalenvektor und/oder Texturkoordinaten und dergleichen umfassen. Die PPU 200 kann ausgebildet sein, die grafischen Grundformen zu verarbeiten, um einen Bildblockpuffer (d. h. Pixeldaten für jedes der Pixel der Anzeige) zu erzeugen. Der Treiber-Systemkern implementiert eine Grafikverarbeitungs-Pipeline, etwa die Grafikverarbeitungs-Pipeline, die durch die OpenGL-API definiert ist.
  • Eine Anwendung schreibt Modelldaten für eine Szene (d. h. eine Ansammlung von Eckpunkten und Attributen) in den Speicher. Die Modelldaten definierten jedes Objekt, das auf einer Anzeige sichtbar sein kann. Die Anwendung tätigt dann einen API-Aufruf an den Treiber-Systemkern, der anfordert, dass die Modelldaten als Bild erzeugt und angezeigt werden. Der Treiber-Systemkern liest dann die Modelldaten aus und schreibt Befehle in den Puffer, um eine oder mehrere Operationen zur Verarbeitung der Modelldaten auszuführen. Die Befehle können unterschiedliche Schattierungsprogramme kodieren, wozu eine Vertex-Schattierungseinheit und/oder eine Hüllen-Schattierungseinheit und/oder eine Geometrie-Schattierungseinheit und/oder eine Pixel-Schattierungseinheit und dergleichen gehören. Beispielsweise kann die MU 215 einen oder mehrere SMs 250 konfigurieren, um ein Vertex-Schattierungsprogramm auszuführen, das eine Reihe von Eckpunkten bearbeitet, die durch die Modelldaten festgelegt sind. In einer Ausführungsform kann die MU 215 unterschiedliche SMs 250 konfigurieren, um gleichzeitig verschiedene Schattierungsprogramme auszuführen. Beispielsweise kann eine erste Teilgruppe der SMs 250 ausgebildet sein, ein Vertex-Schattierungsprogramm auszuführen, während eine zweite Teilgruppe der SMs 250 ausgebildet sein kann, ein Pixel-Schattierungsprogramm auszuführen. Die erste Teilgruppe aus SMs 250 verarbeitet Vertex-Daten, um verarbeitete Vertex-Daten zu erzeugen, und schreibt die verarbeiteten Vertex-Daten in den L2-Cache-Speicher 265 und/oder den Speicher 204. Nachdem die verarbeiteten Vertex-Daten in Raster eingeteilt sind (d. h. von dreidimensionalen Daten in zweidimensionale Daten im Bildschirm-Raum transformiert sind), um Fragmentdaten zu erzeugen, führt die zweite Teilgruppe aus SMs 250 eine Pixel-Schattierungseinheit aus, um verarbeitete Fragmentdaten zu erzeugen, die dann mit anderen verarbeiteten Fragmentdaten vereinigt und in den Bildblockpuffer im Speicher 204 geschrieben werden. Das Vertex-Schattierungsprogramm und das Pixel-Schattierungsprogramm können gleichzeitig ausgeführt werden, wodurch unterschiedliche Daten aus der gleichen Szene in der Art einer Pipeline verarbeitet werden, bis alle Modelldaten für die Szene als Bild in dem Bildblockpuffer erzeugt sind. Anschließend wird der Inhalt des Bildblockpuffers zu einer Anzeigesteuerung zum Anzeigen auf einer Anzeigeeinrichtung übertragen.
  • Die PPU 200 kann in einem Tisch-Computer, einem tragbaren Computer, einem Tablett-Computer, einem intelligenten Telefon (beispielsweise ein drahtloses Handgerät), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einem elektronischen Handgerät, und dergleichen enthalten sein. In einer Ausführungsform ist die PPU 200 auf einem einzelnen Halbleitersubstrat eingerichtet. In einer weiteren Ausführungsform ist die PPU 200 in einem System-auf-einem-Chip (SoC) zusammen mit einer oder mehreren anderen Logikeinheiten, etwa einer CPU mit reduziertem Befehlssatz (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-Analog-Wandler (DAC) und dergleichen enthalten.
  • In einer Ausführungsform kann die PPU 200 in einer Grafikkarte enthalten sein, die eine oder mehrere Speichereinrichtungen 204, etwa GDDR5 SDRAM, enthält. Die Grafikkarte kann ausgebildet sein, mit einem PCIe-Einschub auf einer Hautplatine eines Tisch-Computers in Verbindung zu treten, der beispielsweise einen Nordbrücken-Chipsatz und einen Südbrücken-Chipsatz enthält. In einer noch weiteren Ausführungsform kann die PPU 200 in einer integrierten Graphikverarbeitungseinheit (iGPU) integriert sein, die in dem Chipsatz (d. h. Nordbrücke) der Hauptplatine enthalten ist.
  • 3 zeigt den Datenstrom-Multiprozessoren 250 aus 2 gemäß einer Ausführungsform. Wie in 3 gezeigt ist, enthält der SM 250 einen Befehls-Cache-Speicher 305, eine oder mehrere Disponiereinheiten 310, eine Registerdatei 320, einen oder mehrere Verarbeitungskerne 350, eine oder mehrere Einheiten mit doppelter Genauigkeit (DPUs) 351, eine oder mehrere Spezialfunktionseinheiten (SSUs) 352, eine oder mehrere Lade/Speichereinheiten (LSUs) 353, ein Verbindungsnetzwerk 380, einen gemeinsam genutzten Speicher 370 und einen oder mehrere Textureinheit/L1-Cache-Speicher 390.
  • Wie zuvor beschrieben, gibt die Arbeitsverteilungseinheit 220 aktive Strangblock-Arrays zur Ausführung in einem oder mehreren SMs 250 der PPU 200 aus. Die Disponiereinheit 310 empfängt die Strangblock-Arrays von der Arbeitsverteilungseinheit 220 und verwaltet die Befehlsdisponierung für einen oder mehrere Strangblöcke jedes aktiven Strangblock-Arrays. Die Disponiereinheit 310 disponiert Stränge zur Ausführung in Gruppen paralleler Stränge, wobei jede Gruppe als eine Stranggruppe bezeichnet wird. In einer Ausführungsform enthält jede Stranggruppe 32 Stränge. Die Disponiereinheit 310 kann mehrere unterschiedliche Strangblöcke verwalten, wobei die Strangblöcke Stranggruppen zur Ausführung zugeordnet werden und anschließend Befehle aus den mehreren unterschiedlichen Stranggruppen für die diversen Funktionseinheiten (d. h. Kerne 350, DPUs 351, SSUs 352 und LSUs 353) während jedes Taktzyklus disponiert werden.
  • In einer Ausführungsform enthält jede Disponiereinheit 310 eine oder mehrere Befehlsausgabeeinheiten 315. Jede Ausgabeeinheit 315 ist ausgebildet, Befehle an eine oder mehrere der Funktionseinheiten zu senden. In der in 3 gezeigten Ausführungsform enthält die Disponiereinheit 310 zwei Ausgabeeinheiten 315, die es ermöglichen, dass zwei verschiedene Befehle aus der gleichen Stranggruppe während jedes Taktzyklus ausgegeben werden. In alternativen Ausführungsformen kann jede Disponiereinheit 310 eine einzige Disponiereinheit 315 oder zusätzliche Disponiereinheiten 315 aufweisen.
  • Jeder SM 250 enthält eine Registerdatei 320, die eine Gruppe aus Registern für die Funktionseinheiten des SM 250 bereitstellt. In einer Ausführungsform ist die Registerdatei 320 derart auf die Funktionseinheiten aufgeteilt, dass jeder Funktionseinheit ein spezieller Teil der Registerdatei 320 zugeordnet ist. In einer weiteren Ausführungsform ist die Registerdatei 320 auf die unterschiedlichen Stranggruppen aufgeteilt, die gerade von dem SM 250 ausgeführt werden. Die Registerdatei 320 stellt temporären Speicherplatz für Operanden bereit, die mit den Datenpfaden der Funktionseinheiten verknüpft sind.
  • Jeder SM 250 umfasst L Verarbeitungskerne 350. In einer Ausführungsform enthält der SM 250 eine große Anzahl (beispielsweise 192 oder dergleichen) an unterschiedlichen Verarbeitungskernen 350. Jeder Kern 350 ist eine vollständig als Pipeline ausgeführte Verarbeitungseinheit mit einfacher Genauigkeit, die eine Gleitkomma-Arithmetik-Logikeinheit und eine Ganzzahl-Arithmetik-Logikeinheit enthält. In einer Ausführungsform implementieren die Gleitkomma-Arithmetik-Logikeinheiten den IEEE 754-2008-Standard für Gleitkomma-Arithmetik. Jeder SM 250 umfasst ferner M DPUs 351, die eine Gleitkomma-Arithmetik mit doppelter Genauigkeit implementieren, N SFUs 352, die spezielle Funktionen ausführen (beispielsweise Rechtecke kopieren, Pixel-Mischoperationen, und dergleichen), und P LSUs 353, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher 370 und der Registerdatei 320 über die J Textureinheiten/L1-Cache-Speicher 390 und das Verbindungsnetzwerk 380 implementieren. Die J Textureinheiten/L1-Cache-Speicher 390 sind zwischen dem Verbindungsnetzwerk 380 und dem gemeinsam genutzten Speicher 370 angeschlossen und sind ferner mit der Kreuzverbindungseinheit 260 verbunden. In einer Ausführungsform enthält der SM 250 64 DPUs 351, 32 SFUs 352 und 32 LSUs 353. In einer weiteren Ausführungsform ist der L1-Cache-Speicher nicht in der Textureinheit enthalten und ist stattdessen in dem gemeinsam genutzten Speicher 370 mit einer separaten direkten Verbindung zu der Kreuzungverbindungseinheit 260 enthalten.
  • Jeder SM 250 umfasst ein Verbindungsnetzwerk 380, das jede der Funktionseinheiten mit der Registerdatei 320 und dem gemeinsam benutzten Speicher 370 über das Verbindungsnetzwerk 380 verbindet. In einer Ausführungsform ist das Verbindungsnetzwerk 380 eine Kreuzverbindungseinheit, die ausgebildet sein kann, jegliche Funktionseinheit mit jeglichem Register in der Registerdatei 320 mit einem beliebigen der J Textureinheiten/L1-Cache-Speicher 300 oder den Speicherstellen in dem gemeinsam genutzten Speicher 370 zu verbinden.
  • In einer Ausführungsform ist der SM 250 in einer GPU implementiert. In einer derartigen Ausführungsform umfasst der SM 250 J Textureinheiten/L1-Cache-Speicher 390. Die Textureinheit/L1-Cache-Speicher 390 sind ausgebildet, auf Texturkarten (d. h. ein 2D-Array aus Texturelementen) aus dem Speicher 204 zu zugreifen und die Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in den Schattierungsprogrammen zu erzeugen. Die Textureinheiten/L1-Cache-Speicher 390 implementieren Texturoperationen, etwa Bildfehlerbehebungsoperationen unter Anwendung von Mip-Zuordnungen bzw. Mip-Abbildungen (d. h. Textur Zuordnungen bzw. Texturkarten mit variierendem Grad an Detail). In einer Ausführungsform enthält der SM 250 16 Textureinheiten/L1-Cache-Speicher 390. Wie hierin weiter beschrieben ist, sind die Textureinheiten/L1-Cache-Speicher 30 ferner ausgebildet, Lade- und Speicheranforderungen aus den LSUs 353 zu empfangen und die Texturzugriffe und die Lade- und Speicheranforderungen zu vereinen, um vereinigte Speicheroperationen zu erzeugen, die an ein Speichersystem ausgegeben werden, das den gemeinsam genutzten Speicher 370 enthält. Das Speichersystem kann ferner den L2-Cache-Speicher 265, den Speicher 204 und einen Systemspeicher (nicht gezeigt) aufweisen.
  • Die PPU 200, die zuvor beschrieben ist, kann ausgebildet sein, äußerst parallele Berechnungen wesentlich schneller als konventionelle CPUs auszuführen. Parallele Berechnung hat Vorteile in der Grafikverarbeitung, der Datenkomprimierung, in biometrischen Operationen, Stromverarbeitungsalgorithmen und dergleichen.
  • 4 ist eine Konzeptansicht einer Grafikverarbeitungs-Pipeline 400, die von der GPU 200 aus 2 gemäß einer Ausführungsform eingerichtet wird. Die Grafikverarbeitungs-Pipeline 400 ist ein abstraktes Flussdiagramm der Verarbeitungsschritte, die eingerichtet werden, um 2D-computererzeugte Bilder aus geometrischen 3D-Daten zu erzeugen. Wie gut bekannt ist, können Pipeline-Architekturen Operationen mit langer Verarbeitungszeit effizienter ausführen, indem die Operation in mehrere Stufen aufgeteilt wird, wobei der Ausgang jeder Stufe mit dem Eingang der nächsten nachfolgenden Stufe verbunden ist. Daher empfängt die Grafikverarbeitungs-Pipeline 400 Eingangsdaten 401, die von einer Stufe zu der nächsten Stufe der Grafikverarbeitungs-Pipeline 400 übertragen werden, um Ausgangsdaten 402 zu erzeugen. In einer Ausführungsform kann die Grafikverarbeitungs-Pipeline 400 eine Grafikverarbeitungs-Pipeline repräsentieren, die durch die OpenGL®-API oder durch DirectX 11® von MICROSOFT definiert ist.
  • Wie in 4 gezeigt ist, umfasst die Grafikverarbeitungs-Pipeline 400 eine Pipeline-Architektur, die eine Anzahl an Stufen enthält. Die Stufen enthalten, ohne einschränkend zu sein, eine Datenvereinigungsstufe 410, eine Vertex-Schattierungsstufe 420, eine Parkettierung-/Grundform-Vereinigungsstufe 430, eine Geometrie-Schattierungsstufe 440, eine Darstellungsfeld-Transformationsstufe 450, eine Rasterstufe 460, eine Fragmentschattierungsstufe 470 und eine Rasteroperationsstufe 480. In einer Ausführungsform umfassen die Eingangsdaten 401 Befehle, die die Verarbeitungseinheiten konfigurieren, um die Stufen der Grafikverarbeitungs-Pipeline 400 einzurichten und um geometrische Grundformen höherer Ordnung (beispielsweise Flecken) sowie einfachere geometrische Grundformen (beispielsweise Punkte, Linien, Dreiecke, Quadrate, Dreiecksstreifen oder Dreiecksfächer, und dergleichen) zu verarbeiten, die in den Stufen zu verarbeiten sind. Die Ausgangsdaten 402 können Pixeldaten (d. h. Farbdaten) enthalten, die in einen Bildblockpuffer oder in eine andere Art einer Oberflächendatenstruktur in einem Speicher geschrieben werden. Die SMs 250 können durch die Befehle des Schattierungsprogramms konfiguriert werden, um als eine oder mehrere Schattierungsstufen (beispielsweise Vertex-, Hüllen-, Bereichs-, Geometrie- und Pixel-Schattierungsstufe) zu fungieren und Pixeldaten in den Speicher 204 zu schreiben.
  • Die Datenvereinigungsstufe 410 empfängt die Eingangsdaten 401, die Vertex-Daten für die Geometrie höherer Ordnung angeben. Die Datenvereinigungsstufe 410 sammelt die Vertex-Daten, die die Grafikgeometrie höherer Ordnung definieren, in einem temporären Speicher oder einer Warteschlange, indem etwa ein Befehl aus dem Host-Prozessor empfangen wird, der einen Zeiger auf einen Puffer in einem Speicher enthält, und indem die Vertex-Daten aus dem Puffer ausgelesen werden. In einer Ausführungsform kann ein Speichersystem den Speicher 204 und/oder den L2-Cache-Speicher 265 und/oder den Textureinheiten/L1-Cache-Speicher 390 enthalten. Die Vertex-Daten werden dann an die Vertex-Schattierungsstufe 420 zur Verarbeitung gesendet.
  • Die Vertex-Schattierungsstufe 420 verarbeitet Vertex-Daten, indem eine Reihe von Operationen (d. h. eine Vertex-Schattierungseinheit oder ein Programm) einmal für jeden der Eckpunkte ausgeführt wird. Vertices bzw. Eckpunkte können beispielsweise als ein 4-Koordinatenvektor angegeben sein, der mit einem oder mehreren Vertex-Attributen verknüpft ist. Die Vertex-Schattierungsstufe 420 kann Eigenschaften, etwa Position, Farbe, Texturkoordinaten und dergleichen verändern. Anders ausgedrückt, die Vertex-Schattierungsstufe 420 führt Operationen an den Vertex-Koordinaten oder anderen Vertex-Attributen, die zu einem Eckpunkt gehören, durch. Derartige Operationen beinhalten üblicherweise Beleuchtungsoperationen (d. h. Modifizierung von Fahrtattributen für einen Eckpunkt) und Transformationsoperationen (d. h. Modifizierung des Koordinatenraums für einen Eckpunkt). Beispielsweise können Eckpunkte unter Verwendung von Koordinaten in einem Objekt-Koordinatenraum angegeben werden, die transformiert werden, indem die Koordinaten mit einer Matrix multipliziert werden, die die Koordinaten von dem Objekt-Koordinatenraum in einen Welt-Raum oder in einen normierten-Geräte-Koordinaten-(NCD)Raum überführen. Die Vertex-Schattierungsstufe 420 erzeugt transformierte Vertex-Daten, die der Parkettierung/Grundform-Vereinigungspuffer 430 zugeführt werden.
  • Die Parkettierung/Grundform-Vereinigungsstufe 430 sammelt Eckpunkte, die von der Vertex-Schattierungsstufe 420 ausgegeben werden, und unterteilt Flecken in eine Parkettstruktur, die durch die Eckpunkte und Steuerpunkte repräsentiert sind, in geometrische Grundformen. In einer Ausführungsform kopiert die Parkettierung/Grundform-Vereinigungsstufe 430 die Eckpunkte in geometrische Grundformen zur Verarbeitung durch die Geometrie-Schattierungsstufe 440. Beispielsweise kann die Parkettierung/Grundform-Vereinigungsstufe 430 ausgebildet sein, jeweils drei aufeinanderfolgende Eckpunkte als eine geometrische Grundform (d. h. ein Dreieck) zur Übertragung an die Geometrie-Schattierungsstufe 440 zu kopieren. In einigen Ausführungsformen können spezielle Eckpunkte für aufeinander folgende geometrische Grundformen (beispielsweise zwei aufeinanderfolgende Dreiecke in einem Dreiecksstreifen können zwei Eckpunkte gemeinsam haben) wieder verwendet werden. Die Grundform-Vereinigungsstufe 420 sendet geometrische Grundformen (d. h. eine Ansammlung zugehöriger Eckpunkte) an die Geometrie-Schattierungsstufe 440.
  • Die Geometrie-Schattierungsstufe 440 verarbeitet geometrische Grundformen, indem eine Gruppe von Operationen (d. h. eine Geometrie-Schattierungseinheit oder ein Geometrie-Schattierungsprogramm) an den geometrischen Grundformen ausgeführt wird. Geometrie-Schattierungsoperationen können aus jeder geometrischen Grundform eine oder mehrere geometrische Grundformen erzeugen. Anders ausgedrückt, die Geometrie-Schattierungsstufe 440 kann jede geometrische Grundform in ein feineres Raster aus zwei oder mehr geometrischen Grundformen zur Verarbeitung durch den Rest der Grafikverarbeitungs-Pipeline 400 unterteilen. Die Geometrie-Schattierungsstufe 440 sendet geometrische Grundformen zu der Darstellungsfeld-Stufe 450.
  • Die Darstellungsfeld-Stufe 450 führt eine Darstellungsfeld-Transformation, Aussonderung und Beschneidung der geometrischen Grundformen durch. Jede Oberfläche, für die ein Bild erzeugt wird, ist mit einer abstrakten Kameraposition verknüpft. Die Kameraposition repräsentiert eine Position eines Betrachters, der auf die Szene schaut, und definiert einen Betrachtungskegel, der die Objekte der Szene umschließt. Der Betrachtungskegel kann eine Betrachtungsebene, eine hintere Ebene und vier schneidende Ebenen umfassen. Jegliche geometrische Grundform, die vollständig außerhalb des Betrachtungskegels liegt, kann ausgesondert (d. h. verworfen) werden, da die geometrische Grundform nicht zu der endgültigen erzeugten Szene beiträgt. Eine geometrische Grundform, die teilweise innerhalb des Betrachtungskegels und teilweise außerhalb des Betrachtungskegels liegt, kann zugeschnitten werden (d. h. in eine neue geometrische Grundform transformiert werden, die innerhalb des Betrachtungskegels liegt. Ferner können geometrische Grundformen jeweils auf der Grundlage einer Tiefe des Betrachtungskegels skaliert werden. Alle potentiell sichtbaren geometrischen Grundformen werden dann an die Rasterstufe 460 übergeben.
  • Die Rasterstufe 460 wandelt die geometrischen 3D-Grundformen in 2D-Fragmente um. Die Rasterstufe 460 kann ausgebildet sein, die Eckpunkte der geometrischen Grundformen zu verwenden, um einen Satz an Oberflächengleichungen aufzustellen, aus denen diverse Attribute interpoliert werden können. In einer Ausführungsform sind die Oberflächengleichungen Ebenengleichungen in der Form Ax + By + C, wobei x und y Abtastpositionen und A, B und C Parameter der Ebenengleichung sind. In anderen Ausführungsformen spezifiziert eine Oberflächengleichung eine Oberfläche höherer Ordnung, etwa einen Flecken. Die Rasterstufe 460 kann ferner eine Abdeckungsmaske für mehrere Pixel berechnen, die angibt, ob eine oder mehrere der Bildschirm-Raum-Abtastpositionen für die mehreren Pixel die geometrische Grundform schneiden.
  • Die Rasterstufe 460 kann ausgebildet sein, eine frühe z-Prüfung auf der Grundlage von Tiefen-Werten pro Eckpunkt durchzuführen, um geometrische Grundformen zu entfernen, die nicht sichtbar sein werden. Eine frühe z-Prüfung vermeidet die Verarbeitung von Pixel für eine grafische Grundform, die dahinter liegt und daher von einer weiteren grafischen Grundform überdeckt ist. Eine frühe z-Prüfung wird vor Schattierungsoperationen ausgeführt, um den Aufwand der Ausführung von Schattierungsoperationen zu vermeiden, die nicht zu den endgültigen Farbwerten der Pixel in dem Bild beitragen werden. Die Schattierungsoperationen erzeugen schattierte Fragmente, die Farbdaten für die grafischen Grundformen repräsentieren, die mindestens eine Abtastung eines Pixels abdecken und den frühen z-Test überstanden haben. Nach den Schattierungsoperationen kann eine Plausibilitäts-z-Prüfung ausgeführt werden, um schattierte Fragmente zu entfernen, die verdeckt sind und daher in dem Bild nicht sichtbar sind, so dass Farbdaten für die nicht-sichtbaren schattierten Fragmente nicht in ein Pixel des Bildes geschrieben werden. Die Rasterstufe 460 sendet Fragmentdaten, die die Abdeckungsmasken und interpolierte Attribute pro Eckpunkt enthalten, an die Fragmentschattierungsstufe 470.
  • Die Fragmentschattierungsstufe 470 verarbeitet Fragmentdaten durch Ausführen einer Gruppe von Operationen (das heißt, eine Fragmentschattierungseinheit oder ein Fragmentschattierungsprogramm) an jedem der Fragmente. Die Fragmentschattierungsstufe 470 kann schattierte Fragmentdaten erzeugen (d. h. schattierte Attribute, etwa Farbwerte) für das Fragment, etwa durch Ausführen von Beleuchtungsoperationen oder Abtastung von Texturkarten unter Anwendung interpolierter Texturkoordinaten für das Fragment. Die schattierten Fragmentdaten können schattierte Attribute pro Abtastung sein, wobei eine oder mehrere Abtastungen innerhalb eines Pixels den gleichen berechneten schattierten Attributwert gemeinsam haben oder wobei ein schattierter Attributwert für jede Abtastposition innerhalb eines Pixels berechnet wird. Die Fragmentschattierungsstufe 470 erzeugt schattierte Fragmentdaten pro Abtastung, die der Rasteroperationsstufe 480 zugeleitet werden. Die Fragmentschattierungsstufe 470 ist detaillierter in Verbindung mit den 5A–E, 6A–F, 7A und 7B beschrieben.
  • Die Rasteroperationsstufe 480 kann diverse Operationen an den schattierten Fragmentdaten ausführen, etwa die Ausführung von Alpha-Prüfungen, Z-Tests, Schablonenprüfung und Vereinigen der schattierten Fragmentdaten mit andern Pixeldaten, die anderen Fragmenten entsprechen, die zu dem Pixel gehören. Wenn die Rasteroperationsstufe 480 die Verarbeitung der schattierten Fragmentdaten abgeschlossen hat, um Pixeldaten zu erzeugen (d. h. die Ausgangsdaten 402), können die Pixeldaten in die Anzeigeoberfläche geschrieben werden, d. h. in ein Bilderzeugungsziel, etwa einen Bildblockpuffer, einen Farbpuffer, einen Z-Puffer oder dergleichen). Die Rasteroperationsstufe 480 kann eine z-Prüfung pro Abtastung durchführen, so dass sichtbare Fragmentdaten in den Bildblockpuffer geschrieben werden und verborgene Fragmentdaten nicht in den Bildblockpuffer geschrieben werden.
  • Zu beachten ist, dass eine oder mehrere weitere Stufen in der Grafikverarbeitungs-Pipeline 400 zusätzlich oder anstelle einer oder mehrerer der zuvor beschriebenen Stufen enthalten sein können. Diverse Implementierungen der abstrakten Grafikverarbeitungs-Pipeline können andere Stufen implementieren. Ferner können eine oder mehrere der zuvor beschriebenen Stufen aus der Grafikverarbeitungs-Pipeline in einigen Ausführungsformen weggelassen sein (etwa die Geometrie-Schattierungsstufe 440). Andere Arten von Grafikverarbeitungs-Pipelines werden ebenfalls als innerhalb des Schutzbereichs der vorliegenden Offenbarung liegend erachtet. Ferner können beliebige Stufen der Grafikverarbeitungs-Pipeline 400 durch eine oder mehrere spezielle Hardware-Einheiten innerhalb eines Grafikprozessors, etwa der PPU 200 eingerichtet werden. Andere Stufen der Grafikverarbeitungs-Pipeline 400 können durch programmierbare Hardware-Einheiten, etwa den SM 250 und die PPU 200 eingerichtet werden.
  • DAS DYNAMISCHE OBJEKTRAUM-GITTER
  • Wie zuvor in Verbindung mit 1A erläutert ist, wird ein Objektraum-Schattierungsgitter für das Objekt auf der Grundlage von Koordinaten von Dreiecksgrundformen in dem Objektraum definiert. Im Zusammenhang der vorliegenden Beschreibung können Schwerpunktskoordinaten das lokale Koordinatensystem definieren, das in Dreiecksgrundformen eingeschlossen ist, und die Schwerpunktskoordinaten können ferner Punkte des Schattierungsgitters festlegen, so dass das Schattierungsgitter ein Dreiecks-Schattierungsgitter ist.
  • 5A5C zeigen ein Mip-abgebildetes Objektraum-Schattierungsgitter, das für eine Grundform 500 gemäß einer weiteren Ausführungsform definiert ist. 5A zeigt eine Mip-Stufe 510 des Mip-abgebildeten Objektraum-Schattierungsgitters, das für eine Grundform 500 gemäß einer weiteren Ausführungsform definiert ist. Die Dreiecksgrundform 500 ist durch die Vertices bzw. Eckpunkte 501, 502 und 503 definiert, und die Mip-Stufe 510 des Mip-abgebildeten Objektraum-Schattierungsgitters ist die gröbste Mip-Stufe. Im Gegensatz zu einer konventionellen Mip-abgebildeten Texturkarte bzw. Texturzuordnung definieren in einer Ausführungsform nur Eckpunktpositionen jede Stufe des Schattierungsgitters. Anders ausgedrückt, es sind keine Attributdaten, etwa Farbe, mit den Eckpunkten verknüpft. Das Mip-abgebildete Objektraum-Schattierungsgitter ist ein Netzwerk aus Punkten, an denen Attribute berechnet werden können, anstatt ein Array aus Texel bzw. Texturelementen oder Attributwerten. In einer Ausführungsform werden Punkte des Mip-abgebildeten Objektraum-Schattierungsgitters nicht gespeichert und werden stattdessen aus den Grundformen, die Objekte definieren, nach Bedarf erzeugt, um schattierte Abtastungen zu berechnen. In einer derartigen Ausführungsform ist das Mip-abgebildete Objektraum-Schattierungsgitter ein prozedurales Objektraum-Schattierungsgitter.
  • In einer Ausführungsform ist jedem der Eckpunkte 501, 502 und 503 eine Gruppe von Schwerpunktskoordinaten zugeordnet. Jeder der Eckpunkte 501, 502 und 503 ist ferner ein Punkt (d. h. ein Schnittpunkt) in dem Objektraum-Schattierungsgitter, das für die Grundform 500 definiert ist. Das Objektraum-Schattierungsgitter kann verwendet werden, um eine schattierte Abtastung an der Abtastposition 505A zu berechnen. In einer Ausführungsform werden schattierte Werte für die Gitterpunkte an Eckpunkten 501, 502 und 503 berechnet und es wird eine Interpolation verwendet, um die schattierte Abtastung an der Abtastposition 505A zu berechnen. In einer Ausführungsform wird eine Schwerpunktsinterpolation verwendet, um die schattierte Abtastung an der Abtastposition 505A zu berechnen. Die Abtastposition 505A entspricht einer Abtastposition im Bildschirm-Raum, die in den Objektraum transformiert worden ist, der der Grundform 500 zugeordnet ist. Das Objektraum-Schattierungsgitter wird entsprechend einer Schattierungsrate „abgetastet”, die auf der Grundlage einer spezifizierten Schattierungsrate (d. h. die Anzahl an Abtastungen, die für jedes Pixel im Bildschirm-Raum angegeben ist) und den Bildschirm-Raum-Ableitungen für die Objektraumkoordinaten des Eingangsfragments berechnet wird. Anders als die angegebene Schattierungsrate kann die berechnete Schattierungsrate in jeder ursprünglichen Grundform variieren und ist daher eine dynamische Schattierungsrate. Die Grundform 500 ist eine „Stamm-”Grundform, die in Untergrundformen (beispielsweise Dreiecke) unterteilt werden kann, wie in den 5B und 5C gezeigt ist. Die berechnete Schattierungsrate für eine Untergrundform, die zwei oder mehr Untergrundformen umfassen kann, kann ferner ebenfalls innerhalb der Untergrundform variieren. Wichtig dabei ist, dass die berechnete Schattierungsrate ebenfalls unterschiedlich zur Sichtbarkeitsrate sein kann. Die Sichtbarkeitsrate ist die Anzahl an Abtastungen, für die z-Prüfungen während der frühen und/oder späten z-Prüfung ausgeführt werden. In einer Ausführungsform können die Sichtbarkeitsrate und die angegebene Schattierungsrate jeweils festgelegt sein und die berechnete Schattierungsrate kann variieren, so dass die berechnete Schattierungsrate für eine erste Gruppe aus Grundformen größer als die Sichtbarkeitsrate für die erste Gruppe aus Grundformen ist, und die berechnete Schattierungsrate für die zweite Gruppe an Grundformen kleiner oder gleich ist zu der Sichtbarkeitsrate für die zweite Gruppe an Grundformen.
  • In einer Ausführungsform wird das Objektraum-Schattierungsgitter Mip-abgebildet und eine oder mehrere Stufen des Mip-abgebildeten Objektraum-Schattierungsgitters werden entsprechend der berechneten Schattierungsrate abgetastet. Bei der herkömmlichen Mip-Abbildung bzw. Zuordnung werden Texel bzw. Texturelemente bei groben Stufen der Mip-Zuordnung durch rekursives Filtern der Texel bei feineren Stufen berechnet. Daher hängen das bzw. die Texel auf der gröbsten Mip-Stufe von allen Texel auf der feinsten Stufe ab und sind nicht bekannt, bis die Texel-Werte der feinsten Stufe verfügbar sind. Obwohl möglich, ist es unpraktisch, die gleiche Technik zur Berechnung schattierter Werte für die Gitterpunkte eines Mip-abgebildeten Schattierungsgitters zu verwenden. Anstelle die schattierten Werte für jeden Punkt eines Mip-abgebildeten Schattierungsgitters im Voraus zu berechnen, werden die schattierten Werte nach Bedarf (d. h. dynamisch) berechnet, um eine schattierte Abtastung zu erzeugen. In ähnlicher Weise sind die Punkte des Mip-abgebildeten Schattierungsgitters deterministisch und können ebenfalls dynamisch definiert werden.
  • 5B zeigt eine weitere Mip-Stufe 520 des Mip-abgebildeten Schattierungsgitters des Objektraums, das für die Grundform 500 gemäß einer weiteren Ausführungsform definiert ist. In einer Ausführungsform sind die Unterdreiecke im Wesentlichen flächengleich. Weitere Eckpunkte 511, 512 und 513 werden in der Mip-Stufe 520 des Objektraum-Schattierungsgitters bestimmt, um vier Unterdreiecke zu definieren. Jeder der Eckpunkte 501, 502, 503, 511, 512 und 513 ist ferner ein Punkt (d. h. Schnittpunkt) in dem Mip-abgebildeten Objektraum-Schattierungsgitter, das für die Grundform 500 definiert ist. In einer Ausführungsform werden schattierte Werte für die Gitterpunkte an den Eckpunkten 501, 511 und 512 berechnet und es wird eine Interprolation (beispielsweise Schwerpunktsinterpolation) angewendet, um die schattierte Abtastung an der Abtastposition 505B zu berechnen. Die Abtastposition 505B stimmt im Wesentlichen mit der Abtastposition 505A relativ zu den Eckpunkten 501, 502 und 503 überein. In einer Ausführungsform wird eine erste schattierte Abtastung an der Abtastposition 505B unter Anwendung der Mip-Stufe 520 berechnet, und eine zweite schattierte Abtastung wird an der Abtastposition 505A unter Anwendung der Mip-Stufe 510 berechnet. Die erste und die zweite schattierte Abtastung werden dann interpoliert, um die endgültige schattierte Abtastung an der Abtastposition 505B zu berechnen.
  • 5C zeigt eine noch weitere Mip-Stufe 530 des Mip-abgebildeten Schattierungsgitters des Objektraums, das für die Grundform 500 gemäß einer weiteren Ausführungsform definiert ist. Weitere Eckpunkte 521, 522, 523, 531, 532, 533, 540, 545 und 550 sind in der Mip-Stufe 520 des Objektraum-Schattierungsgitters festgelegt. Jeder der Eckpunkte 521, 522, 523, 531, 532, 533, 540, 545 und 550 ist ferner ein Punkt (d. h. Schnittpunkt) in dem Mip-abgebildeten Objektraum-Schattierungsgitter, das für die Grundform 500 definiert ist. In einer Ausführungsform werden schattierte Werte für die Gitterpunkte an den Eckpunkten 522, 531 und 550 berechnet, und es wird eine Interpolation verwendet, um die schattierte Abtastung an der Abtastposition 505C zu berechnen. Die Abtastposition 505C stimmt im Wesentlichen mit den Abtastpositionen 505A und 505B relativ zu den Eckpunkten 501, 502 und 503 überein. In einer Ausführungsform wird eine erste schattierte Abtastung an der Abtastposition 505C unter Anwendung der Mip-Stufe 530 berechnet, und eine zweite schattierte Abtastung wird an der Abtastposition 505B unter Anwendung der Mip-Stufe 520 berechnet. Der erste und der zweite schattierte Wert werden dann interpoliert, um die endgültige schattierte Abtastung an der Abtastposition 505C zu berechnen.
  • In einer Ausführungsform zeigen die 5A5C drei Stufen einer Schwerpunktsunterteilung für die Grundform 500 und das Objektraum-Schattierungsgitter ist ein Schwerpunktssschattierungsgitter. Auf der gröbsten Stufe, die in 5A gezeigt ist, werden schattierte Werte für die Gitterpunkte berechnet, die mit den drei Eckpunkten 501, 502 und 503 der Stammgrundform 500 übereinstimmen. Um jede nachfolgende Stufe mit höherer Auflösung zu erhalten, wird die vorhergehende Stufe im Wesentlichen in kongruente Unterdreiecke unterteilt. Im Gegensatz dazu verarbeitet die Erzeugung einer Mip-abgebildeten Texturkarte bzw. Texturzuordnung (beispielsweise Filter) die Texturabbildungen mit der höchsten Auflösung, um jede nachfolgende Stufe mit niedrigerer Auflösung zu erzeugen. Wie in den 5A, 5B und 5C gezeigt ist, wird die binäre Unterteilung verwendet, um jedes Dreieck auf eine Stufe in 4 Unterdreiecke auf einer feineren Stufe zu unterteilen. Es ist nicht notwendig für Schwerpunktsschattierungsgitter, eine binäre Unterteilung zu verwenden, so dass andere Unterteilungsschemata eingesetzt werden können. Beispielsweise wird in einer weiteren Ausführungsform jedes Dreieck in 9 Unterdreiecke auf einer feineren Stufe unterteilt.
  • Im Gegensatz zu einer Texturkarte bzw. Texturzuordnung ist ein Schwerpunktsschattierungsgitter für eine Grundform vollständig in dem Bereich der Dreiecksgrundform enthalten, wohingegen Texturzuordnungen häufig mehrere Dreiecke überspannen. Ein Schwerpunktsschattierungsgitter wird unter Anwendung von Schwerpunktskoordinaten der Stammgrundform definiert, so dass ein Schwerpunktsschattierungsgitter keine externe Parametrisierung erfordert. Im Gegensatz dazu beruhen Texturzuordnungen auf einer Parametrisierung unter Anwendung von Texturkoordinaten.
  • 5D zeigt ein Objektraum-Schattierungsgitter 555, das für eine schmale Grundform 560 gemäß einer weiteren Ausführungsform definiert ist. Eckpunkte 561, 562, 563 definieren die Grundform 560 und sind Punkte in dem Mip-abgebildeten Objektraum-Schattierungsgitter, das für die Grundform 560 definiert ist. Weitere Eckpunkte 565, 571, 581, 591, 572, 582, 592, 573, 583, 593, 575, 580, 585, 582 und 592 werden in dem Objektraum-Schattierungsgitter 555 bestimmt. Jeder der Eckpunkte 565, 571, 581, 591, 572, 582, 592, 573, 583, 593, 575, 580, 585, 582 und 592 ist ferner ein Punkt (d. h. Schnittpunkt) in dem Objektraum-Schattierungsgitter 555, das für die Grundform 560 definiert ist.
  • Die Verwendung des Objektraum-Schattierungsgitters 555 unterscheidet sich im Vergleich zu dem Mip-abgebildeten Objektraum-Gitter, das in den 5A, 5B und 5C gezeigt ist, da die schattierten Werte nicht an den „virtuellen” Punkten 575, 580, 585, 582 und 592 berechnet werden. Wenn ein schattierter Wert an einem virtuellen Punkt 575, 580, 585, 582 und 592 benötigt wird, werden stattdessen schattierte Werte an benachbarten Punkten berechnet und interpoliert, um einen schattierten Wert an dem jeweiligen virtuellen Punkt zu berechnen. In einer Ausführungsform wird eine lineare Interpolation verwendet, um einen schattierten Wert an einem oder mehreren der virtuellen Punkte 575, 580, 585, 582 und 592 zu berechnen. Beispielsweise kann ein schattierter Wert an dem virtuellen Punkt 585 durch Interpolation schattierter Werte berechnet werden, die an den Punkten 591 und 565 berechnet werden. In ähnlicher Weise kann ein schattierter Wert an dem virtuellen Punkt 575 berechnet werden, indem schattierte Werte, die an den Punkten 571 und 573 berechnet wurden, interpoliert werden. Ein schattierter Wert an der Abtastposition 595 kann berechnet werden, indem schattierte Werte, die an den virtuellen Punkten 575, 585 und 580 berechnet wurden, interpoliert werden.
  • Wieder mit Verweis auf die 5A, 5B und 5C werden die Abtastpositionen 505A, 505B und 505C jeweils innerhalb des Objekt-Schattierungsgitters verwendet, um die schattierten Werte an den Punkten in dem Objektraum-Schattierungsgitter zu interpolieren. Wenn ein Mip-abgebildetes Objektraum-Schattierungsgitter verwendet wird, ist es ferner erforderlich zu ermitteln, welche Stufe bzw. Stufen des Mip-abgebildeten Objektraum-Schattierungsgitters abgetastet werden. In einer Ausführungsform wird die berechnete Schattierungsrate verwendet, um eine oder mehrere Stufen des Mip-abgebildeten Objektraum-Schaltungsgitters zu ermitteln, die abgetastet werden.
  • ABTASTUNG DES OBJEKTRAUM-SCHATTIERUNGSGITTERS
  • Nach der Rastereinteilung ist die Eingabe, die für die Schattierung empfangen wird, ein Pixelfragment des Bildschirm-Raums. Wenn ein quadratisch geformtes Pixel vollständig von einer Grundform eines Objekts abgedeckt ist, ist das Pixelfragment quadratisch geformt. Wenn ein quadratisch geformtes Pixel teilweise von einer Grundform eines Objekts abgedeckt ist, kann das Pixelfragment die Form eines Polygons haben. Das eingespeiste Fragment wird von einem Bildschirm-Raum in einen Objektraum transformiert, um eine eingenommene Fläche des Eingangsfragments im Objektraum zu erzeugen. Auf der Grundlage der angegebenen Schattierungsrate für das Eingangsfragment (beispielsweise Abtastungen pro Pixel) wird die Mip-Stufe des Objektraum-Schattierungsgitters ermittelt, das der eingenommenen Fläche am besten angenähert ist. In einer Ausführungsform werden Bildschirm-Raum-Ableitungen der Schwerpunktskoordinaten des Objektraums des Eingangspixelfragments verwendet, um die Größe eines Unterdreiecks abzuschätzen, dessen Fläche und Zahl der Abtastungen der spezifizierten Schattierungsrate angenähert ist. Anders ausgedrückt, die Bildschirm-Raum-Ableitungen der Schwerpunktskoordinaten der eingenommene Fläche des Pixelfragments im Objektraum werden verwendet, um die berechnete Schattierungsrate zu berechnen.
  • 6A zeigt ein Abtastmuster für ein Pixel 600 gemäß einer Ausführungsform. In einer Ausführungsform umfasst das Abtastmuster für das Pixel 600 vier Subpixel-Abtastungen, die in der Mitte jedes Quadranten angeordnet sind (in 6A als Fadenkreuze gezeichnet). In einer weiteren Ausführungsform kann das Abtastmuster für das Pixel 600 verschoben sein (das heißt, zufällig über das Pixel verteilt sein), um die Bildfehler zu reduzieren. Wie in 6A gezeigt ist, können die verschobenen Abtastpositionen für jedes Pixel durch kleine Kreise gezeigt sein, die von jeweiligen Mittelpunkten des Quadranten verschoben sind.
  • 6B zeigt ein Pixelfragment 602 im Bildschirm-Raum gemäß einer Ausführungsform. In einer Ausführungsform umfasst das Pixelfragment 602 ein einziges Pixel, etwa das Pixel 600 mit vier Subpixel-Abtastpositionen (die als Kreise gezeigt sind). In einer weiteren Ausführungsform umfasst das Pixel Fragment 602 vier Pixel jeweils mit einer einzelnen Subpixel-Abtastposition. Das Pixelfragment 602 ist ein Teil der Grundform 605, die den Sichtbarkeitstest (d. h. frühe z-Prüfung) erfolgreich durchlaufen hat.
  • 6C zeigt eine eingenommene Fläche bzw. einen Flächenabdruck 610 des Pixelfragments 602 im Objektraum gemäß einer Ausführungsform. Das Eingangspixelfragment 602 wird aus dem Bildschirm-Raum transformiert, um die eingenommene Fläche 610 im Objektraum zu erzeugen. In einer Ausführungsform ist die eingenommene Fläche 610 durch Schwerpunktskoordinaten definiert.
  • Die Grundform 605 ist im Objektraum als Grundform 618 gezeigt. Das Objektraum-Schattierungsgitter, das für die Grundform 618 definiert ist, umfasst sechzehn Unterdreiecke. In einer Ausführungsform ist das in 6C gezeigte Objektraum-Schattierungsgitter eine Stufe eines Mip-abgebildeten Objektraum-Schattierungsgitters für die Grundform 618. Um die vier Abtastpositionen der eingenommenen Fläche 610 zu schattieren, sollten schattierte Werte für Punkte 611, 612, 613, 614, 615, 616 und 617 des Objektraum-Schattierungsgitters berechnet werden. In einer Ausführungsform ist jeder der Punkte 611, 612, 613, 614, 615, 616 und 617 durch Schwerpunktskoordinaten definiert. Wie in 6C gezeigt ist, sind die an den Punkten 611 und 614 berechneten schattierten Werte gemeinsam für zwei der schattierten Abtastpositionen, die die eingenommene Fläche 610 festlegen, und der schattierte Wert, der am Punkt 615 berechnet ist, ist gemeinsam für alle vier der schattierten Abtastpositionen, die die eingenommene Fläche 610 festlegen. Die Wiederverwendung schattierter Werte hilft dabei, die Schattierungsberechnung über mehrere Schattierungsanforderungen hinweg zu amortisieren.
  • Bei optimistischer Annahme, dass jeder schattierte Wert typischerweise von 6 Unterdreiecken gemeinsam verwendet wird, kann die Anzahl an Abtastungen für jedes Unterdreiecke auf 1/2 festgelegt werden. Bei gegebener spezifizierter Schattierungsrate des Bildschirm-Raums von R Schattierungsabtastungen pro Pixel wird N berechnet, wobei N die angenäherte Anzahl an Unterteilungen pro Kante ist, so dass die Fläche des umschließenden Unterdreiecks ΔN ungefähr ΔN = 1 / 2·R Daher gibt N die Mip-Stufe des Mip-abgebildeten Objektraum-Schattierungsgitters an, das verwendet werden sollte, um die schattierten Abtastungen für eine eingenommene Fläche zu berechnen.
  • Die zwei nächstliegenden Potenzen von 2 in Bezug zu N können verwendet werden, um zwei Mip-Stufen des Objektraum-Schattierungsgitters zu ermitteln. Es kann eine lineare Interpolation zwischen den beiden Mip-Stufen ermittelt werden, die der eingenommenen Fläche des Eingangspixelfragments entspricht. In einer Ausführungsform kann N unter Anwendung von Ableitungen der Koordinaten der eingenommenen Fläche des Pixelfragments im Objektraum berechnet werden. Die Ableitungen der Schwerpunktskoordinaten im Objektraum eines Pixelfragments F liefern eine Abschätzung der Rate der Änderung des Umfangs einer Stammdreiecksgrundform T in der Nachbarschaft des Pixelfragments. Beispielsweise können Ableitungen der Schwerpunktskoordinaten im Objektraum der eingenommenen Fläche 610 verwendet werden, um die Änderungsrate des Umfangs der Grundform 605 im Objektraum abzuschätzen. Man betrachte dazu ein virtuelles Dreieck Td mit identischen Ableitungen bei F, aber gleichmäßigen Ableitungen über Td hinweg. Wenn {dα, dβ, dγ} die Schwerpunktsableitungen repräsentiert, dann repräsentieren {hA, hB, hC}, wie nachfolgend definiert, die drei Höhen von Td, die in Pixel gemessen sind. {dα, dβ, dγ} = {( dα / dx, dα / dy), ( dβ / dx, dβ / dy), ( dγ / dx, dγ / dy)} {hA, hB, hC} = { 1 / |dα|, 1 / |dβ|, 1 / |dγ|}
  • Die Höhen von Td können verwendet werden, um die Fläche von Td in Pixel Δd abzuschätzen:
    Figure DE102015113240A1_0002
    Δd kann verwendet werden, um die Fläche eines Unterdreiecks nach Nd Unterteilungen ΔN,d Unterteilungen pro Kante abzuschätzen und um seine Abhängigkeit durch die angegebene Schattierungsrate R zu ersetzen:
    Figure DE102015113240A1_0003
  • Somit kann bei gegebenen Δd und R, Nd abgeschätzt werden mit:
    Figure DE102015113240A1_0004
    Das zuvor erhaltene Nd ist nicht notwendigerweise konsistent über die gemeinsame Kante zwischen Dreiecken hinweg und Inkonsistenzen können sichtbare Übergänge entlang den Dreieckskanten erzeugen. Um Bildfehler an Übergängen zu vermeiden, kann eine kantenkonsistente Stufe der Unterteilung in der Nähe von Dreieckskanten hinzugemischt werden. In einer Ausführungsform wird an dem Fragment F eine im Voraus berechnete einfallende Fläche pro Eckpunkt als Mittelwert Δ i / avg interpoliert: Δavg = α·Δ 0 / avg + β·Δ 1 / avg + γ·Δ 2 / avg
  • Teilen Δavg durch die Fläche Δws von T im Welt-Raum liefert eine Fläche Δc, die mit Kanten konsistent ist, und ein entsprechendes Nd in der Nähe von Dreieckskanten. Ein dynamischer Mischfaktor kann verwendet werden, so dass die Größe des Mischgebiets Pblend in Pixel angegeben werden kann.
  • Figure DE102015113240A1_0005
  • Figure DE102015113240A1_0006
  • Zusätzlich zur Ermittelung der zwei nächsten Mip-Abbildungsstufen des Objektraum-Schattierungsgitters unter Verwendung von N müssen die Unterdreiecke, die die Schwerpunktkoordinaten umschließen, die die eingenommene Fläche des Pixelfragments im Objektraum definieren, ermittelt werden, um die schattierten Werte und die schattierten Abtastungen zu berechnen.
  • 6D zeigt zwei nächst liegende Mip-Stufen eines Mip-abgebildeten Objektraumgitters 620, die verwendet werden, um eine schattierte Abtastung für die Abtastposition gemäß einer Ausführungsform zu erzeugen. Auf der Grundlage des Wertes von N, der für die Grundform 605 berechnet wird, werden die Mip-Stufen 612 und 622 des Objektraum-Schattierungsgitters ermittelt und es wird eine lineare Interpolation bestimmt. Die Abtastposition 625 liegt innerhalb eines ersten Unterdreiecks, das durch die Punkte 611, 615 und 617 definiert ist, und innerhalb eines zweiten Unterdreiecks, das durch die Punkte 619, 617 und 613 definiert ist.
  • Bei einer diskretisierten Mip-Stufe N ergibt sich das umschließende Unterdreieck für das Fragment F: {kα, kβ, kγ} = {⌊α·N⌋, ⌊β·N⌋, ⌊γ·N⌋}, {kα, kβ, kγ} bestimmt in eindeutiger Weise ein Unterdreieck. Wenn {kα + kβ + kγ} gerade ist, repräsentiert es ein invertiertes Unterdreieck (das dem Stammdreieck zugewandt ist), ansonsten ist das Unterdreieck entsprechend dem Stammdreieck orientiert.
  • Die Schwerpunktkoordinaten innerhalb des umschließenden Unterdreiecks {αN, βN, γN} können ebenfalls unter Anwendung des Ausdrucks für αN erhalten werden:
    Figure DE102015113240A1_0007
  • 6B zeigt eine erneute Abbildung linearer Interpolationen, um eine der beiden nächstliegenden Mip-Stufen eines Mip-abgebildeten Objektraumgitters gemäß einer Ausführungsform zu verwenden. Wie zuvor erläutert ist, kann eine lineare Interpolation zwischen den beiden nächsten Mip-Stufen bestimmt werden, die der eingenommenen Fläche des Eingangspixelfragments entspricht. In einer Ausführungsform wird, wenn die lineare Interpolation nahe bei 0 oder 1 liegt, die lineare Interpolation erneut abgebildet, so dass nur eine einzige der beiden Mip-Stufen verwendet wird, wodurch die Anzahl an schattierten Werten und schattierten Abtastungen verringert wird, die berechnet werden. Beispielsweise mit Bezug zu 6D kann die schattierte Abtastung für die Abtastposition 625 berechnet werden, indem die schattierten Werte, die für die Punkte 611, 615 und 617 oder für die Punkte 613, 617 und 619 berechnet wurden, interpoliert werden. Wie in 6B gezeigt ist, werden, wenn die lineare Interpolation 0,0–0,3 ist, lediglich Punkte der gröberen Mip-Stufe verwendet (beispielsweise Mip-Stufe 622), und wenn die lineare Interpolation 0,7–1,0 beträgt, werden nur Punkte der feineren Mip-Stufe verwendet (beispielsweise die Mip-Stufe 612).
  • Nachdem die Punkte in dem Gitter, die zur Berechnung der schattierten Abtastungen benötigt werden, ermittelt sind, werden Aufrufe für die Schattierungseinheit an jedem Punkt durchgeführt. In einer Ausführungsform werden schattierte Werte, die an den Punkten des Objektraumgitters berechnet werden, in einem Cache-Speicher oder Speicher gespeichert, so dass schattierten Werte, die bereits berechnet worden sind, nicht erneut berechnet werden. In einer Ausführungsform können Anforderungen aus mehreren Fragmenten zusammengefasst werden, Duplikate können ermittelt und entfernt werden, und Bewertungen der Schattierungseinheit können dann zur Ausführung in einer datenparallelen Weise gestartet werden.
  • Wenn die spezifizierte Schattierungsrate kleiner als die Rate der Sichtbarkeit ist, haben die eingenommenen Flächen der nächstgelegenen Pixelfragmente generell eine signifikante Überlappung. Um redundante Wertungen der Schattierungseinheit für die überlappenden Punkte in dem Objektraumgitter zu vermeiden, kann das Ergebnis der Bewertung der Schattierungseinheit erneut verwendet werden. Wenn die eingenommene Fläche eines Pixelfragments berechnet worden ist, kann die Ausgabe geprüft werden, um zu bestimmen, ob einer der angeforderten schattierten Werte bereits berechnet ist oder aktuell gerade berechnet wird. Für derartige schattierte Werte werden die Bewertungen der Schattierungseinheit nicht gestartet und stattdessen wird die bereits verfügbare Ausgabe verwendet, oder die Ausgabe einer aktuellen Bewertung wird verwendet, wenn die Bewertung abgeschlossen ist. In einer Ausführungsform wird die Wiederverwendung dadurch erreicht, dass ein Cache-Speicher verwendet wird, der zuvor berechnete schattierte Werte enthält und ferner Anforderungen ermittelt, die nicht abgeschlossen sind.
  • Die schattierten Werte, die ausgegeben werden, können auch zwischen Grundformen (Stammgrundformen und/oder Unterdreiecke) gemeinsam benutzt werden. In einer Ausführungsform stimmen, wenn zwei Grundformen eine Kante oder einen Eckpunkt gemeinsam haben, die Punkte der Objektraumgitter für die beiden Grundformen, die auf der(m) gemeinsamen Kante/Eckpunkt liegen, überein. Wenn eine Oberflächen-Schattierungseinheit durch Attribute pro Eckpunkt angesteuert wird, sind Eingaben in die Schattierungseinheit an den gemeinsamen Punkten ebenfalls identisch. In einem derartigen Szenario können die schattierten Werte für die gemeinsamen Punkte zwischen mehreren Grundformen wieder verwendet werden. Eine Wiederverwendung über Grundformen hinweg ist insbesondere vorteilhaft für Szenen mit kleinen Dreiecken, in denen der Anteil an Schattierungsabtastungen, die auf Kanten oder Eckpunkten liegen, hoch ist. In einer Ausführungsform kann eine Vertex-Schattierung für äußerst dichte Gitter verwendet werden.
  • OBJEKTRAUM-SCHATTIERUNG
  • Wenn das Objektraum-Schattierungsgitter ein Schwerpunktsgitter ist, gehören die Punkte, die schattiert werden, immer zu dem gleichen Basisdreieck. Folglich kann eine Bewertung von Attributen an einem Punkt durch Schwerpunktsinterpolation der Vertex-Attribute der Grundform bewerkstelligt werden. Schattierungseinheiten benutzen häufig Ableitungen, um die Abmessung des aktuellen Schattierungselements (beispielsweise Pixel, Pixelgruppe) abzuschätzen, was bei der geeigneten Filterung zweckdienlich ist, um Attribut-Zwischenwerte zu erzeugen. Schattierungssysteme für den Bildschirm-Raum, etwa moderne GPUs, berechnen typischerweise Attribut-Ableitungen unter Anwendung finiter Differenzen über 2×2 Pixel Quadrat-Schattierungselemente. Im Gegensatz dazu ermitteln Objektraum-Schattierungssysteme typischerweise Ableitungen auf der Grundlage der Größe des Objektraum-Schattierungselements, beispielsweise eines Unterdreiecks. Jedoch entsprechen die tatsächlichen Größen von Objektraum-Schattierungselementen für gewöhnlich nicht genau der spezifizierten Schattierungsrate genau, was zu diskontinuierlichen Ableitungen führen kann. Ferner können die Formen eines Pixels und einer Pixel-Vierer-Anordnung im Bildschirm-Raum (Quadrat oder Rechteck) sehr unterschiedlich im Vergleich zu der Form eines Objektraum-Schattierungselements (dreieckig) sein, was zu Fehlanpassungen bei der Ableitung führen kann. Folglich werden in einer Ausführungsform die Objektraum-Ableitungen so eingestellt, dass der spezifizierten Schattierungsrate Rechnung getragen wird. Ableitungen, die auf diese Weise eingestellt werden, sind auch als glatte bzw. stetige Ableitungen bekannt.
  • Zum Schattieren unter Anwendung von Schwerpunktsschattierungsgittern können Ableitungen unter Anwendung finiter Differenzen über Unterdreiecke hinweg in dem Schattierungsgitter berechnet werden. Wenn finite Differenzen verwendet werden, können Ableitungsoperationen an beliebigen Funktionen ausgeführt werden, wozu abhängige Funktionen wie etwa Textur-Abholungen, gehören. In einer Ausführungsform werden schattierte Abtastungen für Punkte in Gruppen von 3 oder 4 berechnet, um sicherzustellen, dass finite Differenzen zur Berechnung der Ableitungen verfügbar sind. Wenn finite Differenzen für Pixel-Vierereinheiten berechnet werden, gehören die finiten Differenzen zu einer Orthonormalbasis. Im Gegensatz dazu gehören finite Differenzen, die für eine Gruppe von Punkten eines Schwerpunktsschattierungsgitters berechnet werden, nicht zu einer Orthonormalbasis. Folglich werden die Ableitungen in einer Orthonormalbasis erneut berechnet, bevor die schattierte Abtastung (beispielsweise Attribut) erzeugt wird.
  • In einer Ausführungsform werden finite Differenzen in einer Orthonormalbasis unter Anwendung der folgenden Technik transformiert. Bei gegebener Funktion f(x, y) mit Werten f0, f1 und f2 an den drei Eckpunkten v0 = (x0, y0), v1 = (x1, y1) und v2 = (x2, y2) eines Unterdreiecks können die partiellen Ableitungen ( ∂f / ∂x, ∂f / ∂y) für eine Orthonormalbasis berechnet werden.
  • 6F zeigt finite Differenzen für ein Unterdreieck, das transformiert wird, um Ableitungen in einer Orthonormalbasis gemäß einer Ausführungsform zu berechnen. Das Unterdreieck 650 ist durch die drei Eckpunkte v0, v1 und v2 definiert.
  • Unter Annahme, dass f in dem Gebiet linear ist: f1 = f0 + ∂f / ∂x·(x1 – x0) + ∂f / ∂y·(y1 – y0) f2 = f0 + ∂f / ∂x·(x2 – x0) + ∂f / ∂y·(y2 – y0) Das Gleichungssystem kann ausgedrückt werden als Af' = B, wobei:
    Figure DE102015113240A1_0008
    Das System ausgleichen kann für nicht degenerierte Dreiecke unter Anwendung der Cramer'schen Regel gelöst werden:
    Figure DE102015113240A1_0009
    Für Ableitungen im Objektraum wird A erzeugt unter der Annahme (x1 – x0) = 1 und (y1 – y0) = 0, und es wird (x2 – x0) und (y2 – y0) gesetzt unter Anwendung des Verhältnisses der Längen und des Winkels zwischen (v2 – v0) und (v2 – v0).
  • Um konsistente Ableitungen bereitzustellen, die einer guten Annäherung an die spezifizierte Schattierungsrate entsprechen, kann optional der Bildschirm-Raum als die Orthonormalbasis verwendet werden, wenn die Ableitungen erneut berechnet werden. Die Verwendung des Bildschirm-Raums hilft dabei, genaue Bildschirm-Raum-Ableitungen zu erhalten, wobei dies aber zulasten von zusätzlichen Berechnungen geht.
  • Wenn Bildschirm-Raum-Ableitungen berechnet werden, wird A so aufgebaut, dass es den tatsächlichen Bildschirm-Raum-Positionen der Eckpunkte des Unterdreiecks entspricht. Seien diese Positionen S0, S1 und S2.
    Figure DE102015113240A1_0010
    Die Therme von A sind Bildschirm-Raumkoordinaten, die durch Transformation von Eckpunkten des lokalen Dreiecks abgeschätzt werden. Anders ausgedrückt,
    Figure DE102015113240A1_0011
    wobei V i / x, V i / y, V i / z die Augen-Raum-Koordinaten des lokalen Dreiecks sind, H die Höhe des Betrachtungspunkts in Pixel ist und θ das vertikales Betrachtungsfeld ist. Einsetzen von H und θ in A ergibt:
    Figure DE102015113240A1_0012
    Dann ist δi wie folgt definiert:
    Figure DE102015113240A1_0013
    wobei V par / i Eckpunkte des Stammdreiecks im Augen-Raum sind, und Δi = (V par / i – V par / 0) . V par / i wird dann in A eingesetzt. Der Kürze halber ist nur A00 für einige nächste Schritte gezeigt. Andere Einträge von A sind von ähnlicher Form.
    Figure DE102015113240A1_0014
    Näherungsweise Verwendung von V 0 / z~(V 0 / z + δ i / z) im Nenner:
    Figure DE102015113240A1_0015
    Somit ergibt sich A nunmehr:
    Figure DE102015113240A1_0016
  • |A| wird berechnet als:
    Figure DE102015113240A1_0017
    In dem obigen Ausdruck sind alle drei Determinanten Konstante pro Dreieck, so dass die Determinanten nur einmal pro Dreieck berechnet werden müssen. Somit kann 1 / |A| einfacher berechnet werden, als Eckpunkte des Unterdreiecks vom Objektraum in den Bildschirm-Raum zu transformieren. Die Berechnung von Ableitungen auf diese Weise amortisiert den Rechenaufwand, der zum Berechnen einer einzelnen Ableitung über das Dreieck hinweg erforderlich ist.
  • 7A zeigt eine Blockansicht 700 zur Ermittlung von Punkten in einem Objektraum-Schattierungsgitter, an denen schattierte Abtastungen gemäß einer Ausführungsform berechnet werden. Ein Eingangsfragment, das durch Eckpunkte im Bildschirm-Raum definiert ist, wird von einer Transformationseinheit 705 empfangen. Das Eingangsfragment hat zumindest die Größe eines einzelnen Sub-Pixels und kann größer sein als ein oder mehrere Pixel. Das Eingangsfragment ist ein Teil eines Objekts, das eine oder mehrere Grundformen enthält. Wenn eine frühe z-Prüfung ausgeführt wird, entspricht der Teil des Objekts einem sichtbaren Teil des Objekts. Die Transformationseinheit 705 transformiert die Eckpunkte vom Bildschirm-Raum in den Objektraum, um eine transformierte Punktgruppe, die dem Eingangsfragment entspricht, zu erzeugen. Die transformierten Eckpunkte definieren eine eingenommene Fläche bzw. einen Flächenabdruck des Eingangsfragments im Objektraum.
  • Eine Gitterdefinitionseinheit 710 empfängt die transformierten Eckpunktgruppe und definiert ein Objektraum-Schattierungsgitter für jede Grundform, die von der eingenommenen Fläche abgedeckt wird. In einer Ausführungsform wird ein separates grundformspezifisches Objektraum-Schattierungsgitter für jede Grundform definiert. In einer weiteren Ausführungsform wird ein Objektraum-Schattierungsgitter für zwei oder mehr Grundformen definiert, die von der eingenommenen Fläche abgedeckt werden. Das eine oder die mehreren Objektraum-Schattierungsgitter für eine Grundform oder für die Grundformen können nacheinander in Unterdreiecke unterteilt werden, um ein Mip-abgebildetes Objektraum-Schattierungsgitter für die jeweilige Grundform oder die jeweiligen Grundformen zu erzeugen. Die Gitterdefinitionseinheit 710 ermittelt mindestens eine Mip-Stufe, die auf der Grundlage der eingenommenen Fläche abzutasten ist. In einer Ausführungsform ermittelt die Gitterdefinitionseinheit 710 mindestens eine Mip-Stufe mit Unterdreiecken, die der Fläche der eingenommenen Fläche bzw. des Flächenabdrucks am nächsten kommen. In einer Ausführungsform berechnet die Gitterdefinitionseinheit 710 den Wert N und ermittelt die mindestens eine Gitter-Mip-Stufe auf der Grundlage von N. Wenn zwei oder mehr Gitter-Mip-Stufen ermittelt werden, berechnet in einer Ausführungsform die Gitterdefinitionseinheit 710 auch die lineare Interpolation, die zur Berechnung einer schattierten Abtastung erforderlich ist, auf der Grundlage der schattierten Werte, die zwei oder mehr Gitter-Mip-Stufen entsprechen.
  • Eine Gitterpunktauswahleinheit 715 empfängt die mindestens eine Gitter-Mip-Stufe und ermittelt ein oder mehrere Unterdreiecke, die die Abtastpositionen schneiden, wobei die Abtastpositionen die Eckpunkte sind, die die eingenommene Fläche definieren. Die Gitterpunktauswahleinheit 715 wählt Punkte des Objektraum-Schattierungsgitters aus, für die schattierte Werte berechnet werden. Die ausgewählten Punkte sind „Abtastpunkte”, die Eckpunkten eines Unterdreiecks entsprechen, das eine Abtastposition umschließt.
  • Nachdem die Punkte des Objektraum-Schattierungsgitters, an denen schattierte Werte berechnet werden, ermittelt sind, kann ein schattierter Wert für jeden Punkt berechnet werden. Eine Parallel-Schattierungseinheit 720 empfängt die Abtastpunkte und startet eine Schattierungseinheit, um einen schattierten Wert an jedem Abtastpunkt zu berechnen. Die berechneten schattierten Werte umfassen ein oder mehrere schattierte Attribute, die dem Eingangsfragment zugeordnet sind. In einer Ausführungsform werden die schattierten Werte so berechnet, wie dies in Verbindung mit 7B beschrieben ist.
  • Die schattierten Werte können dann durch eine Abtastfiltereinheit 725 auf der Grundlage der linearen Interpolation, die mit N Beziehung steht, und der Abtastposition relativ zu den Abtastpunkten (d. h. Eckpunkte des umschließenden Unterdreiecks) gefiltert werden. In einer Ausführungsform wird eine schattierte Abtastung unter Verwendung einer Schwerpunktsinterpolation innerhalb einer ersten Mip-Stufe und einer zweiten Mip-Stufe berechnet, um eine erste und eine zweite schattierte Abtastung zu erzeugen. Die erste und die zweite schattierte Abtastung werden dann auf der Grundlage der linearen Interpolation, die zu N gehört, interpoliert, um die endgültige schattierte Abtastung zu erzeugen.
  • 7B zeigt ein Flussdiagramm eines Verfahrens 750 zur Berechnung schattierter Attribute pro Abtastung für Pixel gemäß einer Ausführungsform. Die Ausführung der Verfahrensschritte in beliebiger Reihenfolge wird als innerhalb des Zusammenhangs dieser Offenbarung liegend erachtet. Einer oder mehrere der Schritte, die in 7B gezeigt sind, können von der Parallel-Schattierungseinheit 720 ausgeführt werden, die in 7A gezeigt ist. Im Schritt 765 werden die finiten Differenzen für ein Unterdreieck, das durch Punkte eines Objektraum-Schattierungsgitters definiert ist, berechnet. In einer Ausführungsform kann die Verarbeitungs-Pipeline die Grafikverarbeitungs-Pipeline 400 sein, und die Fragmentschattierungsstufe 470 kann durch einen SM 250 eingerichtet sein, der ausgebildet ist, Anweisungen des Schattierungsprogramms auszuführen. Im Schritt 765 werden die finiten Differenzen von einem Objektraum in eine Orthonormalbasis transformiert. In einer Ausführungsform ist die Orthonormalbasis der Bildschirm-Raum. Im Schritt 770 werden für jeden Punkt schattierte Attribute berechnet. Im Schritt 775 werden die schattierten Attribute gefiltert, um eine endgültige schattierte Abtastung innerhalb des Unterdreiecks zu erzeugen. In einer Ausführungsform wird der Schritt 775 durch die Abtastfiltereinheit 725, die in 7A gezeigt ist, ausgeführt.
  • Da die Schattierung in dem Objektraum ausgeführt wird, können die zeitlichen Bildfehler reduziert werden, wodurch Bilder erzeugt werden, die von höherer Qualität erscheinen, selbst wenn die Schattierungsrate verringert ist. Ferner kann die Schattierungsrate über ein Objekt hinweg innerhalb einer Grundform variieren. Die Schattierungsrate kann ferner unabhängig von der Sichtbarkeitsrate variieren. Da schließlich das Objektraum-Schattierungsgitter im Objektraum liegt, ändert sich das Schattierungsgitter nicht notwendigerweise bei Bewegung der Kamera. Stattdessen kann das Schattierungsgitter aktualisiert werden, wenn sich die Objektgeometrie ändert.
  • 8 ist ein anschauliches System 800, in welchem diverse Architekturen und/oder Funktionen der diversen vorhergehenden Ausführungsformen eingerichtet werden können. Wie gezeigt, ist ein System 800 bereitgestellt mit mindestens einem zentralen Prozessor 801, der mit einem Kommunikationsbus 802 verbunden ist. Der Kommunikationsbus 802 kann unter Anwendung eines beliebigen geeigneten Protokolls eingerichtet werden, etwa PCI (periphere Komponenten-Verbindung), PCI-Express, AGP (beschleunigter Graphikport), HyperTransport, oder andere(s) Bus- oder Punkt-Zu-Punkt-Kommunikationsprotokoll(e). Das System 800 weist ferner einen Hauptspeicher 804 auf. Eine Steuerlogik (Software) und Daten sind in dem Hauptspeicher 804 gespeichert, der die Form eines Speichers mit wahlfreiem Zugriff (RAM) annehmen kann.
  • Das System 800 umfasst ferner Eingabeeinrichtungen 812, einen Grafik-Prozessor 806 und eine Anzeige 808, d. h. eine konventionelle CRT (Kathodenstrahlröhre), eine LCD-(Flüssigkristallanzeige), eine LED(lichtemittierende Diode)-Anzeige, eine Plasmaanzeige oder dergleichen. Eine Anwendereingabe kann von den Eingabeeinrichtungen 812, beispielsweise Tastatur, Maus, berührungsempfindliche Auflage, Mikrofon und dergleichen empfangen werden. In einer Ausführungsform kann der Grafik-Prozessor 806 mehrere Schattierungs-Module, ein Rastermodul, usw. aufweisen. Jedes der vorhergehenden Module kann in einer einzigen Halbleiterplattform angeordnet sein, um eine grafische Verarbeitungseinheit (GPU) zu bilden.
  • In der vorliegenden Beschreibung bezeichnet eine einzelne Halbleiterplattform eine einzelne halbleiterbasierte integrierte Schaltung oder einen Chip. Es sollte beachtet werden, dass der Begriff einzelne Halbleiterplattform auch Mehr-Chip-Module mit erhöhter Verbindungsfähigkeit bezeichnen kann, die eine chipinterne Funktionsweise simulieren, und wesentliche Verbesserungen ergeben gegenüber einer Implementierung unter Verwendung einer konventionellen zentralen Recheneinheit (CPU) und eines Busses. Selbstverständlich können die diversen Module auch separat angeordnet sein oder in diversen Kombinationen von Halbleiterplattformen entsprechend den Wünschen des Anwenders vorgesehen sein.
  • Das System 800 kann ferner einen sekundären Speicher 810 aufweisen. Der sekundäre Speicher 810 umfasst beispielsweise ein Festplattenlaufwerk und/oder ein abnehmbares Speicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Kompaktdiskettenlaufwerk, ein Laufwerk für eine digitale Vielseitigkeitsdiskette (DVD), eine Aufzeichnungseinrichtung, ein Flash-Speicher mit universellem seriellen Bus (USB) repräsentiert. Das abnehmbare Speicherlaufwerk liest aus einer nicht-stationären Speichereinheit in gut bekannter Weise und/oder speichert in dieser.
  • Computerprogramme oder Computer-Steuerlogikalgorithmen können in dem Hauptspeicher 804 und/oder dem sekundären Speicher 810 gespeichert sein. Derartige Computerprogramme versetzen bei Ausführung das System 800 in der Lage, diverse Funktionen auszuführen. Der Speicher 804, der Speicher 810 und/oder ein beliebiger anderer Speicher sind mögliche Beispiele von computerlesbaren Medien.
  • In einer Ausführungsform können die Architektur und/oder Funktion der diversen vorhergehenden Figuren im Zusammenhang des zentralen Prozessors 801, des grafischen Prozessors 806, einer integrierten Schaltung (nicht gezeigt), die zumindest einen Teil der Eigenschaften sowohl des zentralen Prozessors 801 als auch des grafischen Prozessors 806 hat, eines Chipsatzes (d. h. einer Gruppe von integrierten Schaltungen, die gestaltet sind, als eine Einheit zur Ausführung zugehöriger Funktionen, usw. zu arbeiten und verkauft zu werden), und/oder einer anderen integrierten Schaltung für diesen Zweck eingerichtet sein.
  • Des Weiteren können die Architektur und/oder Funktionen der diversen vorhergehenden Figuren im Zusammenhang eines allgemeinen Computersystems, eines Leiterplattensystems, eines Systems einer Spielekonsole, die für Unterhaltungszwecke gestaltet ist, im Rahmen eines anwendungsspezifischen Systems und/oder eines anderen gewünschten Systems eingerichtet werden. Beispielsweise kann das System 800 die Form eines Tisch-Computers, eines tragbaren Computers, eines Server-Rechners, eines Arbeitplatzrechners, von Spielekonsolen, eines eingebetteten Systems und/oder einer beliebigen anderen Art an Logik annehmen. Darüber hinaus gilt, dass das System 800 die Form diverser anderer Geräte annehmen kann, wozu, ohne einschränkend zu sein, eine Einrichtung als persönlicher digitaler Assistent (PDA), eine Einrichtung als Mobiltelefon, ein Fernsehgerät, usw. gehören.
  • Obwohl ferner nicht gezeigt, kann das System 800 mit einem Netzwerk (beispielsweise einem Telekommunikationsnetzwerk, einem Nahbereichsnetzwerk (LAN), einem drahtlosen Netzwerk, einem Weitbereichsnetzwerk (WAN), etwa das Internet, einem Gerät-zu-Gerät-Netzwerk, einem Kabelnetzwerk oder dergleichen) für Kommunikationszwecke verbunden sein.
  • Obwohl diverse Ausführungsformen zuvor beschrieben sind, sollte beachtet werden, dass diese lediglich als Beispiel und nicht als einschränkend angegeben sind. Daher sollten die Breite und der Schutzbereich einer bevorzugten Ausführungsform nicht durch eine der zuvor beschriebenen anschaulichen Ausführungsformen beschränkt sein, sondern sollten lediglich entsprechend den folgenden Patentansprüchen und ihren Äquivalenten definiert sein.
  • 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
    • IEEE 754-2008-Standard [0054]

Claims (18)

  1. Ein Verfahren mit: Empfangen eines Objekts, das durch Dreiecksgrundformen in einem dreidimensionalen (3D) Raum definiert ist, der spezifisch für das Objekt ist; Definieren eines Objektraum-Schattierungsgitters für eine erste Dreiecksgrundform der Dreiecksgrundformen auf der Grundlage von Koordinaten der ersten Dreiecksgrundform in dem 3D-Raum; und Ausführen eines Schattierungsprogramms durch eine Verarbeitungs-Pipeline, um einen schattierten Wert an einem Punkt in dem Objektraum-Schattierungsgitter für die erste Dreiecksgrundform zu berechnen.
  2. Das Verfahren nach Anspruch 1, wobei die Koordinaten Koordinaten eines ersten Eckpunkts, eines zweiten Eckpunkts und eines dritten Eckpunkts, die die erste Dreiecksgrundform definieren, umfassen.
  3. Das Verfahren nach Anspruch 2, wobei der Punkt dem ersten Eckpunkt entspricht.
  4. Das Verfahren nach Anspruch 2, das ferner umfasst: Ausführen des Schattierungsprogramms durch die Verarbeitungs-Pipeline, um einen zweiten schattierten Wert an einem zweiten Punkt, der dem zweiten Eckpunkt entspricht, zu berechnen; und Ausführen des Schattierungsprogramms durch die Verarbeitungs-Pipeline, um einen dritten schattierten Wert an einem dritten Punkt, der dem dritten Eckpunkt entspricht, zu berechnen.
  5. Das Verfahren nach Anspruch 4, das ferner Berechnen einer schattierten Abtastung an einer Position innerhalb des ersten Dreiecks durch Interpolation des ersten, des zweiten und des dritten schattierten Werts umfasst.
  6. Das Verfahren nach Anspruch 5, wobei die Interpolation eine Schwerpunktsinterpolation umfasst.
  7. Das Verfahren nach Anspruch 1, wobei das Objektraum-Schattierungsgitter eine weitere Stufe der ersten Dreiecksgrundform umfasst, wobei die weitere Stufe vier Unterdreiecke umfasst, die durch Halbieren jeder Kante der ersten Dreiecksgrundform erzeugt werden.
  8. Das Verfahren nach Anspruch 1, wobei das Objektraum-Schattierungsgitter derart Mip-abgebildet wird, dass jede Mip-Stufe höher Auflösung weitere Unterdreiecke innerhalb der ersten Dreiecksgrundform definiert.
  9. Das Verfahren nach Anspruch 8, das ferner umfasst: Transformieren eines Pixels im Bildschirm-Raum in den 3D-Raum, der für das Objekt spezifisch ist, um einen Flächenabdruck zu erzeugen; und Ermitteln einer ersten Mip-Stufe des Mip-abgebildeten Objektraum-Schattierungsgitters, die ein Unterdreieck mit einer Fläche umfasst, die der Fläche des Flächenabdrucks am besten angenähert ist.
  10. Das Verfahren nach Anspruch 9, das ferner Ermitteln einer zweiten Mip-Stufe des Mip-abgebildeten Objektraum-Schattierungsgitters umfasst, die ein Unterdreiecke mit einer Fläche enthält, die der Fläche des Flächenabdrucks am nächsten angenähert ist.
  11. Das Verfahren nach Anspruch 10, das ferner Ausführung durch eine Verarbeitungs-Pipeline eines Schattierungsprogramms umfasst, um einen zweiten schattierten Wert an einem zweiten Punkt in dem Objektraum-Schattierungsgitter für das Unterdreiecke zu berechnen.
  12. Das Verfahren nach Anspruch 11, wobei das Unterdreieck durch den Punkt, den zweiten Punkt in dem Objektraum-Schattierungsgitter und einen dritten Punkt in dem Objektraum-Schattierungsgitter definiert wird.
  13. Das Verfahren nach Anspruch 12, das ferner umfasst: Ausführen eines Schattierungsprogramms durch eine Verarbeitungs-Pipeline, um einen dritten schattierten Wert an dem dritten Punkt für das Unterdreieck zu berechnen; Berechnen einer schattierten Abtastung an einer Abtastposition innerhalb des Unterdreiecks auf der Grundlage des schattierten Werts, des zweiten schattierten Werts und des dritten schattierten Werts.
  14. Das Verfahren nach Anspruch 1, das ferner umfasst: Transformieren eines Pixels im Bildschirm-Raum in den 3D-Raum, der für das Objekt spezifisch ist, um einen Flächenabdruck zu erzeugen, der durch mindestens eine erste Abtastposition definiert ist; und Ermitteln, dass ein Unterdreieck innerhalb des ersten Dreiecks die erste Abtastposition umschließt.
  15. Das Verfahren nach Anspruch 14, das ferner Ausführung eines Schattierungsprogramms durch eine Verarbeitungs-Pipeline umfasst, um einen zweiten schattierten Wert an einem zweiten Punkt in dem Objektraum-Schattierungsgitter zu berechnen, der einem ersten Eckpunkt des Unterdreiecks entspricht.
  16. Das Verfahren nach Anspruch 1, wobei die Koordinaten Schwerpunktskoordinaten sind.
  17. Ein System mit: einer Verarbeitungs-Pipeline, die ausgebildet ist, die Operationen eines der Ansprüche 1–16 auszuführen.
  18. Ein computerlesbares Speichermedium, das Befehle speichert, die, wenn sie von einem Prozessor ausgeführt werden, den Prozessor veranlassen, die Schritte eines der Ansprüche 1–16 auszuführen.
DE102015113240.0A 2014-08-12 2015-08-11 System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters Pending DE102015113240A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201462036552P 2014-08-12 2014-08-12
US62/036,552 2014-08-12
US14/645,327 US9754407B2 (en) 2014-08-12 2015-03-11 System, method, and computer program product for shading using a dynamic object-space grid
US14/645,327 2015-03-11

Publications (1)

Publication Number Publication Date
DE102015113240A1 true DE102015113240A1 (de) 2016-02-18

Family

ID=55235116

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015113240.0A Pending DE102015113240A1 (de) 2014-08-12 2015-08-11 System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters

Country Status (2)

Country Link
US (1) US9754407B2 (de)
DE (1) DE102015113240A1 (de)

Families Citing this family (57)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9747718B2 (en) 2014-08-12 2017-08-29 Nvidia Corporation System, method, and computer program product for performing object-space shading
KR20160063081A (ko) * 2014-11-26 2016-06-03 삼성전자주식회사 선택적 테셀레이션 방법 및 장치
JP6910130B2 (ja) * 2015-11-06 2021-07-28 三星電子株式会社Samsung Electronics Co.,Ltd. 3dレンダリング方法及び3dレンダリング装置
US10192280B2 (en) * 2016-04-08 2019-01-29 Qualcomm Incorporated Per-vertex variable rate shading
US10535186B2 (en) * 2016-08-30 2020-01-14 Intel Corporation Multi-resolution deferred shading using texel shaders in computing environments
US11379941B2 (en) * 2016-09-22 2022-07-05 Advanced Micro Devices, Inc. Primitive shader
US10417813B2 (en) 2016-12-05 2019-09-17 Nvidia Corporation System and method for generating temporally stable hashed values
US10650566B2 (en) * 2017-02-15 2020-05-12 Microsoft Technology Licensing, Llc Multiple shader processes in graphics processing
US10424097B2 (en) 2017-04-01 2019-09-24 Intel Corporation Predictive viewport renderer and foveated color compressor
US10152822B2 (en) 2017-04-01 2018-12-11 Intel Corporation Motion biased foveated renderer
US10489915B2 (en) 2017-04-01 2019-11-26 Intel Corporation Decouple multi-layer render fequency
US10242494B2 (en) 2017-04-01 2019-03-26 Intel Corporation Conditional shader for graphics
US10089230B1 (en) 2017-04-01 2018-10-02 Intel Corporation Resource-specific flushes and invalidations of cache and memory fabric structures
US10395623B2 (en) 2017-04-01 2019-08-27 Intel Corporation Handling surface level coherency without reliance on fencing
US10157493B2 (en) 2017-04-01 2018-12-18 Intel Corporation Adaptive multisampling based on vertex attributes
US10572258B2 (en) 2017-04-01 2020-02-25 Intel Corporation Transitionary pre-emption for virtual reality related contexts
US10453241B2 (en) 2017-04-01 2019-10-22 Intel Corporation Multi-resolution image plane rendering within an improved graphics processor microarchitecture
US10591971B2 (en) 2017-04-01 2020-03-17 Intel Corporation Adaptive multi-resolution for graphics
US10628907B2 (en) 2017-04-01 2020-04-21 Intel Corporation Multi-resolution smoothing
US10572966B2 (en) 2017-04-01 2020-02-25 Intel Corporation Write out stage generated bounding volumes
US10706612B2 (en) 2017-04-01 2020-07-07 Intel Corporation Tile-based immediate mode rendering with early hierarchical-z
US10223773B2 (en) 2017-04-01 2019-03-05 Intel Corporation On demand MSAA resolve during lens correction and/or other post-processing phases
US10204393B2 (en) 2017-04-10 2019-02-12 Intel Corporation Pre-pass surface analysis to achieve adaptive anti-aliasing modes
US10235735B2 (en) 2017-04-10 2019-03-19 Intel Corporation Graphics processor with tiled compute kernels
US10460415B2 (en) 2017-04-10 2019-10-29 Intel Corporation Contextual configuration adjuster for graphics
US10725929B2 (en) 2017-04-10 2020-07-28 Intel Corporation Graphics memory extended with nonvolatile memory
US10204394B2 (en) 2017-04-10 2019-02-12 Intel Corporation Multi-frame renderer
US10319064B2 (en) 2017-04-10 2019-06-11 Intel Corporation Graphics anti-aliasing resolve with stencil mask
US11106274B2 (en) 2017-04-10 2021-08-31 Intel Corporation Adjusting graphics rendering based on facial expression
US10109078B1 (en) 2017-04-10 2018-10-23 Intel Corporation Controlling coarse pixel size from a stencil buffer
US11030713B2 (en) 2017-04-10 2021-06-08 Intel Corporation Extended local memory including compressed on-chip vertex data
US10235794B2 (en) 2017-04-10 2019-03-19 Intel Corporation Multi-sample stereo renderer
US10152632B2 (en) 2017-04-10 2018-12-11 Intel Corporation Dynamic brightness and resolution control in virtual environments
US10497340B2 (en) 2017-04-10 2019-12-03 Intel Corporation Beam scanning image processing within an improved graphics processor microarchitecture
US10373365B2 (en) 2017-04-10 2019-08-06 Intel Corporation Topology shader technology
US10846918B2 (en) 2017-04-17 2020-11-24 Intel Corporation Stereoscopic rendering with compression
US10192351B2 (en) 2017-04-17 2019-01-29 Intel Corporation Anti-aliasing adaptive shader with pixel tile coverage raster rule system, apparatus and method
US10347039B2 (en) 2017-04-17 2019-07-09 Intel Corporation Physically based shading via fixed-functionality shader libraries
US10672175B2 (en) 2017-04-17 2020-06-02 Intel Corporation Order independent asynchronous compute and streaming for graphics
US10430147B2 (en) 2017-04-17 2019-10-01 Intel Corporation Collaborative multi-user virtual reality
US10401954B2 (en) 2017-04-17 2019-09-03 Intel Corporation Sensory enhanced augmented reality and virtual reality device
US10719902B2 (en) 2017-04-17 2020-07-21 Intel Corporation Thread serialization, distributed parallel programming, and runtime extensions of parallel computing platform
US10467796B2 (en) 2017-04-17 2019-11-05 Intel Corporation Graphics system with additional context
US10521876B2 (en) 2017-04-17 2019-12-31 Intel Corporation Deferred geometry rasterization technology
US10290141B2 (en) * 2017-04-17 2019-05-14 Intel Corporation Cloud based distributed single game calculation of shared computational work for multiple cloud gaming client devices
US10896657B2 (en) 2017-04-17 2021-01-19 Intel Corporation Graphics with adaptive temporal adjustments
US10242486B2 (en) 2017-04-17 2019-03-26 Intel Corporation Augmented reality and virtual reality feedback enhancement system, apparatus and method
US10452552B2 (en) 2017-04-17 2019-10-22 Intel Corporation Memory-based dependency tracking and cache pre-fetch hardware for multi-resolution shading
US10643374B2 (en) 2017-04-24 2020-05-05 Intel Corporation Positional only shading pipeline (POSH) geometry data processing with coarse Z buffer
US10347357B2 (en) 2017-04-24 2019-07-09 Intel Corporation Post-packaging environment recovery of graphics on-die memory
US10242496B2 (en) 2017-04-24 2019-03-26 Intel Corporation Adaptive sub-patches system, apparatus and method
US10251011B2 (en) 2017-04-24 2019-04-02 Intel Corporation Augmented reality virtual reality ray tracing sensory enhancement system, apparatus and method
US10402933B2 (en) 2017-04-24 2019-09-03 Intel Corporation Adaptive smart grid-client device computation distribution with grid guide optimization
US10728492B2 (en) 2017-04-24 2020-07-28 Intel Corporation Synergistic temporal anti-aliasing and coarse pixel shading technology
US10109039B1 (en) 2017-04-24 2018-10-23 Intel Corporation Display engine surface blending and adaptive texel to pixel ratio sample rate system, apparatus and method
US10388063B2 (en) 2017-06-30 2019-08-20 Microsoft Technology Licensing, Llc Variable rate shading based on temporal reprojection
CN107527377B (zh) * 2017-08-25 2020-10-16 扆冰蕾 一种基于移动平台的三维虚拟地球悬空中文字符渲染方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6940505B1 (en) 2002-05-20 2005-09-06 Matrox Electronic Systems Ltd. Dynamic tessellation of a base mesh
US6879328B2 (en) * 2003-03-03 2005-04-12 Sun Microsystems, Inc. Support of multi-layer transparency
US9741154B2 (en) 2012-11-21 2017-08-22 Intel Corporation Recording the results of visibility tests at the input geometry object granularity
US10074213B2 (en) 2013-09-12 2018-09-11 Intel Corporation Adaptive multi-frequency shading
US9569883B2 (en) 2013-12-12 2017-02-14 Intel Corporation Decoupled shading pipeline
US9747718B2 (en) 2014-08-12 2017-08-29 Nvidia Corporation System, method, and computer program product for performing object-space shading

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
IEEE 754-2008-Standard

Also Published As

Publication number Publication date
US20160048999A1 (en) 2016-02-18
US9754407B2 (en) 2017-09-05

Similar Documents

Publication Publication Date Title
DE102015113240A1 (de) System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters
DE102013114090B4 (de) Konservative Rasterung von Primitiven unter Benutzung eines Fehler-Terms
DE112014002469B4 (de) System und Verfahren zur Erzeugung von Bildern für eine augennaheLichtfeldanzeige
DE102017108096A1 (de) System, verfahren und computerprogrammprodukt zum rendern bei variablen abtastraten mittels projektiver geometrischer verzerrung
DE102015113797B4 (de) Relative Kodierung für eine blockbasierte Begrenzungsvolumenhierarchie
DE102013114373A1 (de) Konsistente Vertex-Einrastung für Rendering mit variabler Auflösung
DE102013222685B4 (de) System, Verfahren und Computer-Programm-Produkt zum Abtasten einer hierarchischen Tiefe-Karte
DE102018132468A1 (de) Multi-gpu-frame-rendern
DE102018113845A1 (de) Systeme und Verfahren zum Trainieren von neuronalen Netzwerken mit dünnbesetzten Daten
DE102018114286A1 (de) Durchführen einer Traversierungs-Stack-Komprimierung
US8044955B1 (en) Dynamic tessellation spreading for resolution-independent GPU anti-aliasing and rendering
DE102013017639B4 (de) Zwischenspeicherung von adaptiv dimensionierten Cache-Kacheln in einem vereinheitlichten L2-Cache-Speicher mit Oberflächenkomprimierung
DE102017124573A1 (de) Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung
DE102016109905A1 (de) Stückweise lineare unregelmäßige Rasterisierung
DE102015115232A1 (de) Verbessertes Anti-Aliasing durch räumliches und/oder zeitliches Variieren von Sample-Mustern
DE112018004343T5 (de) Mehrraum-rendering mit konfigurierbaren transformationsparametern
DE102018125472B4 (de) Grafikprozessor, der Abtastungs-basiertes Rendering durchführt, und Verfahren zum Betreiben desselben
DE102015107869A1 (de) Vergabe von Primitiven an Primitiv-Blöcke
DE102016103854A1 (de) Graphikverarbeitung mit direktionalen Darstellungen der Beleuchtung an Sondenpositionen innerhalb einer Szene
DE102013020613A1 (de) Umgehung der Pixel-Schattierung für die grafische Bilderzeugung mit geringer Leistung
DE102015113927B4 (de) Graphikverarbeitungseinheit zum Einstellen eines Detailierungsgrads, Verfahren zum Betreiben derselben und Vorrichtungen mit derselben
DE102010048486A1 (de) Bildverarbeitungstechniken
DE102013020810A1 (de) Effiziente Super-Abtastung mit Schattierungs-Strängen pro Pixel
DE102017109472A1 (de) Stereo-mehrfach-projektion implementiert unter verwendung einer graphikverarbeitungs-pipeline
DE102018101030A1 (de) Filterung von Bilddaten unter Verwendung eines neutralen Netzwerks

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE

R016 Response to examination communication