DE112013005255T5 - Bedarfsweise Geometrie- und Beschleunigungsstrukturerzeugung - Google Patents

Bedarfsweise Geometrie- und Beschleunigungsstrukturerzeugung Download PDF

Info

Publication number
DE112013005255T5
DE112013005255T5 DE112013005255.5T DE112013005255T DE112013005255T5 DE 112013005255 T5 DE112013005255 T5 DE 112013005255T5 DE 112013005255 T DE112013005255 T DE 112013005255T DE 112013005255 T5 DE112013005255 T5 DE 112013005255T5
Authority
DE
Germany
Prior art keywords
geometry
rendering
scene
final
data
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
DE112013005255.5T
Other languages
English (en)
Inventor
John W. Howson
Luke T. Peterson
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.)
Imagination Technologies Ltd
Original Assignee
Imagination Technologies Ltd
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 Imagination Technologies Ltd filed Critical Imagination Technologies Ltd
Publication of DE112013005255T5 publication Critical patent/DE112013005255T5/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/10Geometric effects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/5055Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering software capabilities, i.e. software resources associated or available to the machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/08Volume rendering

Abstract

Systeme und Verfahren zur Geometrieverarbeitung zur Rasterung und Strahlenverfolgungsprozesse stellen eine Vorverarbeitung der Quellengeometrie bereit, wie zum Beispiel Tesselation oder andere prozedurale Änderungen der Quellengeometrie, um eine Endgeometrie zu erzeugen, auf der eine Wiedergabe basiert. Eine Beschleunigungsstruktur (oder ein Teil davon) zur Verwendung während der Strahlverfolgung wird auf der Grundlage der Endgeometrie definiert. Nur grobkörnige Elemente der Beschleunigungsstruktur können erzeugt oder zurückgehalten werden, und eine feinkörnige Struktur in einem speziellen grobkörnigen Element kann erzeugt werden in Reaktion auf eine Sammlung von Strahlen, die bereit sind zur Durchquerung in dem grobkörnigen Element. Eine Endgeometrie kann erneut erzeugt werden in Reaktion auf eine Anforderung von einer Rasterungsengine und aus Strahlschnitteinheiten, die eine derartige Geometrie zum Schnitttest mit Primitiven benötigen. Geometrie bei verschiedenen Auflösungen kann erzeugt werden, um auf Anforderungen aus verschiedenen Wiedergabekomponenten zu antworten.

Description

  • HINTERGRUND
  • Gebiet:
  • In einem Aspekt betrifft das Folgende Wiedergabesysteme, die im 3-D-Raum definierte Geometrieeingaben benutzen.
  • Verwandte Technik:
  • Wiedergabe von Bildern (als eine beispielhafte Wiedergabeausgabe) von einer 3-D-Szenenbeschreibung kann unter Verwendung verschiedener Ansätze bewirkt werden. Ein Ansatz benutzt Rasterisierungsverfahren, in denen Grundelemente aus 3-D-Koordinaten auf einen 2-D-Bildschirmraum abgebildet werden, um eine sichtbare Oberfläche zu bestimmen, die dann strukturiert und schattiert werden kann und ein weiterer Ansatz ist die Verwendung von Strahlverfolgung, die das Verfolgen von Strahlen durch den 3-D-Raum umfasst. Strahlverfolgung kann Effekte wie Reflexionen und Brechungen besser modellieren und kann hochkomplizierte und physikalisch genaue Bilder erzeugen.
  • Rasterisierung sowie Strahlverfolgung benutzten beide Geometriedaten als Eingabe zum Definieren von Objekten, die sich in der 3-D-Szene befinden. Geometriedaten definieren das Ausmaß von Oberflächen in der Szene, aber beispielsweise nicht ihre letztendliche Färbung und Struktur. Detaillierte Geometrie kann jedoch bedeutsame Fortschritte für realistische und angenehme Computergrafikerfahrungen ergeben. Zwischen Detail in einem Objekt und einer zum Speichern der das Objekt darstellenden Geometriedaten erforderlichen Speichermenge kann ein Kompromiss bestehen.
  • KURZE BESCHREIBUNG
  • Ein Aspekt betrifft ein maschinenimplementiertes Verfahren zur Verwendung bei 3-D-Wiedergabe. Das Verfahren umfasst Zugreifen auf in einer 3-D-Szene befindliche Geometrie beschreibende Geometriedaten, aus denen eine Wiedergabe zu erzeugen ist, wobei die Daten Geometriesteuerpunkte und Verfahrensänderungen beschreiben, die an den Geometriesteuerpunkten durchgeführt werden können, um Endgeometrie zu erzeugen, auf der die Wiedergabe beruhen wird. Auch umfasst das Verfahren Erzeugen unter Verwendung der Endgeometrie von Geometriegrößendaten, die eine Verbindung zwischen einem in der 3-D-Szene definierten Volumen und einer Auswahl der Geometriesteuerpunkte herstellen, die nach etwaiger Verfahrensabänderung Endgeometrie erzeugen, die jeweils innerhalb dieses Volumens liegt.
  • Ein solches Verfahren kann ferner ein Definieren von in der 3-D-Szene zu verfolgenden Strahlen durch Identifizieren eines Volumens in dem 3-D-Raum umfassen, in dem eine Teilmenge der Strahlen auf Kreuzung zu prüfen ist und unter Verwendung der Geometriegrößendaten zum Identifizieren von Geometriesteuerpunkten, die Endgeometrie in dem identifizierten Volumen in dem 3-D-Raum erzeugen. Dann umfasst das Verfahren ferner ein Ausführen von Verfahrensänderungen für diese identifizierten Geometriesteuerpunkte zum Erzeugen von Endgeometrie in dem identifizierten Volumen und dann Prüfen der Endgeometrie auf Kreuzung mit der Teilmenge der Strahlen.
  • Das Verfahren kann ferner Erzeugen einer Beschleunigungsstruktur umfassend jeweilige Teile der 3-D-Szene begrenzende Elemente und Verwenden der Beschleunigungsstruktur zum Identifizieren jeweiliger Teilmengen der auf die Kreuzung mit verschiedenen Strahlen zu prüfenden Endgeometrie umfassen. Das Verfahren kann ferner Verwenden von Hinweisdaten zum Definieren der Volumen in der 3-D-Szene umfassen, auf die in den Geometriegrößendaten Bezug genommen wird. Das Verfahren kann ferner ein Zuordnen von Verfahrensänderungen zu Geometriegrößendaten umfassen, die zum Erzeugen von Endgeometrie in einem Volumen der 3-D-Szene erforderlich sind, auf die sich die Geometriegrößendaten beziehen.
  • Auch kann das Verfahren ferner Herstellen einer Wiedergabe unter Verwendung eines Rasterisierungsteilsystems sowie eines Strahlverfolgungsteilsystems umfassen, die jeweils Anforderungen nach Teilen von Endgeometrie stellen und in Reaktion auf die Anforderungen die Endgeometrie durch Durchführen der Verfahrensänderungen erzeugen, die mit den mit Volumen der die angeforderten Teile der Endgeometrie begrenzenden 3-D-Szene verbundenen Geometriegrößendaten verbunden sind.
  • Auch kann das Verfahren ferner Erzeugen von Endgeometrie mit einer Detailstufe umfassen, die davon abhängig ist, ob die Anforderung von dem Strahlverfolgungsteilsystem oder dem Rasterisierungsteilsystem kam.
  • Auch kann das Verfahren ferner Erzeugen sowohl einer abgeschlossenen Beschleunigungsstruktur innerhalb eines Teils der 3-D-Szene als auch von Endgeometrie innerhalb dieses Teils der 3-D als Reaktion auf eine Anforderung von dem Strahlverfolgungsteilsystem umfassen.
  • Auch kann das Verfahren ferner Erzeugen einer groben Beschleunigungsstruktur mit Blattelementen und Verwenden von Blattelementen der groben Beschleunigungsstruktur als die Geometriegrößendaten umfassen.
  • Auch kann das Verfahren ferner Sammeln von gegen Elemente der groben Beschleunigungsstruktur zu verfolgenden Strahlen und Durchqueren von gesammelten Strahlen gegen ein bestimmtes Element der groben Beschleunigungsstruktur durch dynamisches Erzeugen einer abgeschlossenen Beschleunigungsstruktur innerhalb dieses bestimmten Elements der groben Beschleunigungsstruktur vor Planen von Traversaloperationen für die gesammelten Strahlen umfassen.
  • Auch kann das Verfahren ferner Erzeugen von Endgeometrie innerhalb von Teilen der abgeschlossenen Beschleunigungsstruktur in Reaktion auf eine Planeranzeige umfassen.
  • Auch kann das Verfahren ferner ein Durchführen des Zugreifens auf und Erzeugen in einem Vorwegdurchlauf über Quellengeometriedaten umfassen, wobei die Quellengeometriedaten Scheiteldaten und zwei oder mehr Sätze von Scheitel-Verbindbarkeitsdaten umfassen.
  • Die Verfahrensänderungen, die an den Geometriesteuerpunkten durchgeführt werden können, können zum Erzeugen abgeschlossener Geometrie zur Strahlverfolgung zu benutzende Verfahrensabänderungen und zum Erzeugen abgeschlossener Geometrie für Rasterisierung zu benutzende Verfahrensänderungen umfassen.
  • Auch können Aspekte ermöglichen, dass das Erzeugen der Geometriegrößendaten Erzeugen eines Hinweises umfasst, der einen Betrag zu erwartender Geometrieerweiterung bei Erzeugung der Endgeometrie für das in der 3-D-Szene definierte Volumen anzeigt, das mit diesem Teil der Geometriegrößendaten verbunden ist.
  • Verfahren können das Zugreifen durch Zugreifen auf einen Hinweis implementieren, der mit einem Steuerpunkt verbunden ist, der eine Bindung mit einem Betrag an Geometrie anzeigt, der sich ergeben kann bei Durchführung von Verfahrensänderung unter Verwendung dieses Steuerpunkts zum Erzeugen der Endgeometrie.
  • Ein weiterer Aspekt bietet ein Verfahren von Geometrieverarbeitung für 3-D-Wiedergabe. Das Verfahren umfasst Erzeugen von in einer 3-D-Szene befindlichen geometrischen Grundelementen aus Quellengeometriedaten und Definieren eines Satzes von Kachelobjektlisten. Jede Kachelobjektkachel enthält Daten, die anzeigen, welche Quellengeometrie aus dem Satz von Quellengeometrie geometrische Grundelemente ergibt, die innerhalb einer Grenze einer jeweiligen Kachel von Pixeln eines 2-D-Bildes liegen. Auch umfasst das Verfahren Erzeugen einer Beschleunigungsstruktur umfassend einen Graphen von Elementen, der jeweils ein jeweiliges Volumen in der 3-D-Szene definiert und Wiedergeben des 2-D-Bildes aus der Szene durch Verwenden der Kachelobjektlisten zum Identifizieren einer sichtbaren Oberfläche an jedem Pixel des 2-D-Bildes und Verfolgen von Strahlen in der 3-D-Szene unter Verwenden der Beschleunigungsstruktur aus den identifizierten sichtbaren Oberflächen zum Identifizieren eines durch jeden der etwaigen Strahlen geschnittenen Grundelements und Erzeugen von Informationen, die zu einer Endschattierung für die sichtbare Oberfläche an jedem Pixel beitragen.
  • Ein weiterer Aspekt bietet ein Verfahren von 3-D-Geometrieverarbeitung zur Grafikwiedergabe. Das Verfahren umfasst ein Definieren eines jeweiligen Satzes von an Teilen der Quellengeometrie durchzuführenden Änderungsprozessen zum Erzeugen von in jeweiligen Teilen einer 3-D-Szene befindlicher Endgeometrie und Erzeugen eines jeweiligen Elements einer Beschleunigungsstruktur, das jeden der Teile der 3-D-Szene begrenzt und Zuordnen zu dem Element. Der jeweilige Satz von Änderungsprozessen wird durchgeführt, um Endgeometrie in diesem Element zu erzeugen. Auch umfasst das Verfahren Definieren eines Satzes von Kachelobjektlisten. Jede Kachelobjektliste identifiziert Quellengeometrie und einen jeweiligen Satz von an der identifizierten Quellengeometrie durchzuführenden Änderungsprozessen zum Erzeugen von Endgeometrie innerhalb einer Kachel von Pixeln in einem aus der 3-D-Szene wiederzugebenden 2-D-Bild und Wiedergaben des 2-D-Bildes durch Identifizieren sichtbarer Oberflächen von Pixeln innerhalb des 2-D-Bildes auf kachelweiser Grundlage. Das Wiedergeben umfasst Identifizieren von Quellengeometrie aus der Kachelobjektliste für jede Kachel und Durchführen des Satzes von Änderungsprozessen an der Quellengeometrie zum Erzeugen von Endgeometrie. Eine sichtbare Oberfläche jedes Pixels in dieser Kachel wird basierend auf der erzeugten Endgeometrie identifiziert, und zum Vollenden der Wiedergabe für eine Gruppe der Pixel werden Strahlen aus der sichtbaren Oberfläche für die Pixel abgegeben und in der 3-D-Szene überquert. Die Strahlen werden in der 3-D-Szene überquert.
  • Ein weiterer Aspekt bietet ein Verfahren von 3-D-Geometrieverarbeitung zur Grafikwiedergabe. Das Verfahren umfasst Erzeugen von Endgeometrie aus Quellengeometrie durch Anwenden eines oder mehrerer Geometrieänderungsprozesse an die Quellengeometrie, wobei die Erzeugung der Endgeometrie auf eine in einer 3-D-Szene befindliche Teilmenge von Endgeometrie begrenzt ist, aus der eine 2-D-Wiedergabe getätigt wird; und Steuern von Caching bestimmter Teile der erzeugten Endgeometrie basierend auf für die bestimmten Teile der erzeugten Endgeometrie durch einen oder mehrere Verbraucher derselben angezeigtem Bedarf.
  • Ein weiterer Aspekt bietet ein Verfahren zur 3-D-Geometrieverarbeitung zur Grafikwiedergabe umfassend ein Erzeugen von Endgeometrie aus Quellengeometrie durch Anwenden eines oder mehrerer Geometrieänderungsprozesse auf die Quellengeometrie, wobei das Erzeugen durch eine Mehrzahl von diskreten Produktionen gekennzeichnet ist, wobei jeweiliges Erzeugen von Endgeometrie auf eine Teilmenge von in einer 3-D-Szene befindlicher Endgeometrie begrenzt ist; und Planen der Mehrzahl diskreter Produktionen der Endgeometrie durch Sammeln von Anforderungen für bestimmte Teilmengen von Endgeometrie in Gruppen und basierend auf einem Planungskriterium und relativem Ordnen der Mehrzahl diskreter Produktionen gemäß den Planungskriterien.
  • Ein weiterer Aspekt bietet ein Verfahren zur 3-D-Geometrieverarbeitung zur Grafikwiedergabe umfassend ein Erzeugen von Endgeometrie aus Quellengeometrie durch Anwenden eines oder mehrerer Geometrieänderungsprozesse auf die Quellengeometrie, wobei das Erzeugen gekennzeichnet ist durch eine Mehrzahl diskreter Produktionen, die jeweils Endgeometrie begrenzt auf eine Teilmenge von in einer 3-D-Szene befindlicher Endgeometrie erzeugen, und Planen der Mehrzahl diskreter Produktionen der Endgeometrie durch Sammeln von Anforderungen bestimmter Teilmengen von Endgeometrie in Gruppen und basierend auf einem Planungskriterium und relativem Ordnen der Mehrzahl diskreter Produktionen gemäß den Planungskriterien.
  • Jeder dieser Aspekte kann in einem Rechensystem implementiert werden. Ein solches Rechensystem kann programmierbare Elemente umfassen, die programmiert sein können zum Implementieren von Geometrieänderungsprozessen, Steuerprozessen, Schattierungsverarbeitung einschließlich von Schattierungsprozessen zum Schattieren sichtbarer Oberflächen bestimmt aus Rasterisierungs- und aus Schattierungsstrahlkreuzungen. Das Rechensystem kann feste oder begrenzte Funktionselemente wie beispielsweise feste oder begrenzte Funktionselemente für Strahlverfolgungsoperationen umfassen, wie beispielsweise ein Durchqueren von Strahlen durch eine Beschleunigungsstruktur oder Prüfen von Strahlen auf Kreuzungen mit geometrischen Grundelementen. Aspekte der Offenbarung implementierende Systeme können sowohl Rasterisierungs- als auch Strahlverfolgungsteilsysteme umfassen. Diese verschiedenen Teilsysteme können auf gemeinsamer Hardware mit unterschiedlicher Software implementiert sein. Andere Unterstützungshardware kann in solchen Systemen bereitgestellt sein, einschließlich von Strukturabtastung und -vermischung. Solche Systeme können einen oder mehrere Speicher zum Speichern von Quellengeometrie und Cache(s) zum Speichern abgeschlossener Geometrie umfassen. Diese Speicher können Teil einer Speicherhierarchie sein. Solche Systeme können Teil einer tragbaren Vorrichtung wie beispielsweise eines Tablets oder Smartphones, eines Laptop- oder Desktop-Computers sein, oder eingebettet sein, wie beispielsweise in einer Vorrichtung wie beispielsweise einem Fernseher oder einem Gerät eingebettet sein.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt Komponenten eines beispielhaften Systems für bedarfsweise Geometrieverarbeitung;
  • 2A–C zeigen Aspekte eines beispielhaften Verfahrens für Bedarfsgeometrie in einem System, das sowohl Rasterisierung als auch Strahlverfolgung durchführt;
  • 3 zeigt eine beispielhafte Implementierung, durch die Quellengeometriedaten durch eine API übermittelt werden können, und die Quellengeometriedaten Hinweise enthalten können, die volumetrische Grenzen von Endgeometrie anzeigen, oder die benutzt werden können, diese abzuleiten, die sich aus einer bestimmten Menge oder einem bestimmten Element von Quellengeometriedaten ergeben werden.
  • 4 zeigt einen Ansichtskegelstumpf und eine darin befindliche Kachel;
  • 56 zeigen ein Beispiel einer Bezier-Segmentfläche, die eine durch ebene Segmente definierte Schale aufweist;
  • 7 zeigt ein beispielhaftes Verfahren zum Definieren einer Beschleunigungsstruktur basierend auf tesselierte Geometrie betreffenden Informationen wie beispielsweise Abstimmen einer Stufe von Grobheit in einer Beschleunigungsstruktur, die zum Unterteilen einer 3-D-Szene in verschiedene Teile benutzt wird zum Zweck der bedarfsweisen Erstellung von Endgeometrie dieser unterschiedlichen Teile;
  • 8 zeigt ein beispielhaftes Verfahren von Vielfachauflösung bei Geometrieerzeugung;
  • 9 zeigt Speicherung von Quellengeometriedaten für Vielfachauflösungsgeometrieerzeugung;
  • 10 zeigt ein beispielhaftes Verfahren zum Planen von Geometrie- und/oder Beschleunigungsstrukturerstellungsaufgaben;
  • 11 zeigt ein Beispiel von Daten, die beim Planen von Geometrie- und/oder Beschleunigungsstrukturerstellungsaufgaben benutzt werden können;
  • 12 zeigt ein Beispiel von Strahltraversalzustand darstellenden Daten;
  • 13 zeigt eine beispielhafte Modularstruktur von Funktionselementen;
  • 14 zeigt ein beispielhaftes Blockschaltbild von Systemelementen, die zum Ausführen der Funktionselemente der 13 benutzt werden können;
  • 15 zeigt ein Beispiel einer vektorisierten Ausführungseinheit, die Teil der Systemelemente der 14 sein kann.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Techniken zum Verringern einer zum Darstellen einer Definition der Oberfläche eines Objekts erforderlichen Speichermenge umfassen ein Angeben von Oberflächen von Objekten als Segmente, die Steuerpunkte aufweisen, die zum Erzeugen von Scheiteln von Grundelementen benutzt werden können. Zusätzlich können Scheitel von Grundelementen als Eingabe in Tesselation und in Geometrieschattierer oder Verschiebungsmaschinen benutzt werden, die eine Anzahl von Grundelementen durch Zerschneiden eines größeren Grundelements in kleinere verstärken können oder sonstwie Geometrie verformen, so dass ein Ausmaß an Geometrie nach diesen weiteren Geometrieoperationen sich von einer ursprünglichen Größe unterscheidet.
  • In einer unbeschränkten Speicherressourcenumgebung könnte es annehmbar sein, Endgeometrie einfach für eine gesamte 3-D-Szene herzustellen und sie in einem schnellen Direktzugriffsspeicher zu speichern. In einer Rechenumgebung, in der schnelle Speicherressourcen beschränkt sind, könnte es jedoch unmöglich oder unerwünscht sein, genug Speicher zum Speichern solcher Daten zuzuteilen.
  • Folgendes betrifft Ansätze zum Verringern einer zum Speichern von Geometrie erforderlichen Speicherausstattung zur Wiedergabe von Bildern einer gegebenen Komplexität. Unten offenbarte Aspekte betreffen sowohl Rasterisierung als auch Spurverfolgungsansätze zur Wiedergabe. Solche Ansätze können auch anderen Situationen angepasst sein, in denen komplexe 3-D-Geometrie zur Verwendung in einer speicherbeschränkten Umgebung benötigt sein könnte. Speicherbeschränkt bedeutet keine bestimmte Speicherbeschränkung, sondern ist stattdessen auf die Komplexität der zur Verwendung ersuchten Geometrie bezogen. Als solches ist eine Speicherbeschränkung eine Entwurfsüberlegung in einer Gesamtplattform. Wenn die Speicherausstattung zum Verarbeiten von Geometrie einer gegebenen Komplexität verringert werden kann, dann können die Materialkosten für eine Vorrichtung durch Aufnehmen von weniger Speicher verringert werden.
  • In einem Aspekt führt eine Ausführung der Offenbarung einen Vorweg-Durchlauf durch, der Informationen sammelt, Informationen erzeugt oder Informationen sowohl sammelt als auch erzeugt, die definieren, wie ein Satz von Eingangsgeometriedaten einen Satz von Geometriedaten ergibt, der bei Szenenwiedergabe benutzt wird. Zum Beispiel kann in einem Ansatz die Quellen-Szenengeometrie einen Geometriestrang durchlaufen, der Umsetzen von Segmenten in eine Menge von Grundelementen, Tesselieren dieser Grundelemente in weitere Grundelemente, Durchführen von Verschiebungsabbildung und Betreiben von Geometrieschattierern mit diesen Daten umfassen kann. Dieser Vorweg-Durchlauf kann vor Beginn der Szenenwiedergabe durchgeführt werden, oder kann zum ersten Mal durchgeführt werden, dass eine gegebene Szene zur Wiedergabe benutzt wird.
  • Eine Ausgabe dieses Vorweg-Durchlaufs ist eine Beschreibung davon, wo die Endgeometrie besteht. Diese Beschreibung kann entsprechend der Art oder Arten von durchzuführender Wiedergabe veränderlich sein. Beispielsweise können im Zusammenhang mit einem kachelbasierenden Wiedergabesystem solche Informationen eine Beschreibung davon enthalten, welche Ursprungselemente von Geometrie letztendlich ein Grundelement oder anderen Teil von Geometrie erzeugen, der innerhalb der Grenzen jeder Schirm-Raum-Kachel liegt. Im Zusammenhang mit Strahlverfolgung können solche Informationen eine Menge von begrenzenden Kästen oder eine grobe Beschleunigungsstruktur umfassen, die Begrenzungsvolumen identifiziert, die als Geometrieerweiterungspunkte im 3-D-Raum funktionieren. Es kann eine Zuordnung zwischen jedem ursprünglichen Grundelement und jedem Begrenzungsvolumen bestehen, das einen Teil von Endgeometrie enthält, die sich aus diesem ursprünglichen Grundelement ergibt. Verschiedene speziellere Beispiele werden unten geboten.
  • Es steht eine große Mehrzahl von Ansätzen zum Angeben von 3-D-Szenengeometrie zur Verfügung. Der Einfachheit halber bietet die Offenbarung Beispiele von Implementierungen, die mit einem Flächensegment beginnen, das zum Definieren von Scheiteln benutzt werden kann, die durch Tesselation verstärkt oder verschoben werden können, oder durch programmierbare Geometrieschattierung betrieben werden können. Zusätzlich wird ein Ansatz für Bedarfsgeometrie im Zusammenhang mit TBDR (Tile Based Deferred Rendering – kachelbasierende aufgeschobene Wiedergabe) offenbart, zusätzlich zu einem Ansatz für Strahlverfolgungswiedergabe.
  • Als erstes besteht die Mehrzahl von Grundelementen aus tesselierten Grundelementen erzeugt durch Tesselieren eines Segments von Oberflächendaten. Man wird jedoch erkennen, dass Ausführungen nicht auf diese Ausführungsform begrenzt sind und gleicherweise mit durch andere Mittel erzeugten tesselierten Grundelementen oder mit nichttesselierten Grundelementen benutzt werden können.
  • Geometrieverarbeitung
  • 1 zeigt eine schematische Darstellung eines Grafikstrangs zum Erzeugen und Schattieren eines Computer-Grafikbildes in einem kachelbasierenden Wiedergabesystem, das sowohl Tesselation als auch Strahlverfolgung tesselierter Geometrie unterstützt.
  • Geometriedaten 25 definieren Objekte im 3-D-Raum zur Verwendung bei Wiedergabe. Geometriedaten 25 können Beschreibungen von Oberflächen höherer Ordnung wie beispielsweise Segmente (z. B. Bezier-Segmente), Maschengitter von Grundelementen definiert durch Scheitel und Verbindbarkeitsdaten oder sonstige Weisen zum Angeben von Geometrie umfassen. Geometriedaten 25 werden einer geometrischen Verarbeitungseinheit 61 zugeführt, die Geometriedaten bearbeiten kann und Grundelemente aus den Objektdaten ableiten oder sonstwie eine Angabe von Geometrie erzeugen kann, die für die Durchführung der Geometrieverarbeitung benutzt werden können. Geometriedaten 25 können in einem oder mehreren Formaten wie über eine API (Application Programming Interface – Anwendungsprogrammierschnittstelle) während eines Wiedergabeaufbauvorgangs vorkommen. Wenn beispielsweise die durch das Wiedergabesystem durchzuführenden Strahlverfolgungs- und Rasterisierungsverfahren dreieckige Grundelemente verbrauchen, dann kann die Geometrieverarbeitungseinheit 61 Oberflächenbeschreibungen höherer Ordnung eingeben und ein Maschengitter dreieckiger Grundelemente ausgeben.
  • In einem Beispiel können Geometriedaten 25 zur Verarbeitung übermittelt (z. B. gestreamt) werden. In einem Beispiel können Segmente von Geometrie einem Scheitelschattierer 27 zugeführt werden, der wiederum schattierte Scheiteldaten für einen Mantelschattierer 29 bereitstellen kann. Scheitelschattierer 27 kann beispielsweise programmatisch Steuerpunkte von Segmenten verlegen (z. B. eine Kombination eines oder mehrerer von Umsetzung, Drehung oder Skalierung) oder anfängliche Scheitelbeleuchtung oder beides oder sonstige Arten von programmatischen Operationen an diesen Steuerpunkten durchführen. Diese Steuerpunkte können für Einheiten bereitgestellt werden, die tesselationsbezogene Funktionen durchführen.
  • Tesselation umfasst ein Aufbrechen eines Modells geringen Details, zum Beispiel einer Oberfläche höherer Ordnung, die als ein ”Segment” bezeichnet werden kann, in eine Mehrzahl von tesselierten Grundelementen. Ein ”Segment” ist typischerweise eine Funktion einer Polynomgleichung, die einen Satz von Steuerpunkten definiert, die die Form einer Kurve hinsichtlich der Variablen ”t” (für eine Kurve in zwei Dimensionen) oder Bereichskoordinaten ”u, v” (für eine Kurve in drei Dimensionen) beschreiben. Ein Beispiel eines in Computergrafik benutzten Segments ist ein Bezier-Segment, aber es bestehen andere, wie der Fachmann erkennen wird. Gegenwärtig werden flache Segmente gewöhnlich benutzt, zum Beispiel dreieckige Segmente, die in mehrere Grundelemente aufgespaltet sind, die dann durch eine Funktion und/oder in Abhängigkeit von einer Verschiebungshöhe-Abbildung zum Erzeugen einer Mehrzahl tesselierter Grundelemente verschoben werden. Tesselation ist ein Beispiel eines Ansatzes zum programmatischen Ableiten einer Mehrzahl von Grundelementen aus einer Beschreibung einer Oberfläche. Ein Segment ist eine durch ein parametrisches Verhältnis (z. B. für 3-D, uv-Koordinaten) definierte Oberfläche. Punkte auf der Oberfläche können mit den parametrischen Koordinaten definiert werden. Wie der Fachmann weiß, kann Tesselation von Segmenten von Oberflächendaten in einem Grafikstrang durch eine Anzahl von Anwendungsprogrammierschnittstellen (API – Application Programming Interfaces), beispielsweise Direct 3D11 API von Microsoft, unterstützt werden. Direct 3D11 API von Microsoft unterstützt Verschiebungsabbildung, wodurch die tesselierten Grundelemente sich an einer versetzten Stelle von der Oberfläche des Segments befinden können.
  • Programmierbare Scheitelschattierung, so wie sie auf Segmente oder einzelne Grundelemente angewandt werden kann, kann zum Erzeugen abgeänderter Grundelemente gemäß einer Funktionsbeschreibung benutzt werden. Wo zum Beispiel programmierbare Scheitelschattierung bei Scheitelschattierung 27 eingesetzt wird, können die Ausgaben dieser Scheitelschattierung tesseliert sein. Als Beispiel kann eine Mehrzahl abgeänderter Grundelemente oder Segmente aus Eingangsgeometrie erzeugt werden, wo jedes der abgeänderten Grundelemente oder Segmente an einer versetzten Stelle von einer Stelle von Quellengeometrie ist, aus der es abgeleitet wurde. Jedes dieser abgeänderten Elemente von Geometrie kann schrittweise erzeugt werden. Zum Beispiel kann ein erstes erzeugtes Grundelement einer Stelle des ursprünglichen Grundelements am nächsten sein und jedes der nachfolgend erzeugten Grundelemente kann fortschrittlich weiter von der Stelle des Eingabe-Grundelements liegen. Ein weiteres Beispiel ist eine Defokussierungsunschärfeanwendung, wo eine Mehrzahl von abgeänderten Grundelementen mit geringen Versetzungen von einem Eingabe-Grundelement erzeugt werden können, ohne sich unbedingt in zunehmenden Entfernungen von dem Eingabe-Grundelement zu befinden. Im Allgemeinen können jedoch abgeänderte Grundelemente in jeder Ordnung oder Reihenfolge einschließlich einer willkürlichen Reihenfolge erzeugt werden.
  • Vom Mantelschattierer 29 können Tesselationsfaktoren für Ränder eines gegebenen Segments berechnet werden und auch die umgeformten Steuerpunkte weiter abgeändert werden. Vom Mantelschattierer 29 wird Bereichstesselation 31 und Verbindbarkeitstesselation 33 ausgegeben. Bei Bereichstesselation wird ein Segment in eine Anzahl ”Bereichs-”Punkte genannter bekannter Punkte basierend auf den Tesselationsfaktoren unterteilt. Verbindbarkeitstesselation 33 bestimmt, wie die Bereichspunkte kombiniert oder verbunden werden, um tesselierte Grundelemente zu erzeugen. Diese Funktionsmodule können gemäß einem genormten Tesselationsansatz wie beispielsweise DX11 fungieren. Diese Bereichspunkte werden an einen Bereichsschattierer 35 weitergeleitet, der diese Daten zusammen mit durch den Mantelschattierer gemäß einem programmierbaren Geometrieschattierer 37 erzeugten Steuerpunkten benutzt. Der Schattierer 37 kann weitere programmierbare Schattierungsoperationen an Geometrie durchführen und im Scheitel-Cache 41 zu speichernde Scheitel erzeugen. Im Scheitel-Cache 41 gespeicherte Scheitel können als Grundlage zum Erzeugen von bei Rasterisierung (z. B. kachelbasierende Rasterisierung) und bei Strahlverfolgungsoperationen zu benutzenden Daten dienen.
  • Hinsichtlich Vorbereitungen zum Durchführen von kachelbasierender Rasterisierung wie in 1 gezeigt werden die Scheitel aus Scheitel-Cache 41 für eine Clip-/Ausleseeinheit 43 bereitgestellt, die Geometrie entfernt, die sich nicht im Rahmen von Sichtbarkeit für ein wiedergegebenes 2-D-Bild befindet (z. B. außerhalb des Schirms liegt oder nach hinten weist). Übrige Geometrie wird zu einem 2-D-Koordinatensystem für das 2-D-Bild durch die Projektionseinheit 45 projiziert.
  • Die projizierte Geometrie wird durch eine Kachelungseinheit 47 gekachelt (eine Kachel ist ein Gebiet von Pixeln wie beispielsweise ein rechteckiges Gebiet von Pixeln). Die Kachelungseinheit gibt Informationen aus, die identifizieren, welche Geometrie wenigstens teilweise innerhalb der Grenzen jeder Kachel liegt. Diese Informationen können die Form einer Kennung für eine Kachel und einer Liste von Geometrie annehmen, die wenigstens teilweise innerhalb dieser Kachel liegt. Im Zusammenhang mit der gegenwärtigen Offenbarung kann die gekachelte Geometrie tesselierte Geometrie umfassen. Wie oben erläutert, ist tesselierte Geometrie Geometrie, die aus Quellengeometrie abgeleitet wurde. Im Zusammenhang mit der vorliegenden Offenbarung können die eine Kachel und eine Liste von Geometrie kennzeichnenden Informationen Kennzeichnungsinformationen für Quellengeometrie umfassen; diese Informationen können eine ”Objektliste” für eine bestimmte Kachel genannt werden. Objektlisten können im Speicher, zum Beispiel in einem Puffer gespeichert sein. Zum Rasterisieren und Schattieren jeder Kachel zur Anzeige kann eine Objektliste für diese Kachel gelesen werden.
  • Bei aufwendiger 3-D-Wiedergabe kann ein umfangreicher Betrag von Daten erzeugt werden oder erforderlich sein, um jedes Grundelement einzeln zu identifizieren. Daher könnte in einigen Ausführungen ein Ansatz zum Komprimieren dieser Daten eingesetzt werden. Wenn die Daten für eine Kachel benutzt werden sollen, dann kann eine umgekehrte Kompression oder sonstige Auslegung an die in der Objektliste für diese Kachel enthaltenen Daten angelegt werden.
  • In der 1 kann ein Verarbeitungselement, das Begrenzungsvolumen 39 erzeugt, die Endgeometrie in Teilvolumen von 3-D-Raum unter Verwendung von als Ergebnis programmierbarer Geometrieschattierung 37 erzeugten Scheiteln bearbeiten, welche Scheitel in Scheitel-Cache 41 gespeichert sein können. Diese Geometriegrößendaten können im nichtkurzzeitigen Speicher 57 gespeichert sein. Bei 3-D-Operationen wie beispielsweise Strahltraversal- oder Strahlschneidungsprüfung kann ein Teil von Endgeometrie (wieder-)erzeugt und im nichtkurzzeitigen Speicher 55 gespeichert werden. Der nichtkurzzeitige 55 kann auf verschiedene Weisen ausgeführt sein und 1 bedeutet nicht, dass ein nichtkurzzeitiger Speicher 55 ein einzelner physikalischer Speicher ist. Eine Geometrieeinheitssteuerung 61 kann betrieben werden, um anzuzeigen, welche Teile von Geometrie zu verarbeiten sind (z. B. Planen von Erzeugung oder Zuführung von Endgeometrie zu Verbrauchern derselben wie unten erläutert).
  • Rasterisierung 54 kann eine Ausgabe eines Schirmraumgeometriepuffers 51 benutzen, der auf Schirmraum abgebildete Endgeometrie ausdrückt. Zum Beispiel kann Rasterisierung 54 Kacheln von Geometrie bearbeiten. Eine Ausgabe von Rasterisierung 54 umfasst sichtbare Oberflächen, die Pixelschattierung 51 unterworfen sein können, die Pixelschattierungsergebnisdaten zu einem Ausgangspuffer 72 ausgibt. Im Allgemeinen könnte solche Pixelschattierung in einer Strukturisierungs- und Schattierungseinheit 52 umfasst sein, die auf einer programmierbaren Recheneinheit oder Gruppe von Einheiten implementiert sein kann. Diese Einheit 52 kann auch Strahlschattierer 53 implementieren. Strahlschattierer 53 können basierend auf Ausgaben von Strahlverfolgungseinheit(en) 59 ausgelöst werden. Strahlverfolgungseinheiten können nächste Kreuzungen zwischen Endgeometrie und Strahlen identifizieren. Diese Kreuzungen können gemäß programmierbaren Schattierungsmodulen schattiert sein. Strahlverfolgungseinheiten 59 können Strahldaten 65 während Strahldurchgang benutzen. Strahlschattierer 53 können auch auf solche Strahldaten 65 zugreifen und können neue Strahlen in Strahldaten 65 speichern.
  • Komprimierte Kachelobjektlisten
  • Von Kachelungseinheit 47 wird ein Bild in eine Mehrzahl von Kacheln geteilt, die jeweils eine Mehrzahl von Bildpixeln umfassen. Kacheln sind typischerweise rechteckig, aber können andere Formen aufweisen. Für jede Kachel bestimmt die Kachelungseinheit 47, ob sich jedes der Grundelemente wenigstens teilweise innerhalb dieser Kachel befindet. Das heißt die Kachelungseinheit 47 bestimmt, ob wenigstens Teil dieses Grundelements sich in einem betrachtbaren Gebiet der Kachel befindet. Auch wird von der Kachelungseinheit 47 eine Objektliste für jede Kachel abgeleitet. Die Objektliste zeigt Grundelemente an, die sich wenigstens teilweise in dieser Kachel befinden. Eine Objektliste kann für jede Kachel erstellt werden, selbst wenn sich keine Grundelemente in einer Kachel befinden, und in einem solchen Fall ist die Objektliste für diese Kachel leer. In einigen Ausführungen ist nicht jedes Grundelement, von dem bestimmt wird, dass es sich in einer Kachel befindet, tatsächlich in der Objektliste für diese Kachel angezeigt. Zum Beispiel kann bestimmt werden, in der Kachelungsstufe, dass ein Grundelement durch andere Grundelemente in der Kachel verdeckt wird (z. B. ein Schritt der Entfernung verborgener Oberfläche kann während der Kachelung eingesetzt werden), und daher in der Kachel nicht sichtbar sein wird. Dieses Grundelement kann daher in der Objektliste für diese Kachel nicht angezeigt sein, um unnötige Verarbeitung dieses Grundelements später zu vermeiden.
  • Die Grundelemente können auf verschiedene Weisen angezeigt sein. Jedes der Grundelemente anzeigende Kennungen können in jeweiligen Objektlisten gespeichert sein. Jedes Grundelement kann beispielsweise einem Index zugewiesen sein, oder jeder der Scheitel der Grundelemente kann einem Index zugewiesen sein. Diese Kennungen können sich auf einen Zeiger auf die geometrischen Daten für die jeweiligen Grundelemente oder Grundelementscheitel beziehen oder diesen bereitstellen. Ein weiteres Beispiel ist, dass für jedes tesselierte Grundelement Daten gespeichert sind, aus denen eine Endgeometrie abgeleitet werden kann, anstatt die vollen geometrischen Daten für das Grundelement zu speichern. Zum Beispiel kann ein Satz von Steuerpunkten für das Segment und die Tesselationsparameter, aus dem die geometrischen Daten für dieses Grundelement nachfolgend abgeleitet werden können.
  • Als weiteres Beispiel können abgeänderte Grundelemente (z. B. sich aus Tesselation oder sonstiger Geometrieschattierung ergebende Grundelemente) in Objektlisten angezeigt sein. Zum Beispiel kann jedem der abgeänderten Grundelemente eine eindeutige Kennung zugewiesen sein. Zum Beispiel könnte jedem der abgeänderten Grundelemente eine aufeinanderfolgende Ganzzahl zugewiesen sein. Wenn dem Eingangsgrundelement die Ganzzahl 0 zugewiesen wird, könnte der Mehrzahl neuer Instanzen des Grundelements (oder sich aus Verarbeitung dieses Eingangsgrundelements ergebenden Grundelemente) jeweils die Ganzzahlen 1, 2, 3, 4...n zugewiesen sein. Wenn bestimmt wird, dass ein oder mehrere der abgeänderten Grundelemente sich wenigstens teilweise in einer Kachel befindet, dann wird die einmalige Kennung für jedes dieser abgeänderten Grundelemente in der Objektliste für diese Kachel gespeichert.
  • Ein alternatives Verfahren zum Anzeigen geänderter Grundelemente kann wie folgt ablaufen. Wenn bestimmt wird, dass eines oder mehrere der geänderten Grundelemente sich in einer Kachel befindet, wird eine Kennung (der Index/die Indizen) für das Eingangsgrundelement, aus dem diese geänderten Grundelemente erzeugt werden, in einer Objektliste für diese Kachel gespeichert. Anders gesagt kann jedem der geänderten Grundelemente die gleiche Kennung (Index/Indizen) wie dem Eingangsgrundelement zugewiesen werden. Wenn beispielsweise dem Eingangsgrundelement die Ganzzahl 0 zugewiesen wird, dann werden jeder der geänderten Instanzen dieses Grundelements ebenfalls der Index 0 zugewiesen. Der Index/die Indizes für das Eingangsgrundelement können einmal für jede der geänderten Instanzen dieses Grundelements, die sich innerhalb der Kachel befinden, gespeichert werden. Jedoch kann/können der Index/die Indizen für das Eingangsgrundelement ungeachtet der Anzahl von Instanzen dieses Grundelements, die sich innerhalb einer bestimmten Kachel befinden, nur einmal pro Liste gespeichert werden.
  • Damit könnte man aus der Objektliste für eine Kachel nicht erkennen, welche oder wie viele Instanzen eines in der Objektliste identifizierten Grundelements sich in dieser Kachel befinden. Trotzdem besitzt diese Ausführungsform jedoch den Vorteil, dass das Eingangsgrundelement, aus dem die abgeänderten Instanzen abgeleitet sind, in der Objektliste identifiziert wird, wenn wenigstens eine der Instanzen dieses Grundelements sich in der Kachel befindet, ungeachtet dessen, ob sich das Eingangsgrundelement selbst in dieser Kachel befindet. So können alle geänderten Grundelemente, die sich in der Kachel befinden, zum genauen Schattieren der Kachel unter Verwendung ihrer Objektliste verarbeitet werden. Ferner wird durch diesen Ansatz ermöglicht, dass die in der Objektliste aufgenommenen Daten in hochkomprimiertem Format aufgenommen sind.
  • Wie ausführlicher unten beschrieben, wird zum Schattieren der Kachel die gleiche Abänderungsfunktion wieder auf jedes in der Objektliste identifizierte Grundelement angewandt. Dann kann, sobald die geänderten Grundelemente regeneriert worden sind, bestimmt werden, welche sich in der Kachel befinden, wenn überhaupt, unter Verwendung wohlbekannter Verfahren wie oben beschrieben.
  • Dieser Ansatz besitzt jedoch den Nachteil, dass nicht nur alle in der Kachel befindlichen geänderten Grundelemente regeneriert werden müssen, sondern geänderte Grundelemente, die sich in der Tat nicht in der Kachel befinden, unnötig berechnet werden könnten. Dadurch, dass jedes Grundelement hunderte oder tausende geänderter Instanzen aufweisen könnte, kann diese Situation bedeutsame Verschwendung von Rechenressourcen ergeben. Daher kann in einem Ansatz eine eine Anzahl von Bit umfassende Markierung in der Objektliste für eine Kachel oder in einem anderen Speichergebiet gespeichert sein, die anzeigt, welche in der Objektliste identifizierten Grundelemente eine abgeänderte Instanz in der Kachel aufweisen. Dadurch könnte vermieden werden, die Abänderungsfunktion wieder auf alle der in der Objektliste identifizierten Grundelemente anwenden zu müssen, und dabei der Vorteil bewahrt werden, in der Lage zu sein, die Daten in den Objektlisten in hochkomprimiertem Format zu speichern.
  • Wie oben erwähnt, können geänderte Grundelemente schrittweise erzeugt werden, so dass ein geändertes Grundelement aus dem Eingangsgrundelement erstellt wird und dann ein zweites geändertes Grundelement aus diesem geänderten Grundelement erstellt wird und so weiter, bis eine Folge geänderter Grundelemente abgeleitet worden ist. Damit können zusätzlich zum Speichern einer das Grundelement identifizierenden Kennung, aus dem die Folge geänderter Grundelemente abgeleitet ist, die erste und/oder letzte Stelle in der Folge dieser in der Kachel befindlichen geänderten Grundelemente anzeigende Daten gespeichert werden. Diese Daten können in der Objektliste für diese Kachel oder in einem anderen Speichergebiet gespeichert werden. Dieser Ansatz besitzt den Vorteil, dass, wo sich nur eine Teilmenge der Folge geänderter Grundelemente in einer bestimmten Kachel befindet, nicht alle der Folge geänderter Grundelemente hinsichtlich dieser Kachel neu abgeleitet werden müssen, wie ausführlicher unten erläutert wird.
  • Es besteht jedoch der Kompromiss, dass die erste und/oder letzte Folgestelle anzeigende Daten für jedes der in der Objektliste identifizierten Grundelemente gespeichert werden müssen. In dieser beschriebenen Ausführungsform, wo die Grundelemente tesselierte Grundelemente sind, wird der Fachmann erkennen, dass es tausende von durch jedes Segment erzeugten Grundelementen geben kann. Speichern dieser Stellungsdaten für jedes der Grundelemente würde eine große Speichermenge erfordern.
  • Ein Kompromiss könnte darin bestehen, die höchste und/oder niedrigste Folgenstelle jeglicher in der Kachel befindlicher abgeänderter Grundelemente zu bestimmen, die aus aus einem Segment von Oberflächendaten abgeleiteten tesselierten Grundelementen abgeleitet sind. Dieser Ansatz sieht vor, dass nur zwei Ganzzahlen pro Kachel für das gesamte Segment gespeichert werden müssen. Dieses Verfahren kann bewirken, dass mehr unerforderliche abgeänderte Grundelemente erzeugt werden, erfordert jedoch weniger Speicher und vermeidet dabei Wiederableitung einiger unerforderlicher abgeänderter Grundelemente.
  • In einigen Ausführungsformen könnte es mehr als einen Schritt von Schattierung (Abänderung) angewandt auf ein beliebiges gegebenes Element von Quellengeometrie zum Ableiten der Endgeometrie geben. Jeder dieser Schritte kann eine unterschiedliche Änderungsfunktion oder -prozedur an ein Eingangsgrundelement anlegen. Jeder Änderungsfunktion könnte eine Kennung zugewiesen werden, die eine Änderungsfunktion (oder Folge derselben) identifiziert, die zum Erzeugen abgeänderter Grundelemente zu benutzen ist. Diese Kennung kann in einer Objektliste betreffs einer diese ändernden Grundelemente enthaltenden Kachel gespeichert werden. Eine erste und/oder letzte Stelle in einer Folge der abgeänderten Grundelemente anzeigende Daten können hinsichtlich jeder der Änderungseinheiten gespeichert werden. Die Liste von Indizien kann beispielsweise unter Verwendung eines Index-/Scheitel-Puffers auf eine dem Fachmann bekannte Weise komprimiert werden. Eine Anzahl von unterschiedlichen Verfahren zum Komprimieren einer Liste von Indizien tesselierter Grundelemente abgeleitet durch Tesselation eines Segments von Oberflächendaten kann vorgesehen sein, die Kenntnis der internen Struktur eines tesselierten Segments von Oberflächendaten nutzt. Ein Vorteil von Zuweisen des gleichen Indexes/der gleichen Indizien wie das Eingangsgrundelement zu den abgeänderten Grundelementen ist es, dass die gleichen Komprimierungsverfahren zum Komprimieren des Indexes/der Indizien benutzt werden können.
  • Vorverarbeitung von Geometrie für Strahlverfolgung
  • Zum Vorbereiten auf Strahlverfolgung erforderliche Verarbeitung unterscheidet sich in einiger Hinsicht von Verarbeitung von Geometrie für Rasterisierung. Ein Hauptunterschied besteht darin, dass der Wirkungsgrad bei der Strahlverfolgung von komplexen Szenen typischerweise durch Erzeugen einer Beschleunigungsstruktur verbessert wird, die unterschiedliche Abstraktionsstufen von Geometrie in der 3-D-Szene aufweist. Zum Beispiel kann eine Beschleunigungsstruktur eine hierarchische Anordnung von Elementen sein, wo jedes der Elemente ein jeweiliges Volumen im 3-D-Raum begrenzt. Jedes Volumen kann ein Grundelement, mehrere Grundelemente oder einen Teil desselben begrenzen. Eine Beschleunigungsstruktur für Strahlverfolgung kann für Endgeometrie erzeugt werden (d. h. nach programmatischer Geometrieabänderung oder -erzeugung wie beispielsweise durch Verwenden von Verschiebungsgeometrie oder Tesselation). In manchen Fällen kann der Wirkungsgrad der Bestimmung von Kreuzungen in der 3-D-Szene durch Bereitstellen einer ausführlicheren Beschleunigungsstruktur verbessert werden. Es wäre jedoch zu erwarten, dass eine ausführlichere Beschleunigungsstruktur mehr Speicher als eine körnigere Beschleunigungsstruktur verbrauchen würde.
  • Zum Implementieren von speicherbewussten Wiedergabeansätzen, die eines oder mehrere von Rasterisierung und Strahlverfolgung benutzen, können Verfahren eingesetzt werden zum Vermeiden der Erzeugung und Speicherung von Endgeometrie für eine gesamte 3-D-Szene. Diese Verfahren können Erzeugung von Endgeometrie oder sonstigen geometriebezogenen Konstruktionen (z. B. einen Teil einer Beschleunigungsstruktur) als Reaktion auf einen Bedarf umfassen. Nach Erzeugung von kachelorientierten Objektlisten kann die Kachelung fortschreiten, indem man durch jede Kachel schreitet und die aus jeder Objektliste angezeigte Geometrie verarbeitet. So kann in Abhängigkeit von der Ausführung Kachelungsberechnung relativ regelmäßig und vorhersagbar sein.
  • Durchlaufende Strahlen in einer 3-D-Szene können jedoch sehr unregelmäßig sein, besonders globale Beleuchtungsstrahlen wie beispielsweise Reflexions- oder Brechungsstrahlen, da diese Strahlen zerstreut sein werden, da sie von unterschiedlichen Stellen kommen und in verschiedenen Richtungen laufen (im Vergleich mit Primärstrahlen verfolgt von einer Szenen-”Kamera”). Auch können in einigen Situationen Strahlen zum Durchlauf während des Kachelungsverfahrens abgegeben werden, in dem sichtbare Oberflächen der Geometrie für Pixel bestimmt werden. Nachdem diese sichtbaren Oberflächen bestimmt sind, dann können diese Oberflächen schattiert oder sonstwie verarbeitet werden. Zum Beispiel können Strahlen von der Oberfläche geworfen werden, um Beschatten dieses Oberflächenpunkts durch Lichter zu bestimmen. Strahlen können zum Beispiel zur globalen Beleuchtungsprobennahme stochastisch abgegeben werden. Der Begriff Pixel wird hier häufig benutzt, aber Pixel können aus einer Mehrzahl von Bruchteilen zusammengesetzt sein. Auch können für jedes Pixel mehrere Proben genommen werden durch Versetzen des Pixels in einer oder mehreren Richtungen bei der Bestimmung sichtbarer Oberflächen für dieses Pixel.
  • Die Vorverarbeitung von Geometrie zur Strahlverfolgung kann aus für Kachelungszwecke durchgeführter Vorverarbeitung Nutzen ziehen. Auch kann Vorverarbeitung für Kachelung aus Geometrieverarbeitung Nutzen ziehen, die zur Einstellung auf Strahlverfolgung durchgeführt wird. Es werden beispielhafte Gelegenheiten zur Durchführung von Vorverarbeitung von Endgeometrie zur Kachelung und zur Strahlverfolgung wie auch für bedarfsweise Erzeugung von Endgeometrie für Kachelung und Strahlverfolgung erläutert.
  • In einem Aspekt ermöglicht Geometrievorverarbeitung zur Strahlverfolgung die Zuteilung von Endgeometrie unter Elementen einer Beschleunigungsstruktur. Die Zuteilung dieser Elemente in eine Beschleunigungsstruktur kann durch komprimierte Objektlistendaten für jedes dieser Elemente gemäß Ausführungen von Objektlistendaten dargestellt werden, aber ein Entscheidungskriterium darüber, ob die Daten in einer Objektliste enthalten sein sollen oder nicht, besteht darin, ob sich das Objekt in einem mit einem bestimmten Element verbundenen 3-D-Volumen befindet.
  • Erzeugung von Endgeometrie
  • Gemäß der Offenbarung erzeugte Endgeometrie kann aus Quellengeometrie erzeugt werden, die nach einer oder mehreren Änderungsfunktionen abgeändert ist. Diese Änderungsfunktionen können seriell angewandt werden. Eine Verkettung von Änderungsfunktionen kann ebenfalls in weniger getrennte Identifikationsschritte oder Teile von Verfahren ausgedrückt oder zusammengelegt werden. Im Zusammenhang mit Ausführungen der Offenbarung, wo Quellengeometrie, die Endgeometrie für eine bestimmte Kachel oder ein bestimmtes Gebiet von 3-D-Raum erzeugt, in einer Liste identifiziert ist, kann diese auch Daten enthalten, die identifizieren, welche Geometrieänderungsverfahren an diesen Daten durchgeführt werden würden, um Endgeometrie zu ergeben. Damit kann Wiedererzeugung von Endgeometrie für bestimmte Teile einer 3-D-Szene (entweder dadurch, dass sie als für eine Kachel von Schirmraumpixeln oder ein Volumen von 3-D-Raum zur Strahlverfolgung relevant identifiziert wird) durch Anwenden der identifizierten Folge von Abänderungen auf die identifizierte Quellengeometrie durchgeführt werden.
  • Die Implementierung dieser Geometrieverarbeitung kann in unterschiedlichen Ausführungen unterschiedlich durchgeführt werden. Wo beispielsweise ein programmierbares Bündel von Recheneinheiten zum Durchführen von Geometrieberechnung, Schattierungsberechnung (z. B. Schattierung von Strahlkreuzungen, Scheitelschattierung, Pixelschattierung und so fort), Strahlüberquerung oder sonstige Arten von Aufgaben zur Verfügung steht, kann dieses programmierbare Bündel zum Ausführen der erforderlichen Geometrieverarbeitung ausgelegt sein. Die Implementierung kann Berechnungs-Threads abarbeiten, die Eingaben empfangen und/oder Ausgaben von einem anderen Thread erzeugen, um eine Folge von erforderlichen Geometrieänderungen auszuführen. In anderen Beispielen können zwischenzeitlich verarbeitete Geometriedaten im Speicher gespeichert und wie erforderlich durch einen oder mehrere Berechnungs-Threads gelesen/geschrieben werden, die die Geometrieverarbeitung ausführen.
  • Wie oben erwähnt, können einige Geometrieänderungen schrittweise stattfinden. Selbst falls angezeigt werden kann, dass sich ein gewisser Teil einer schrittweisen Reihe von Geometrieelementen in einer bestimmten Kachel befindet, könnte es damit nicht möglich sein, nur diese Instanzen zu erzeugen, da spätere Instanzen von Wiederholung durch frühere Grundelemente in einer programmatischen Folge abhängig sein können. In einer Implementierung wird unnötige Wiederholungsberechnung durch Speichern von schrittweisen Geometriedaten in einem lokalen Speicher wie beispielsweise einem Cache verringert. Der Vorteil davon ist dass, wo die Instanzen über mehr als eine Kachel ausgebreitet sind, Vorläufer der Geometrieelemente möglicherweise nicht für jede Kachel neu erzeugt werden müssen. In einer solchen Implementierung kann definiert werden, welche Teile einer schrittweisen Reihe von Geometrie sich in einer bestimmten Kachel oder einem bestimmten 3-D-Beschleunigungsstrukturelement befinden und dann können diese Elemente zuerst in einem Cache gesucht werden, ehe ein Geometrieverfahren zum Reproduzieren dieser Elemente begonnen wird, was Wiederholen durch Vorläuferelemente erfordern könnte, die sich nicht in dieser Kachel oder diesem Beschleunigungsstrukturelement befinden.
  • In einer alternativen Ausführungsform können Geometrieänderung/Erzeugung angehalten werden, nachdem das letzte in einer bestimmten Kachel befindliche Grundelement erzeugt worden ist. Dies kann beispielsweise durch Lesen von Daten bestimmt werden, die das letzte Grundelement in der in dieser Kachel befindlichen Folge anzeigen. In dieser Ausführungsform kann der Zustand einer Änderungseinheit oder eines Änderungsverfahrens gespeichert werden, wie auch das zuletzt erzeugte abgeänderte Grundelement, so dass die Änderung oder Erzeugung die Ausführung weiterführen kann, von wo sie für eine andere Kachel gestoppt wurde. Wo zum Beispiel die ersten 100 abgeänderten Grundelemente erzeugt worden sind und dann das 101. geänderte Grundelement durch eine nachfolgende Kachel erfordert wird, muss damit die Änderungseinheit nicht beginnen, die Folge abgeänderter Grundelemente von Anfang an neu abzuleiten. Das in einer bestimmten Kachel (oder einem bestimmten 3-D-Raumelement) befindliche erste geänderte Grundelement kann durch Lesen der Daten bestimmt werden, die die Stelle des ersten geänderten Grundelements in der in der Kachel befindlichen Folge anzeigen.
  • Bei diesem Ansatz kann, ehe Abänderungen an ein in einer Objektliste identifiziertes Grundelement angewandt werden, bestimmt werden, ob irgendein geändertes Grundelement mit einer entsprechenden Kennung im Cache gespeichert ist. Wenn ja, dann kann das nächste geänderte Grundelement in der Folge zum erforderlichen geänderten Grundelement geholt werden und wo der Zustand der Änderungseinheit gespeichert worden ist, kann die Änderungseinheit Ausführung von diesem abgeänderten Grundelement weiterführen, bis das erforderliche geänderte Grundelement erzeugt ist. Bei Anwendungen, wo die geänderten Grundelemente schrittweise erzeugt werden müssen, könnte das frühere nächste geänderte Grundelement in der Folge erfordert sein, das nicht unbedingt das nächste sein könnte.
  • Sobald die abgeänderten Instanzen regeneriert worden sind, falls nötig, kann bestimmt werden, welche der Instanzen innerhalb einer bestimmten Kachel liegen unter Verwendung wohlbekannter Verfahren wie oben beschrieben. Für jede Kachel können, nachdem Daten für jedes der geänderten Grundelemente und nicht geänderten Grundelemente befindlich in dieser Kachel erhalten worden sind, die Grundelemente verarbeitet werden, um das Bild unter Verwendung wohlbekannter Verfahren wiederzugeben.
  • Zum Beispiel können die Grundelemente zur verborgenen Oberflächenentfernungseinheit 70 weitergeleitet werden, die alle Oberflächen entfernt, die in der Kachel nicht sichtbar sind, und die sich ergebenden Pixeldaten können zu einer Struktur- und Schattierungseinheit 80 weitergeleitet werden, die Pixel- oder Strukturschattierung anlegt, ehe die Pixelendwerte zur Anzeige in den Speicher geschrieben werden.
  • 2A/B zeigt ein gemeinsames Geometrieverfahren, das während der Wiedergabe durchgeführt werden kann, die ein Hybrid von Rasterisierung (kachelbasierender Rasterisierung) und Strahlverfolgung benutzt. In 2A ein Geometrieverarbeitungs-Vorwegdurchlauf, der einen Strom von Endgeometrie 82 erzeugt und zum Erzeugen (84) von 3-D-Objektgrößendaten benutzt wird, die gespeichert werden (86). 3-D-Objektgrößendaten können auf Knoten einer Beschleunigungsstruktur abgebildet werden, als Kennungen für Knoten einer Beschleunigungsstruktur ausgedrückt sein oder in Knoten einer Beschleunigungsstruktur enthalten sein. Die 3-D-Objektgrößendaten könne Quellengeometrie und an diese Quellengeometrie durchzuführende Geometrieverfahren anzeigen, um Endgeometrie und Funktionen zum Identifizieren einer Grenze der Endgeometrie herzustellen. Der Strom von Endgeometriedaten wird zum Erzeugen (88) von 2-D-Schirmraumobjektgrößendaten benutzt, die gespeichert werden (90). Sich der 2B zuwendend, werden 3-D-Objektgrößendaten zur Strahlverfolgung benutzt (103), wo Strahlen durch eine grobe Beschleunigungsstruktur sortiert/überquert werden (105). Quellengeometrie kann identifiziert werden (111), wo Cache-Speicherung benutzt wird, Gegenwart von Endgeometrie in einem Cache kann überprüft werden (113). Wo sich eine solche Endgeometrie in einem Cache befindet, dann muss Quellengeometrie nicht unbedingt identifiziert werden (111). Falls Endgeometrie nicht verfügbar ist, dann wird diese Endgeometrie aus der Quellengeometrie wiederhergestellt (115). Eine Beschleunigungsstruktur im groben Element der Beschleunigungsstruktur kann erzeugt werden (117) und zum Durchqueren (119) von Strahlen im Volumen dieses groben Beschleunigungsstrukturelements benutzt werden. Auch wird Grundelementüberprüfung (121) für Strahlen in diesem groben Beschleunigungsstrukturelement basierend auf der Endgeometrie durchgeführt.
  • 2C zeigt einen Rasterisierungsfluss, wo Schirmraumkachelung 123 durchgeführt werden kann durch Beginnen der Verarbeitung einer Kachel (125) einschließlich von Zugreifen auf 2-D-Schirmraum-Objektgrößendaten (127) (z. B. eine Objektliste) und Überprüfen, ob identifizierte Endgeometrie Cache-gespeichert ist (133), und sofern sie nicht Cache-gespeichert ist, Bereitstellen von identifizierter Quellengeometrie und Geometrieprozessidentifikation (129) für eine Geometrieverarbeitungseinheit. An wiedergewonnener oder wiederhergestellter Endgeometrie kann HSR (sichtbare Oberfläche identifiziert) durchgeführt werden. In einigen Implementierungen könnte, obwohl gewisse Endgeometrie in einer Kachel nicht sichtbar ist, ein Teil dieser Geometrie Cache-gespeichert werden, da sie für Strahldurchquerungsoperationen benutzt werden könnte. In einigen Situationen könnte ein Cache-erforderlich-Merker für gewisse Endgeometrie gesetzt werden, was einen Bedarf auf der Strahldurchquerungsseite für gewisse Teile von Endgeometrie (oder umgekehrt) anzeigen würde.
  • 3 zeigt eine beispielhafte Ausführung, durch die Quellengeometriedaten durch eine API 180 übermittelt werden können und die Quellengeometriedaten Hinweise enthalten können, die volumetrische Grenzen von Endgeometrie, die sich aus einer bestimmten Menge oder einem bestimmten Element von Quellengeometriedaten ergeben werden, anzeigen oder die benutzt werden können, um diese abzuleiten. Ein Vorverarbeitungsschritt kann mit oder anstatt der Verwendung von Hinweisen wie oben beschrieben durchgeführt werden. 3 zeigt damit an, dass obwohl ein Geometrie-Vorwegdurchlauf durchgeführt werden könnte, andere Ausführungen Hinweise oder Heuristiken zum Erhalten von Annäherungen für Größe von Endgeometrie aus Quellengeometrie anwenden können. Objektgrößendaten können zum Identifizieren von Quellengeometriedaten benutzt werden, die zum Erzeugen von Endgeometriedaten benutzt werden, die zum Vollenden von Kreuzungsprüfung oder sonstigen Operationen an Geometrie benötigt sind, die während der Strahlverfolgung benötigt sein könnten. Solche Objektgrößendaten können eine Definition einer groben Beschleunigungsstruktur enthalten.
  • Hier kann grobe Beschleunigungsstruktur bedeuten, dass anstatt der Fortführung einer Unterteilung von Volumen einer gegebenen Größe zum Erzeugen kleinerer Gruppierungen von Grundelementen für Kreuzungsprüfung die Volumen nicht unterteilt werden. Daher werden die Blattknoten einer groben Beschleunigungsstruktur relativ groß sein und eine relativ hohe Anzahl von Grundelementen von Endgeometrie begrenzen. In einem Beispiel könnte eine feinkörnige Beschleunigungsstruktur allgemein 5–10, 10–15, 15–20 oder vielleicht 20–30 oder 30–50 Grundelemente begrenzen, während ein Knoten einer grobkörnigen Beschleunigungsstruktur ein oder mehrere hunderte von Grundelementen begrenzen könnte, oder sogar tausende von Grundelementen. Diese Zahlen können relativ angesehen werden anstatt als absolute Zahlen oder Verhältnisse.
  • 4 zeigt einen Ansichtskegelstumpf für eine Pixelebene 205 und einen Ansichtskegelstumpf 208 für eine bestimmte Kachel in der Pixelebene 205. Der Ansichtskegelstumpf für Pixelebene 205 könnte ein Unterteil einer Gesamtheit einer 3-D-Szene sein, in der der Ansichtskegelstumpf durchlaufen würde (selbst falls ein Teil des Ansichtskegelstumpfes auch außerhalb der 3-D-Szene liegt). Ansichtskegelstumpf 208 für eine bestimmte Kachel könnte gewisse Elemente in einer groben Beschleunigungsstruktur in der Szene überlappen. Überlappung zwischen diesen Raumeinheiten könnte als eine Eingabe beim Ausdrücken von Objektgrößendaten für Kachelung und für 3-D-Volumen benutzt werden. Zum Beispiel könnte eine Objektliste für die Kachel als eine Menge von Beschleunigungsstrukturelementen ausgedrückt werden, die einen Ansichtskegelstumpf 208 umschließen. Jedes dieser Beschleunigungsstrukturelemente kann eine jeweilige Objektliste aufweisen, so dass die Sammlung dieser Objektlisten eine Objektliste für die Kachel bildet. Einige Ausführungen können Elemente von Endgeometrie basierend darauf kategorisieren, ob sie innerhalb oder innerhalb eines Ansichtskegelstumpfes der 2-D-Ebene liegen, oder einer Kachel, oder beide.
  • 5 und 6 zeigen verschiedene Aspekte des Ortens von Szenenobjekten im 3-D-Raum. Hinsichtlich der 4 könnte sich der Ansichtskegelstumpf der 4 innerhalb der von 5 gezeigten Würfel befinden, oder teilweise innerhalb davon. Nicht alle Szenendefinitionen müssen Würfel sein oder sonstige regelmäßige Formen, aber der Einfachheit halber ist dies in den Figuren gezeigt.
  • 7 zeigt einen Ansatz zum Abstimmen einer Grobheitsstufe in einer Beschleunigungsstruktur, die zum Unterteilen einer 3-D-Szene in verschiedene Teile zur bedarfsweisen Erzeugung von Endgeometrie dieser unterschiedlichen Teile benutzt werden wird. Eine grobe Beschleunigungsstruktur kann basierend auf einem Kriterium definiert werden, wie viel Speicher zum Speichern der groben Beschleunigungsstruktur zugeteilt werden kann. Dies kann basierend auf einer Erwartung einer Anzahl von zu verfolgenden Strahlen gewählt werden, wobei, falls viele Strahlen zu verfolgen sind, eine feinere Beschleunigungsstruktur einen vergleichsweise großen Nutzen bringen kann. Wie oben erläutert, können Strahlen gegen Elemente der groben Beschleunigungsstruktur gesammelt werden und dann kann eine feinerkörnige Beschleunigungsstruktur vor Durchquerung von Strahlen in diesem groben Beschleunigungsstrukturelement erzeugt werden oder einfach Strahlen innerhalb dieser Struktur durchqueren. Einige Ansätze können Sortieren der Strahlen in Unterteilen des groben Beschleunigungsstrukturelements bereitstellen und Erzeugen von Geometrie für diese Unterteile zum Prüfen gegen eine zutreffende Teilmenge der gesammelten Strahlen.
  • 8 zeigt ein beispielhaftes Verfahren, mit dem Geometrie in mehreren Auflösungen auf Bedarf erzeugt werden kann; ein solches Verfahren kann auch Erzeugen von Teilen einer Beschleunigungsstruktur umfassen, obwohl das Beispiel auf Geometrie begrenzt ist. Ein solches Verfahren kann beispielsweise ausgeführt werden, wo Endgeometrie für ein gegebenes Objekt mit einer ersten Auflösung für einen ersten Verbraucher dieser Endgeometrie bereitzustellen ist, während Endgeometrie für dieses Objekt mit einer zweiten Auflösung für einen zweiten Verbraucher dieser Endgeometrie bereitzustellen ist. In einem bestimmten Beispiel kann für ein Strahlverfolgungsteilsystem Geometrie mit einer niedrigeren Auflösung für das Objekt bereitgestellt werden, als Geometrie, die für ein Rasterisierungsteilsystem benutzt wird. Zum Beispiel kann eine Gesamtzahl von zum Definieren des Objekts benutzten Grundelementen, wenn diese Grundelemente zur Strahlverfolgung benutzt werden, anders sein als eine Gesamtzahl von zum Definieren des gleichen Objekts benutzten Grundelementen bei Rasterisierung dieses Objekts.
  • Im beispielhaften Verfahren der 8 sind Geometrie-Quelldaten 350 verfügbar, aus denen Endgeometrie erzeugt werden kann. Diese Geometrie-Quelldaten 350 können Scheiteldefinitionsdaten für Geometrie niedriger Auflösung 370 umfassen, Zusatz-Scheiteldefinitionsdaten 372, Scheitelverbindbarkeitsdaten für Geometrie niedriger Auflösung 374 und Zusatz-Scheitelverbindbarkeitsdaten 376.
  • Bei 352 werden Anforderungen von Endgeometrie in bestimmten Gebieten eines 3-D-Raums von verschiedenen Verbrauchern empfangen. Beispielsweise sind ein Strahlverfolgungs-Teilsystem und ein Rasterisierungs-Teilsystem verschiedene Verbraucher; auch können diese Teilsysteme jeweils als mehrere Verbraucher von Geometrie enthaltend angesehen werden. Auch können bestimmte Elemente von ausgeführtem Code als Verbraucher angesehen werden; zum Beispiel könnten Schattierermodule Geometrieanforderungen stellen. Gebiete von 3-D-Raum können auf verschiedene Weisen identifiziert werden. Zum Beispiel könnte ein Rasterisierungs-Teilsystem eine Kachel in einem wiederzugebenden Bild identifizieren und diese Kachel kann zum Indexieren einer Abbildung von Gebieten von 3-D-Raum in einem Ansichtskegelstumpf dieser Kachel benutzt werden. Ein Strahlverfolgungs-Teilsystem kann ein Element einer Beschleunigungsstruktur identifizieren. Verbraucher können ein Geometrieobjekt oder eine Liste von Objekten identifizieren, für die Endgeometrie zu erzeugen ist. So versteht es sich, dass sich Implementierungen darin unterscheiden können, wie Verbraucher von Geometrie anzeigen können, welche Geometrie angefordert wird (und das gleiche für Beschleunigungsstrukturelemente).
  • Bei 354 werden diese Anforderungen eingestuft, z. B. entsprechend ob jede Geometrie hoher oder niedriger Auflösung anfordert. Obwohl dieses Beispiel zwei verfügbare Geometriauflösungen betrifft, können mehr Auflösungen vorgesehen sein, oder es kann eine programmatisch einrichtbare Geometrieerzeugung geben, die Endgeometrie gemäß einem Ziel erzeugen kann, das zum Beispiel nicht direkt als Auflösung oder Grundelementzählwert ausgedrückt ist. In einem Ansatz wird bei 356 ein ausgewählter Teil von Scheitelverbindbarkeitsdaten an einen zutreffenden Teil von Scheiteldaten aus Geometriequelldaten 350 angelegt, für jeden der Verbraucher, für jedes der Gebiete von 3-D-Raum, in dem Geometrie angefordert wurde. Die Abschlussgeometrie wird bei 358 ausgegeben.
  • 9 zeigt eine beispielhafte Speicherabbildung 382 davon, wie Scheiteldaten und Scheitelverbindbarkeitsdaten im Speicher angeordnet sein können. In 9 können Scheiteldefinitionsdaten für Geometrie geringer Auflösung 388 getrennt von Zusatz-Scheiteldefinitionsdaten 390 gespeichert sein und Scheitelverbindbarkeitsdaten für Geometrie geringer Auflösung 392 kann getrennt von Scheitelverbindbarkeitsdaten für Geometrie hoher Auflösung 394 gespeichert sein. Zum Erzeugen von Geometrie mit einer bestimmten Auflösung kann stets auf die Grundgeometrie geringer Auflösung zugegriffen werden und dann kann auf Auswahlen aus Zusatz-Scheiteldefinitionsdaten zugegriffen werden, zusammen mit zutreffenden Teilen von Scheitelverbindbarkeitsdaten.
  • Es sind andere Ansätze möglich, die Geometriedaten zur Speicherung im Speicher auslegen. Zum Beispiel können Scheiteldaten betreffs bestimmter Gebiete von 3-D-Raum zusammen gespeichert werden; zum Beispiel können Daten geringer Auflösung und Zusatz-Scheiteldefinitionsdaten für ein bestimmtes Gebiet von 3-D-Raum zusammen gespeichert sein. Dieser Ansatz sieht vor, dass Daten geringer Auflösung und Zusatz-Scheiteldefinitionsdaten dann verschachtelt sein würden. Eine objektweise Ansammlung von Daten geringer Auflösung und Zusatz-Scheiteldefinitionsdaten kann ebenfalls vorgesehen sein. Diese Möglichkeiten können beide in einigen Ansätzen benutzt werden.
  • Das Beispiel der 8 betrifft hauptsächlich die Erzeugung von Geometrie unter Verwendung von Auswahlen aus Mengen von Grundelementdaten. In anderen Implementierungen kann jedoch Geometrie höherer Auflösung aus Geometrie geringerer Auflösung durch Verfahrensabänderung erzeugt werden. Solche Implementierungen können Oberflächendefinitionsdaten höherer Ordnung (anstatt von Grundelementdaten) benutzen und diese Oberflächendefinitionsdaten höherer Ordnung können gemäß einem oder mehrerer Geometrieverfahren zum Erzeugen von Geometrie mit einer gewünschten Auflösung verarbeitet werden. Obwohl diese Beispiele hauptsächlich Geometrie unterschiedlicher Auflösung behandeln, können Implementierungen von bedarfsweiser Geometrieverarbeitung auch unterschiedliche Arten von Endgeometrie für unterschiedliche Verbraucher erzeugen. Auch können einige Implementierungen eine unterschiedliche Teilmenge von Grundelementen erzeugen und/oder ausgeben, selbst bei einer gegebenen Auflösung. Zum Beispiel kann Geometrieerzeugung, die zum Verbrauch durch ein Rasterisierungsteilsystem bestimmt ist, Geometrie auf einen Ansichtskegelstumpf eines Bildes oder einer Kachel innerhalb des Bildes klippen und/oder rückwärtsblickende Grundelemente auslesen. Jedoch würde Rückblickauslesen von Grundelementen eines Objekts nicht für ein Strahlverfolgungsteilsystem durchgeführt werden.
  • 10 zeigt ein beispielhaftes Verfahren zum Steuern von Planung und/oder Cache-Speicherung von Beschleunigungsstrukturelementen und Geometriedaten. In einer Situation, wo Ressourcen unbeschränkt sind, kann Planung von Geometrieerzeugung einfach Verarbeiten von Anforderungen in Reihenfolge wie empfangen vorsehen. Jedoch lässt ein solcher Ansatz wie unten erläutert Optimierung verfügbar. Bei 410 werden Anforderungen von Geometrie in einem bestimmten 3-D-Gebiet empfangen (die von verschiedenen Verbrauchern kommen können). Bei 412 werden diese Anforderungen in Gruppen nach 3-D-Gebiet gesammelt. Bei 414 wird Geometrie und/oder Beschleunigungsstrukturelementerzeugung für diese Gruppen gemäß Planungskriterien geplant. So werden in einer ersten Implementierung Anforderungen nicht in Reihenfolge verarbeitet, sondern in einem Planungsfenster zurückgestellt, um Anforderungen zu identifizieren, die das gleiche Gebiet von 3-D-Raum betreffen (oder beispielsweise das gleiche Objekt). Eine solche Planung 414 kann auch Bedarfsvorhersage(n) für bestimmte Geometrie oder Beschleunigungsstrukturelemente beschreibende Eingaben benutzen.
  • Planung kann Bestimmen umfassen, wie viel Rechenressource zur Geometrieerzeugung benutzt werden kann, und eine Anzahl von gleichzeitig verarbeiteten Gruppen können dementsprechend ausgewählt werden. Priorität kann 3-D-Gebieten von Raum mit mehr Anforderungen erteilt werden. Eine Anforderung von einem Rasterisierungsteilsystem kann höher gewichtet werden als eine Anforderung von einem Strahlverfolgungsteilsystem. Einige Systeme können mehrere Rahmen im Flug aufweisen und Anforderungen betreffs früherer Rahmen können gegenüber Anforderungen aus späteren Rahmen priorisiert werden. Auch kann Planung Vergleichen eines erwarteten Betrags an Geometrie und/oder Beschleunigungsstrukturelementen umfassen, die erzeugt werden würden, um eine gegebene Anforderung zu erfüllen, und Bestimmen, ob genügend Speicher verfügbar ist. Noch weitere Planungskriterien können Bestimmen umfassen, ob Quellengeometrie in einem Cache für einige Teilanforderungen zur Verfügung steht und Priorisieren dieser Anforderungen. Umgekehrt können Anforderungen ausgelesen werden, wenn Endgeometrie- oder Beschleunigungsstrukturelemente in einem Cache vorhanden sind (oder ansonsten direkt aus dem Cache bedient werden); beispielsweise kann eine Anforderung einfach eine Anforderung von Endgeometrie sein – nicht unbedingt eine Anforderung, solche Geometrie zu erzeugen. Ein Geometrieerzeugungsverfahren kann die angeforderte Geometrie liefern (oder eine Referenz oder einen Satz von Referenzen auf solche Geometrie speichernden Speicher bereitstellen).
  • Neben dem Bedienen von Anforderungen aus bestehenden Geometriedaten werden bei 416 angeforderte Geometrie- und/oder Beschleunigungsstrukturelemente erzeugt. Während einer solchen Erzeugung können bei 418 Metadaten betreffs einer solchen Erzeugung gesammelt werden. Solche Metadaten können eine Größe der erzeugten Daten, ein Speicherzugangsmuster für Quellengeometrie, einen Betrag an zum Erzeugen der Geometrie erforderlicher Berechnung und so fort umfassen. Diese Metadaten können bei Planung bei 414 benutzt werden, wie auch Bestimmen von Cache-Speicherung solcher Daten (unten beschrieben). Bei 419 können Verbraucher von erzeugten Daten solche Daten nach Bedarf benutzen. Solche Nutzung kann über eine Zeitdauer stattfinden und kann gleichzeitig mit der Erzeugung anderer Daten stattfinden. Handlung 419 ist hauptsächlich zum Adressieren der Anwendbarkeit von Handlungen 420426 enthalten, die folgen.
  • Bei 420 werden Cache-Speicherungs-/Cache-Speicherbarkeitseigenschaften für erzeugte Geometrie- und/oder Beschleunigungsdaten bestimmt. Solche Bestimmung kann Indizien 424 von Bedarf einer solchen Geometrie und/oder Beschleunigungsstrukturelemente benutzen. Solche Bestimmung kann auch bei 418 gesammelte Metadaten benutzen. Zum Beispiel kann Geometrie, die einen großen Teil von Berechnung erforderte, höher für Cache-Speicherung eingestuft werden, als andere Geometrie. Die Cache-Speicherungs-/Cache-Speicherbarkeitseigenschaften können durch Anweisen eines Cache-Kohärenzmanagers oder Cache-Ersatzmanagers zum Erwarten einer bestimmten Anzahl von Lesungen für einen gegebenen Satz Daten bewirkt werden, und dann zu erlauben, dass die Daten ausgestoßen werden.
  • Bei 426 können auf Ausführungsmodule gerichtete Planungshinweise erzeugt werden. Zum Beispiel kann Geometrieverarbeitung asynchron vom Verbrauch der Geometrie stattfinden. Obwohl erwartet werden kann, dass ein gegebener Verbraucher über die Verfügbarkeit von Geometrie gewarnt werden kann, die auf eine gegebene Anforderung reagiert, als Grundhinweis, können Hinweise auch den Verbraucher warnen, dass einer solchen Geometrie eine gewisse Cache-Speicherungspriorität erteilt worden ist. Falls zum Beispiel gewissen Daten eine niedrige Cache-Speicherungspriorität erteilt worden ist, dann ist es wahrscheinlicher, dass die Daten überschrieben oder zu einer anderen Schicht der Cache-Hierarchie oder zum Hauptspeicher ausgestoßen (ausgegossen) werden können. Damit kann der Verbraucher wählen, Nutzung dieser Daten zu priorisieren. Einige Implementierungen können die Kombination von Cache-Speicherungs- und Planungshinweisen zum Bewirken einer relativen Reihenfolge von Verbrauch der Geometriedaten benutzen. Zum Beispiel können einige erzeugte Geometriedaten anfänglich Cache-gespeichert und einige im Hauptspeicher gespeichert werden und Planungshinweise können identifizieren, welche Daten sich wo befinden. Von Verbrauchern mit im Cache-gespeicherten Daten würde erwartet werden, dass sie diese Daten in einem Planungsfenster benutzen, da sie mit fortschreitender Zeit wahrscheinlicher überschrieben werden oder sogar ausdrücklich durch andere Geometriedaten überschrieben oder in den Hauptspeicher ausgeschüttet werden können.
  • 11 zeigt ein Beispiel von Daten 453, die für Beschleunigungsstrukturelemente gespeichert werden können, die bei der Planung von Erzeugung von Geometrie oder Nutzung erzeugter Geometrie in solchen Elementen benutzt werden können. Beispielsweise eine Anzahl von Strahlgruppen, die dieses Element durchqueren müssen. Hinweise, was für eine feinkörnige Beschleunigungsstruktur sich in diesem groben Element befindet, kann bereitgestellt werden. Solche Hinweise können umfassen, wie viele Elemente sich im groben Element befinden. Hinweise betreffs Grundelementeigenschaften können bereitgestellt werden (z. B. eine Anzahl von Grundelementen). Es können Komplexitätshinweise bereitgestellt werden; solche Hinweise betreffen einen Betrag an Ressourcenverbrauch erforderlich zum Erzeugen von Beschleunigungsstrukturelementen und/oder Endgeometrie in diesem grobkörnigen Element.
  • 12 zeigt ein Beispiel 460 von Strahlverfolgung gemäß dem Durchlaufzustand. Zum Beispiel können Strahlen gleichzeitig in mehreren verschiedenen Teilen einer Beschleunigungsstruktur durchlaufen werden. Unterschiedliche Rechenarchitekturen können Strahlendurchlauf unterschiedlich ausführen. Zum Beispiel können einige Implementierungen einen Thread für jeden Strahl erzeugen und dieser Thread ist für den vollen Durchlauf des Strahls verantwortlich. Dann kann Beispiel 460 verfolgen, welches Beschleunigungsstrukturelement als nächstes durch jeden Strahl besucht werden würde. Andere Implementierungen können eine Menge von Threads (oder sonstige Funktionselemente) unterhalten, die beispielsweise für das Durchlaufen veränderlicher Strahlen und/oder zum Prüfen unterschiedlicher Mengen von Strahlen auf Kreuzung mit unterschiedlichen Mengen von Grundelementen bestimmt sind.
  • 13 zeigt ein Beispiel von Modulen, die an einer solchen bedarfsweisen Beschleunigungsstruktur/Geometrieerzeugung und Verbrauch beteiligt sein können. Zum Beispiel sind Geometrieverfahren 462 und Beschleunigungsstrukturverfahren 464 für das Erzeugen von Endgeometrie bzw. Beschleunigungsstrukturen verantwortlich. Strahlverfolgungsverfahren 466 und Geometriekachelungsverfahren 468 sind beispielhafte Verbraucher solcher Geometrie. Diese Verfahren können mit Speicherarbitrierung/Steuerung 470 kommunizieren, die zum Verwalten von Cache-Hierarchie 476 verantwortlich ist (und zum Beispiel Hauptspeicher 478); dieses Element kann die oben beschriebenen Cache-Speicherungshinweise benutzen. Prozessorplanung 474 ist verantwortlich für grobkörnige Planung oder Zuteilung verschiedener Aufgaben zu verschiedenen Rechnerressourcen. Prozessorplanung 474 kann die oben beschriebenen Prozessorplanungshinweise einnehmen und benutzen. Elemente 470 und 474 können zum Ausführen abgestufter Übertragung und Verbrauch erzeugter Daten koordinieren.
  • 14 zeigt Aspekte einer beispielhaften Ausführungseinheit, die die in 13 gezeigten Elemente ausführen kann. Ein Grobplaner 502 teilt Aufgaben über einen Satz vektorisierter Ausführungseinheiten 504 zu, von denen jeder eine Anweisungshol-/decodiereinheit und einen Satz von durch diese Hohl-/Decodiereinheit getriebenen Verarbeitungselementen umfassen kann. Der Grobplaner 502 kann auf einer vektorisierten Ausführungseinheit oder auf einem (nicht gezeigten) Verwaltungs-prozessor ausführen. Diese vektorisierten Ausführungseinheiten 504506 kommunizieren mit einer Cache-Hierarchie 510. Cache-Hierarchie 510 kann einen Satz privater Speicher (z. B. einen L1-Cache) für jede Ausführungseinheit wie auch andere Stufen von Cache-Hierarchie bereitstellen. Cache-Hierarchie 510 kann mit einem Hauptspeicher 512 kommunizieren. Eine Cache-Kohärenzsteuerung 515 kann Cache-Speicherungshinweise verbrauchen und steuern, welche Daten aus der Cache-Hierarchie 510 ausgestoßen werden und welche Daten vorabgerufen werden. Feste Beschleuniger und/oder Beschleuniger mit begrenzter Programmierbarkeit 514 können für einige Arten von Verarbeitung implementiert sein. Zum Beispiel kann ein Strahl-/Grundelement-Kreuzungsprüfelement fester Funktion bereitgestellt sein.
  • 15 zeigt ein Beispiel einer vektorisierten Ausführungseinheit. Ein solches Beispiel umfasst eine Eingangswarteschlange 524 zum Empfangen von Definitionen von Aufgaben, eine Vorstufe, die Daten unterhalten kann, die verschiedene Threads im Flug auf der Einheit verfolgen und Anweisungen decodieren können. Ein feinkörniger Planer 522 kann auf Taktzyklus-Mal-Taktzyklus-Basis bestimmen, welchem Thread erlaubt wird, Anweisung(en) auf einem Satz von SIMD-Ausführungseinheiten 526527 auszuführen. Jede dieser Einheiten kann auf eine Registerdatei (nicht getrennt gezeigt) zugreifen. Eine solche Registerdatei kann als ein L1-Cache implementiert sein, oder teilweise als ein Cache und teilweise als eine Registerdatei (z. B. irgendein Teil davon kann durch Cache-Kohärenzsteuerung 515 gemanagt werden und irgendein Teil nicht).
  • Diese Offenbarungen können sich in ein durchsatzorientiertes Universalrechensystem zerlegen, wo bedarfsweise Geometrieverarbeitung zusammen mit anderer Berechnung mit einem Planungsverfahren geplant werden kann, das Arbeitslasten nach Planungsschlüsseln gruppiert. Diese Planungsschlüssel können eine Mehrzahl spezieller aufgabenbasierter Informationen darstellen. Zum Beispiel kann ein Planungsschlüssel sich auf ein Element einer grobkörnigen Beschleunigungsstruktur beziehen und, wenn er durch ein Geometrieerzeugungsverfahren referenziert wird, kann er als eine Anforderung für bedarfsweise Geometrieerzeugung geplant werden. Weitere beispielhafte aufgabenorientierte Verfahren können mehrkörnige Aufgaben wie beispielsweise Prüfen eines Strahls auf Kreuzung mit einem Grundelement oder Prüfen eines Strahls auf Kreuzung mit einem Beschleunigungsstrukturelement umfassen. Diese Planungsaspekte können auf andere Berechnung angewandt werden, wo es einen Hersteller eines Datenelements gibt, das durch eine andere Recheneinheit oder ein anderes Verarbeitungselement verbraucht wird wie beispielsweise Videodecodierer und Mustererkennungskerne, Kompressoren und so weiter. Prozesse können durch einen Planungsprozess danach behandelt werden, ob sie jitter- oder latenztolerant sind. Zum Beispiel sind einige Prozesse wie beispielsweise ein Mikrofoneingangsprozessor nicht jittertolerant und daher würde ein Planungsprozess Mikrofoneingangsverarbeitung nicht als Partner von Strahldurchquerungsaufgaben planen.
  • Im Zusammenhang mit Grafikverarbeitung kann ein Rahmenschattierer durch eine Verbraucher-Strahldurchquerungseinheit zu durchlaufende Strahlen erzeugen. Ein Schattierer kann durch einen weiteren Schattierer zu verbrauchende Daten erzeugen. Zum Beispiel könnte ein Schattierer wünschen, dass ein weiterer Schattierer ausführt aus einem Grund wie Bearbeiten des Austritts aus einem Werkstoff, der entfernungsabhängige Dämpfung anlegt (z. B. trübes Wasser), wo das andere Material (Schattierer) durch einen dem Strahl zugeordneten Wert angegeben oder beeinflusst werden könnte. Damit kann eine Kreuzung zwei verschiedene Schattierer zum Ausführen auslösen, die seriell oder parallel ausführen können (seriell, wo ein Schattierer Eingaben für den nächsten Schattierer bereitstellen kann). Schließungen, wo ein Schattierer ein Zwischenergebnis ausgibt, das eine Eingabe in einer Schließung ist, ist ebenfalls ein Modul, das gemäß diesen Offenbarungen geplant werden kann.
  • Spezieller in Bezug auf Geometrieverarbeitung kann ein Scheitelschattierer oder Geometrieschattierer (der Polygone/geometrische Grundelemente ausgibt) seine Ausgabe zu einem Hierarchiebauprozess senden lassen oder in eine Warteschlange dahin einreihen lassen. Beitragswerte können durch verschiedene Erzeuger erzeugt werden und können eine Warteschlange zu einem Kern durchlaufen, der das Lesen-Abändern-Schreiben der Pixelwerte auf eine Cache-freundliche Weise durchführt.
  • Erzeuger können Ausgaben in eine durch einen oder mehrere Verbraucher zu lesende Warteschlange einreihen; Sammlungen können basierend auf in eine Warteschlange eingereihten Ausgaben gebildet werden. Zum Beispiel kann bei Strahlverfolgung ein Strahl in eine oder mehrere Sammlungen für die jeweiligen Kinderelemente abgeändert werden, die durch eine oder mehrere Prüfeinheiten gelesen werden. In einigen Fällen kann ein Ordnungsherstellungsmodul eine Ordnung für eine Mehrzahl von Partnersammlungen setzen (z. B. einen Satz von Elementen, die alle hinsichtlich einem oder mehrerer Strahlen zu prüfen sind). Zum Beispiel kann ein Element zum Prüfen gegenüber anderen Elementen priorisiert werden, wenn es einen niedrigeren Durchschnittsabstand zu unterschiedlichen hinsichtlich aller dieser Elemente zu prüfenden Strahlen aufweist. Ein zufallsmäßiger oder repräsentativer Strahl kann für die Abstandsprüfung ausgewählt werden.
  • Strahlen können von Oberflächen abgegeben werden, die als sichtbar durch ein Rasterisierungsverfahren bestimmt wurden. Jedoch können auch Strahlen auf Kreuzung gegen Modelle niedriger Auflösung (z. B. niedriger Polygonzählung) von Objekten befindlich in einer gegebenen 3-D-Szene geprüft werden, während Rasterisierung Modelle höherer Auflösung für die gleichen Objekte benutzen kann. So sollte man verstehen, dass Verfolgen von Strahlen von einer durch ein Rasterisierungsverfahren identifizierten sichtbaren Oberfläche nicht Bestimmen eines Ursprungs und/oder einer Richtung für einen gegebenen Strahl basierend auf zur Verwendung in dem Strahlverfolgungszusammenhang definierten Geometriedaten ausschließt. Zum Beispiel könnte eine Stelle einer Oberfläche, wo ein Strahl für die niedrigen gegenüber den hohen Polygonzählungen abgegeben werden würde, unterschiedlich sein; jedoch umfasst der Rahmen der Ansprüche Definieren von Strahlen basierend auf jedem beteiligten Modell oder basierend beispielsweise auf einer absoluten Stelle im 3-D-Raum.
  • Die Reihenfolge von in den Diagrammen gezeigten Aktivitäten stellt keine Begrenzung dar, dass solche Aktivitäten vorzugsweise in dieser Reihenfolge durchgeführt werden müssen oder bevorzugt sind. Zusätzlich könnte es Situationen geben, wo nicht alle gezeigten Aktivitäten für eine gegebene Synchronisationsoperation durchgeführt werden. Zum Beispiel könnten einige Daten oder Tabellenorganisation oder Formatierung bereits durchgeführt worden sein und so würden solche Aktivitäten nicht wieder durchgeführt werden müssen.
  • Wie aus der Offenbarung offenbar sein würde, können einige der Komponenten und offenbarten Funktionalität in Hardware, Software, Firmware oder jeder Kombination derselben ausgeführt sein. Wenn sie in Firmware und/oder Software implementiert sind, können die Funktionen als eine oder mehrere Anweisungen oder Code auf einem computerlesbaren Medium gespeichert sein, in einem Beispiel sind die Medien nicht kurzzeitig. Beispiele umfassen ein mit einer Datenstruktur codiertes computerlesbares Medium und ein mit einem Computerprogramm codiertes computerlesbares Medium. Maschinenlesbare Medien umfassen nicht kurzzeitige maschinenlesbare Medien. Sonstige Arten von Medien umfassen Übertragungsmedien. Ein nicht kurzzeitiges Medium kann jedes fassbare Medium sein, auf das durch eine Maschine zugegriffen werden kann. Beispielsweise und nicht als Begrenzung kann ein solches computerlesbares Medium RAM, ROM, EEPROM, CD-ROM oder sonstige optische Plattenspeicherung, Magnetplattenspeicherung oder sonstige Magnetspeichervorrichtungen umfassen, oder jedes andere Medium, das zum Speichern gewünschten Programmcodes in der Form von Anweisungen oder Datenstrukturen benutzt werden kann und auf das durch eine Maschine zugegriffen werden kann.
  • Der Fachmann wird auch zu schätzen wissen, dass die verschiedenen beispielhaften Logikblöcke, Modulen, Schaltungen und in Verbindung mit den hier offenbarten Ausführungsformen beschriebene Algorithmusschritte als Elektronikhardware, Computersoftware in einem computerlesbaren Medium oder Kombinationen von beiden implementiert sein können. Zum deutlichen Darstellen dieser Austauschbarkeit von Hardware und Software sind verschiedene beispielhafte Komponenten, Blöcke, Module, Schaltungen und Schritte oben allgemein in ihrer Funktionalität beschrieben worden. Ob diese Funktionalität als Hardware oder Software implementiert ist, hängt von der bestimmten Anwendung und den dem Gesamtsystem auferlegten Konstruktionsbeschränkungen ab. Fachmänner können die beschriebene Funktionalität auf veränderliche Weisen für jede bestimmte Anwendung implementieren, aber solche Ausführungsentscheidungen sollten nicht so ausgelegt werden, dass sie ein Verlassen des Rahmens der vorliegenden Erfindung hervorrufen.
  • Die Beschreibung der Aspekte und Merkmale ist bereitgestellt, um jedem Fachmann zu ermöglichen, die Systeme, Geräte herzustellen und zu verwenden und die offenbarten Verfahren durchzuführen. Dem Fachmann werden verschiedene Abänderungen leicht offensichtlich sein und die in dieser Schrift beschriebenen Grundsätze können auf andere Aspekte angewandt werden, ohne von dem Wesen oder Schutzbereich der Offenbarung zu weichen. So soll die Beschreibung die Ansprüche nicht begrenzen. Stattdessen soll den Ansprüchen ein den hier offenbarten Grundsätzen und neuartigen Merkmalen entsprechender Schutzbereich zugeordnet sein.
  • Die Zeichnungen umfassen relative Anordnungen von Struktur und Ordnung von Prozesskomponenten einzig als Hilfe zum Verständnis der Beschreibung. Diese relativen Anordnungen und Nummerierung ist keine implizierte Offenbarung irgendeiner speziellen Begrenzung der Reihenfolge oder Anordnung von Elementen und Schritten in den Ansprüchen. Prozessbegrenzungen können sequenziell ausgetauscht werden, ohne von dem Schutzbereich der Offenbarung zu weichen, und Mittel-Plus-Funktionsklausen in den Ansprüchen sollen die als die angeführte Funktion durchführende Strukturen abdecken, die nicht nur strukturmäßige Entsprechungen sondern auch gleichwertige Strukturen umfassen.
  • Obwohl eine Mehrzahl von Beispielen und sonstige Informationen zum Erläutern von Aspekten innerhalb des Schutzumfangs der beiliegenden Ansprüche benutzt wurden, sollte keine Begrenzung der Ansprüche auf Grundlage bestimmter Merkmale oder Anordnungen in solchen Beispielen impliziert sein, da ein gewöhnlicher Fachmann in der Lage sein würde, diese Beispiele zum Ableiten einer großen Mehrzahl von Ausführungen zu benutzen. Ferner, und obwohl irgendein Gegenstand einer für Beispiele von Strukturmerkmalen und/oder Verfahrensschritten spezifischen Sprache beschrieben sein könnte, versteht es sich, dass der in den beiliegenden Ansprüchen definierte Gegenstand nicht unbedingt auf diese beschriebenen Merkmale oder Handlungen begrenzt ist. Zum Beispiel kann eine solche Funktionalität unterschiedlich verteilt sein oder in anderen Komponenten als den, zusätzlich zu den oder weniger als den hier identifizierten durchgeführt werden. Stattdessen sind die beschriebenen Merkmale und Schritte als Beispiele von Komponenten von Systemen und Verfahren innerhalb des Schutzumfangs der beiliegenden Ansprüche offenbart.

Claims (36)

  1. Maschinenimplementiertes Verfahren zur Verwendung in 3-D-Wiedergabe, umfassend: Zugreifen auf in einer 3-D-Szene befindliche Geometrie beschreibende Geometriedaten, aus der eine Wiedergabe zu erzeugen ist, wobei die Daten Geometriesteuerpunkte und Verfahrensänderungen beschreiben, die an den Geometriesteuerpunkten durchgeführt werden können, um Endgeometrie zu erzeugen, auf der die Wiedergabe basieren wird; und Erzeugen unter Verwendung der Endgeometrie von Geometriegrößendaten, die jeweils eine Zuordnung zwischen einem in der 3-D-Szene definierten Volumen und einer Auswahl der Geometriesteuerpunkte herstellen, die nach Verfahrensänderung gegebenenfalls Endgeometrie erzeugen, die jeweils in diesem Volumen liegt.
  2. Maschinenimplementiertes Verfahren zur Verwendung in 3-D-Wiedergabe nach Anspruch 1, ferner umfassend Definieren von in der 3-D-Szene zu verfolgenden Strahlen durch Identifizieren eines Volumens in dem 3-D-Raum, in dem eine Teilmenge der Strahlen auf Kreuzung zu prüfen ist, unter Verwendung der Geometriegrößendaten zum Identifizieren von Geometriesteuerpunkten, die Endgeometrie in dem identifizierten Volumen in dem 3-D-Raum erzeugen, danach Ausführen von Verfahrensänderungen für diese identifizierten Geometriesteuerpunkte zum Erzeugen von Endgeometrie in dem identifizierten Volumen und danach Prüfen von Endgeometrie auf Kreuzung mit der Teilmenge der Strahlen.
  3. Maschinenimplementiertes Verfahren zur Verwendung in 3-D-Wiedergabe nach Anspruch 1, ferner umfassend ein Definieren der Volumina im 3-D-Raum als umfassend Kegelstümpfe für jede Schirmraumkachel einer Mehrzahl von Kacheln, jeweils umfassend eine Mehrzahl von Pixeln und die kollektiv ein wiederzugebendes 2-D-Bild definieren.
  4. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 1, ferner umfassend ein Erzeugen einer Beschleunigungsstruktur, umfassend jeweilige Teile der 3-D-Szene begrenzende Elemente und Verwenden der Beschleunigungsstruktur zum Identifizieren jeweiliger Teilmengen der auf Kreuzung mit verschiedenen Strahlen zu prüfenden Endgeometrie.
  5. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 1, ferner umfassend ein Verwenden von Hinweisdaten zum Definieren der Volumina in der 3-D-Szene, auf die in den Geometriegrößendaten Bezug genommen wird.
  6. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 1, ferner umfassend ein Zuordnen von Verfahrensänderungen zu Geometriegrößendaten, die erforderlich sind, Endgeometrie in einem Volumen der 3-D-Szene zu erzeugen, auf die sich die Geometriegrößendaten beziehen.
  7. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 6, ferner umfassend ein Herstellen einer Wiedergabe unter Verwendung sowohl eines Rasterisierungsteilsystems als auch eines Strahlverfolgungsteilsystems, die jeweils Anforderungen nach Teilen von Endgeometrie treffen, und in Reaktion auf die Anforderungen Erzeugen der Endgeometrie durch Durchführen der mit den die angeforderten Teile der Endgeometrie eingrenzenden Volumina der 3-D-Szene verbundenen Geometriegrößendaten verbundenen Verfahrensänderungen.
  8. Geometrieverarbeitungsverfahren zur 3-D-Wiedergaben nach Anspruch 7, wobei das Verfahren ferner ein Erzeugen von Endgeometrie mit einer Detailstufe, abhängig davon, ob die Anforderung von dem Strahlverfolgungsteilsystem oder dem Rasterisierungsteilsystem kam, umfasst.
  9. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 7, wobei das Verfahren ferner ein Erzeugen sowohl einer abgeschlossenen Beschleunigungsstruktur innerhalb eines Teils der 3-D-Szene als auch Endgeometrie innerhalb dieses Teils der 3-D-Szene in Reaktion auf eine Anforderung von dem Strahlverfolgungsteilsystem umfasst.
  10. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 1, ferner umfassend ein Erzeugen einer groben Beschleunigungsstruktur mit Blattelementen und ein Verwenden von Blattelementen der groben Beschleunigungsstruktur als die Geometriegrößendaten.
  11. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 10, ferner umfassend ein Sammeln von gegen Elemente der groben Beschleunigungsstruktur zu verfolgenden Strahlen und Durchqueren von Strahlen, gesammelt gegen ein bestimmtes Element der groben Beschleunigungsstruktur, durch dynamisches Erzeugen einer abgeschlossenen Beschleunigungsstruktur innerhalb dieses bestimmten Elements der groben Beschleunigungsstruktur vor einem Planen von Durchquerungsoperationen für die gesammelten Strahlen.
  12. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 11, ferner umfassend ein Erzeugen von Endgeometrie in Teilen der abgeschlossenen Beschleunigungsstruktur in Reaktion auf eine Planeranzeige.
  13. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 1, wobei das Zugreifen auf und Erzeugen in einem Vorwegdurchlauf über Quellengeometriedaten durchgeführt wird, wobei die Quellengeometriedaten Scheiteldaten und zwei oder mehr Sätzen von Scheitel-Verbindbarkeitsdaten umfassen.
  14. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 1, wobei die Verfahrensänderungen, die an den Geometriesteuerpunkten durchgeführt werden können, zum Erzeugen abgeschlossener Geometrie zur Strahlverfolgung zu benutzende Verfahrensänderungen und zum Erzeugen abgeschlossener Geometrie für Rasterisierung zu benutzende Verfahrensänderungen umfassen.
  15. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 1, wobei das Erzeugen der Geometriegrößendaten ein Erzeugen eines einen zu erwartenden Betrag an Geometrieerweiterung bei Erzeugen von Endgeometrie für das in der 3-D-Szene definierte Volumen, das mit diesem Teil von Geometriegrößendaten verbunden ist, anzeigenden Hinweis umfasst.
  16. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 1, wobei das Zugreifen ein Zugreifen auf einen Hinweis umfasst, der mit dem Steuerpunkt verbunden ist, der eine Grenze an einem Betrag von Geometrie anzeigt, der sich ergibt bei Durchführen von Verfahrensänderung unter Verwendung dieses Steuerpunkts zum Erzeugen der Endgeometrie.
  17. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe, umfassend: Erzeugen von geometrischen Grundelementen befindlich in einer 3-D-Szene auf Quellengeometriedaten; Definieren eines Satzes von Kachelobjektlisten, wobei jede Kachelobjektliste Daten enthält, die anzeigen, welche Quellengeometrie aus dem Satz von Quellengeometrie geometrische Grundelemente ergibt, die innerhalb einer Grenze einer jeweiligen Kachel von Pixeln eines 2-D-Bildes liegen; und Erzeugen einer Beschleunigungsstruktur, umfassend einen Graphen von Elementen, jeweils definierend ein jeweiliges Volumen in der 3-D-Szene; Wiedergeben des 2-D-Bildes aus der Szene durch Verwenden der Kachelobjektlisten zum Identifizieren einer sichtbaren Oberfläche an jedem Pixel des 2-D-Bildes, und Verfolgen von Strahlen in der 3-D-Szene unter Verwendung der Beschleunigungsstruktur aus den identifizierten sichtbaren Oberflächen zum Identifizieren eines durch jeden der Strahlen gegebenenfalls geschnittenen Grundelements und Erzeugen von zu einer Endschattierung für die sichtbare Oberfläche an jedem Pixel beitragenden Informationen.
  18. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 17, wobei die Beschleunigungsstruktur grobe Beschleunigungsstrukturelemente umfasst, die jeweils mit Daten verbunden sind, die anzeigen, wie eine Endbeschleunigungsstruktur für im Volumen in der 3-D-Szene definiert durch dieses grobe Beschleunigungsstrukturelement befindliche geometrische Grundelemente erzeugt werden sollte.
  19. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 17, wobei die Beschleunigungsstruktur für geometrische Grundelemente definiert zur Verwendung bei Strahlverfolgung erzeugt wird, die basierend auf einem Teil der Quellengeometriedaten erzeugt werden und die ein in der 3-D-Szene befindliches Objekt mit einer kleineren Anzahl von Grundelementen als eine Anzahl von zum Darstellen dieses gleichen Objekts zum Definieren eines Satzes von Kachelobjektlisten benutzten Grundelementen darstellen.
  20. Geometrieverarbeitungsverfahren zur 3-D-Wiedergabe nach Anspruch 17, wobei jedes Element der Beschleunigungsstruktur einen jeweiligen Teil der Quellengeometrie identifiziert, der einen Satz von Endgeometrie innerhalb dieses Elements erzeugt, und das Verfahren ferner ein Sammeln von Strahlen in innerhalb jeweiliger Elemente der Beschleunigungsstruktur zu durchquerende Sammlungen und dann ein Erzeugen der Endbeschleunigungsstruktur für jedes Element zum Verfolgen einer jeweiligen Sammlung von Strahlen in diesem Element umfasst.
  21. Verfahren zur 3-D-Geometrieverarbeitung zur Grafikwiedergabe umfassend: Definieren eines jeweiligen Satzes von an Teilen von Quellengeometrie durchzuführenden Änderungsverfahren zum Erzeugen von in jeweiligen Teilen einer 3-D-Szene befindlicher Endgeometrie; Erzeugen eines jeweiligen Elements einer Beschleunigungsstruktur, das jeden der Teile der 3-D-Szene begrenzt und Assoziieren mit dem Element des jeweiligen Satzes von Änderungsverfahren durchgeführt zum Erzeugen einer Endgeometrie in diesem Element; Definieren eines Satzes von Kachelobjektlisten, wobei jede Kachelobjektliste identifiziert: Quellengeometrie und einen jeweiligen Satz von an der identifizierten Quellengeometrie durchzuführenden Änderungsverfahren zum Erzeugen von Endgeometrie innerhalb einer Kachel von Pixeln in einem aus der 3-D-Szene wiederzugebenden 2-D-Bild; und Wiedergeben des 2-D-Bildes durch Identifizieren von sichtbaren Oberflächen für Pixel innerhalb des 2-D-Bildes auf einer kachelweisen Basis, wobei das Wiedergeben umfasst Identifizieren von Quellengeometrie aus der Kachelobjektliste für jede Kachel, und Durchführen des Satzes von Änderungsverfahren an der Quellengeometrie zum Erzeugen von Endgeometrie, wobei eine sichtbare Oberfläche für jedes Pixel in dieser Kachel basierend auf der erzeugten Endgeometrie identifiziert wird und wobei zum Vollenden der Wiedergabe für eine Gruppe der Pixel Strahlen aus der sichtbaren Oberfläche für Pixel abgegeben und in der 3-D-Szene durchquert werden, und Durchqueren der Strahlen in der 3-D-Szene.
  22. Verfahren zur 3-D-Geometrieverarbeitung zur Grafikwiedergabe umfassend: Erzeugen von Endgeometrie aus Quellengeometrie durch Anwenden einer oder mehrerer Geometrieänderungsverfahren auf die Quellengeometrie, wobei die Erzeugung der Endgeometrie begrenzt ist auf eine Teilmenge der Endgeometrie befindlich in einer 3-D-Szene, aus der eine 2-D-Wiedergabe hergestellt wird, und Steuern der Cache-Speicherung bestimmter Teile der erzeugten Endgeometrie basierend auf für die bestimmten Teile der erzeugten Endgeometrie durch einen oder mehrere Verbraucher derselben angezeigtem Bedarf.
  23. Verfahren zur 3-D-Geometrieverarbeitung zur Grafikwiedergabe nach Anspruch 22 ferner umfassend Verfolgen von Bedarf an bestimmten Teilen der erzeugten Endgeometrie und Herstellen einer relativen Priorisierung davon, welche Teile der erzeugten Endgeometrie im Cache zu speichern sind oder aus einem Cache ausgestoßen werden können.
  24. Verfahren zur 3-D-Geometrieverarbeitung zur Grafikwiedergabe umfassend: Erzeugen von Endgeometrie aus Quellengeometrie durch Anwenden eines oder mehrerer Geometrieänderungsverfahren auf die Quellengeometrie, wobei das Erzeugen gekennzeichnet ist durch eine Mehrzahl diskreter Erzeugungen, die jeweils Endgeometrie erzeugen begrenzt auf eine Teilmenge von Endgeometrie befindlich in einer 3-D-Szene; und Planen der Mehrzahl diskreter Erzeugungen der Endgeometrie durch Sammeln von Anforderungen von bestimmten Teilmengen von Endgeometrie in Gruppen und basierend auf einem Planungskriterium und relatives Ordnen der Mehrzahl von diskreten Erzeugungen gemäß den Planungskriterien.
  25. Verfahren zur 3-D-Geometrieverarbeitung zur Grafikwiedergabe nach Anspruch 24, wobei die Anforderungen auf einem Rasterisierungsteilsystem und einem Strahlverfolgungsteilsystem gesammelt werden.
  26. Verfahren zur 3-D-Geometrieverarbeitung zur Grafikwiedergabe nach Anspruch 24, wobei die Anforderungen auf Geometrie aus unterschiedlichen Rahmen bezogen sein können, die in einer Rahmenfolge wiedergegeben werden.
  27. Verfahren zur 3-D-Geometrieverarbeitung zur Grafikwiedergabe nach Anspruch 24, wobei die Planungskriterien Zählen einer Anzahl von Anforderungen in unterschiedlichen Unterteilen von Geometrie und Auswählen einer diskreten Erzeugung umfassen, die Endgeometrie in einem Unterteil erzeugt, das mehr Anforderungen als andere Unterteile aufweist.
  28. Verfahren zur 3-D-Geometrieverarbeitung zur Grafikwiedergabe nach Anspruch 24, wobei die Planungskriterien Priorisieren von aus Wiedergabeverfahren stammenden Anforderungen umfasst, die auf frühere Rahmen in einer Folge von wiedergegebenen Rahmen bezogen sind.
  29. Verfahren zur 3-D-Geometrieverarbeitung zur Grafikwiedergabe nach Anspruch 24, wobei die Planungskriterien ein Teil eines Planungsverfahrens sind, das ein Bündel von Recheneinheiten zwischen Geometrieverarbeitung und Schattierung zuteilt.
  30. Grafikwiedergabesystem umfassend: ein Geometrieverarbeitungselement ausgelegt zum Zugreifen auf in einer 3-D-Szene befindliche Geometrie beschreibende Geometriedaten, aus der eine Wiedergabe zu erzeugen ist, wobei die Geometriedaten Geometriesteuerpunkte und Verfahrensabänderungen beschreiben, die an den Geometriesteuerpunkten durchgeführt werden können zum Erzeugen der Endgeometrie, auf der die Wiedergabe basieren wird, und zum Erzeugen unter Verwendung der Endgeometrie von Geometriegrößendaten, die jeweils eine Verbindung zwischen einem in der 3-D-Szene definierten Volumen und einer Auswahl der Geometriesteuerpunkte herstellen, die nach Verfahrensänderung gegebenenfalls Endgeometrie erzeugen, die jeweils innerhalb dieses Volumens liegt; und ein Wiedergabeteilsystem ausgelegt zum Erzeugen von Anforderungen nach abgeschlossener Geometrie innerhalb von Teilen der 3-D-Szene, wobei die Anforderungen durch das Geometrieverarbeitungselement zu besorgen sind, und zum Verwenden abgeschlossener Geometrie zurückgesandt in Reaktion auf die Anforderungen zum Erzeugen einer Wiedergabe aus der 3-D-Szene.
  31. Grafikwiedergabesystem nach Anspruch 30, wobei das Wiedergabeteilsystem ein Strahlverfolgungsteilsystem zum Verfolgen von Strahlen in der 3-D-Szene umfasst, wobei das Strahlverfolgungsteilsystem ausgelegt ist zum Identifizieren eines Volumens in der 3-D-Szene, in der eine Teilmenge von Strahlen auf Kreuzung zu prüfen ist, und ein Rasterisierungsteilsystem.
  32. Grafikwiedergabesystem umfassend: ein Geometrieverarbeitungselement einrichtbar zum Erzeugen von Endgeometrie aus Quellengeometrie durch Anwenden eines oder mehrerer Geometrieänderungsverfahren auf die Quellengeometrie, wobei das Erzeugen gekennzeichnet ist durch eine Mehrzahl diskreter Erzeugungen in Reaktion auf aus einem Wiedergabeteilsystem empfangenen Anforderungen, die jeweils Endgeometrie begrenzt auf eine Teilmenge von in einer 3-D-Szene befindlicher Endgeometrie erzeugen; und einen Planer ausgelegt zum Planen der Mehrzahl diskreter Erzeugungen der Endgeometrie durch Sammeln von Anforderungen von bestimmten Teilmengen von Endgeometrie in Gruppen basierend auf einem Planungskriterium und relatives Ordnen der Mehrzahl diskreter Erzeugungen gemäß den Planungskriterien.
  33. Grafikwiedergabesystem umfassend: ein Geometrieverarbeitungselement fähig zum Erzeugen von Endgeometrie aus Quellengeometrie; und eine Speichersteuerung ausgelegt zum Steuern der Cache-Speicherung bestimmter Teile der erzeugten Endgeometrie basierend auf für die bestimmten Teile der erzeugten Endgeometrie durch ein oder mehrere Wiedergabeteilsysteme angezeigtem Bedarf, die zur Verwendung der Endgeometrie in einem Wiedergabeprozess ausgelegt sind.
  34. Grafikwiedergabesystem ausgelegt zum Ausführen jedes Verfahrens von Ansprüchen 1–29.
  35. Grafikwiedergabesystem ausgelegt zum Fungieren gemäß der Offenbarung.
  36. Verfahren zum Erzeugen von Endgeometrie zum Wiedergeben gemäß der Offenbarung.
DE112013005255.5T 2012-11-02 2013-11-01 Bedarfsweise Geometrie- und Beschleunigungsstrukturerzeugung Pending DE112013005255T5 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201261722109P 2012-11-02 2012-11-02
US61/722,109 2012-11-02
US201361798786P 2013-03-15 2013-03-15
US61/798,786 2013-03-15
US201361897701P 2013-10-30 2013-10-30
US61/897,701 2013-10-30
PCT/IB2013/002935 WO2014068400A2 (en) 2012-11-02 2013-11-01 On demand geometry and acceleration structure creation

Publications (1)

Publication Number Publication Date
DE112013005255T5 true DE112013005255T5 (de) 2015-09-24

Family

ID=49767532

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013005255.5T Pending DE112013005255T5 (de) 2012-11-02 2013-11-01 Bedarfsweise Geometrie- und Beschleunigungsstrukturerzeugung

Country Status (5)

Country Link
US (6) US10186070B2 (de)
CN (3) CN104885123B (de)
DE (1) DE112013005255T5 (de)
GB (4) GB2546019B (de)
WO (1) WO2014068400A2 (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2546019B (en) 2012-11-02 2017-08-30 Imagination Tech Ltd Geometry processing method for 3-D rendering
KR102048885B1 (ko) * 2013-05-09 2019-11-26 삼성전자 주식회사 그래픽 프로세싱 유닛, 이를 포함하는 그래픽 프로세싱 시스템, 및 이를 이용한 렌더링 방법
US9659399B2 (en) * 2013-08-23 2017-05-23 Nvidia Corporation System, method, and computer program product for passing attribute structures between shader stages in a graphics pipeline
GB2526598B (en) 2014-05-29 2018-11-28 Imagination Tech Ltd Allocation of primitives to primitive blocks
US9842428B2 (en) * 2014-06-27 2017-12-12 Samsung Electronics Co., Ltd. Dynamically optimized deferred rendering pipeline
KR20160047316A (ko) * 2014-10-22 2016-05-02 삼성전자주식회사 렌더링 장치 및 방법
GB2542133B (en) * 2015-09-08 2020-05-27 Imagination Tech Ltd Graphics processing method and system for processing sub-primitives
GB2542131B (en) 2015-09-08 2019-09-11 Imagination Tech Ltd Graphics processing method and system for processing sub-primitives
US10262456B2 (en) * 2015-12-19 2019-04-16 Intel Corporation Method and apparatus for extracting and using path shading coherence in a ray tracing architecture
US9892544B2 (en) * 2015-12-22 2018-02-13 Intel Corporation Method and apparatus for load balancing in a ray tracing architecture
US20180082465A1 (en) * 2016-09-16 2018-03-22 Prasoonkumar Surti Apparatus and method for optimized tile-based rendering
US10460513B2 (en) * 2016-09-22 2019-10-29 Advanced Micro Devices, Inc. Combined world-space pipeline shader stages
KR20180050124A (ko) * 2016-11-04 2018-05-14 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
US10497150B2 (en) * 2017-01-11 2019-12-03 Arm Limited Graphics processing fragment shading by plural processing passes
GB2560709B (en) * 2017-03-14 2021-02-24 Imagination Tech Ltd Graphics processing method and system for processing sub-primitives
US10438397B2 (en) * 2017-09-15 2019-10-08 Imagination Technologies Limited Reduced acceleration structures for ray tracing systems
GB2570304B (en) * 2018-01-18 2022-06-01 Imagination Tech Ltd Topology preservation in a graphics pipeline
GB2572620C (en) * 2018-04-05 2021-10-20 Imagination Tech Ltd Accessing Primitive Data
US10733690B2 (en) * 2018-05-17 2020-08-04 Intel Corporation GPU mixed primitive topology type processing
KR102589969B1 (ko) * 2018-11-05 2023-10-16 삼성전자주식회사 지연 쉐이딩에서 보간을 수행하는 그래픽스 처리 장치, 그래픽스 처리 시스템 및 그래픽스 처리 방법
US11145025B2 (en) 2019-01-29 2021-10-12 Imagination Technologies Limited Graphics processing systems with expansion transformation stage masks
CN109949202B (zh) * 2019-02-02 2022-11-11 西安邮电大学 一种并行的图计算加速器结构
US10853994B1 (en) * 2019-05-23 2020-12-01 Nvidia Corporation Rendering scenes using a combination of raytracing and rasterization
GB2591802B (en) 2020-02-07 2022-03-23 Imagination Tech Ltd Graphics processing method and system for rendering items of geometry based on their size
GB2591803B (en) 2020-02-07 2022-02-23 Imagination Tech Ltd Graphics processing method and system for rendering items of geometry based on their size
CN111340928B (zh) * 2020-02-19 2022-05-03 杭州群核信息技术有限公司 一种结合光线跟踪的Web端实时混合渲染方法、装置及计算机设备
KR20210109265A (ko) 2020-02-27 2021-09-06 삼성전자주식회사 3차원 객체 전송 방법 및 장치
RU2736628C1 (ru) * 2020-05-17 2020-11-19 Общество с ограниченной ответственностью "ЭсЭнЭйч МейстерСофт" Способ и система рендеринга 3d моделей в браузере с использованием распределенных ресурсов
GB2592285B8 (en) 2020-08-21 2022-11-30 Imagination Tech Ltd Coherency gathering for ray tracing
CN112258412B (zh) * 2020-10-22 2021-07-13 浙江大学 基于定义域和值域的卷积近似的着色器自动滤波方法、装置和系统
US11727635B2 (en) * 2020-10-22 2023-08-15 Faro Technologies, Inc. Hybrid photogrammetry
GB2607348A (en) * 2021-06-04 2022-12-07 Advanced Risc Mach Ltd Graphics processing

Family Cites Families (68)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7215344B2 (en) * 1998-01-15 2007-05-08 3Dlabs, Inc. Ltd Triangle clipping for 3D graphics
US6466227B1 (en) * 1999-09-01 2002-10-15 Mitsubishi Electric Research Laboratories, Inc. Programmable architecture for visualizing sampled and geometry data
US6466226B1 (en) * 2000-01-10 2002-10-15 Intel Corporation Method and apparatus for pixel filtering using shared filter resource between overlay and texture mapping engines
EP1264281A4 (de) * 2000-02-25 2007-07-11 Univ New York State Res Found Anordnung und verfahren zur bearbeitung und wiedergabe eines volumen
ES2217187T3 (es) * 2000-09-05 2004-11-01 Mtu Aero Engines Gmbh Procedimiento para la modificacion del diseño de una pieza de construccion.
US6784884B1 (en) * 2000-09-29 2004-08-31 Intel Corporation Efficient parametric surface binning based on control points
US6704026B2 (en) * 2001-05-18 2004-03-09 Sun Microsystems, Inc. Graphics fragment merging for improving pixel write bandwidth
KR100503789B1 (ko) * 2002-03-11 2005-07-26 삼성전자주식회사 렌더링시스템, 렌더링방법 및 그 기록매체
GB2415117B (en) * 2002-05-10 2006-04-12 Imagination Tech Ltd An interface and method of interfacing between a parametric modelling unit and a polygon based rendering system
US7109987B2 (en) * 2004-03-02 2006-09-19 Ati Technologies Inc. Method and apparatus for dual pass adaptive tessellation
US7688323B2 (en) 2004-07-20 2010-03-30 Luxology, Llc Function portions of animation program
GB0426170D0 (en) * 2004-11-29 2004-12-29 Falanx Microsystems As Processing of computer graphics
US7466316B1 (en) 2004-12-14 2008-12-16 Nvidia Corporation Apparatus, system, and method for distributing work to integrated heterogeneous processors
US7289119B2 (en) * 2005-05-10 2007-10-30 Sony Computer Entertainment Inc. Statistical rendering acceleration
US7911474B2 (en) 2006-04-03 2011-03-22 Siemens Medical Solutions Usa, Inc. Memory management system and method for GPU-based volume rendering
US8766995B2 (en) 2006-04-26 2014-07-01 Qualcomm Incorporated Graphics system with configurable caches
GB2439129B (en) 2006-06-12 2008-11-12 Imagination Tech Ltd Parameter compaction in a tile based rendering system
US8674987B2 (en) * 2006-09-19 2014-03-18 Caustic Graphics, Inc. Dynamic ray population control
US7969434B2 (en) * 2006-09-19 2011-06-28 Caustic Graphics, Inc. Method, apparatus, and computer readable medium for accelerating intersection testing in ray-tracing rendering
US8018457B2 (en) * 2006-09-19 2011-09-13 Caustic Graphics, Inc. Ray tracing system architectures and methods
US7830379B2 (en) 2006-09-19 2010-11-09 Caustic Graphics, Inc. Architectures for parallelized intersection testing and shading for ray-tracing rendering
GB2449398B (en) * 2006-09-29 2009-02-11 Imagination Tech Ltd Improvements in memory management for systems for generating 3-dimensional computer images
US7852336B2 (en) * 2006-11-28 2010-12-14 International Business Machines Corporation Dynamic determination of optimal spatial index mapping to processor thread resources
US8018453B2 (en) * 2007-02-09 2011-09-13 International Business Machines Corporation Deferred acceleration data structure optimization for improved performance
KR101388133B1 (ko) * 2007-02-16 2014-04-23 삼성전자주식회사 2차원 실사 영상으로부터 3차원 모델을 생성하는 방법 및장치
US7812850B1 (en) 2007-06-29 2010-10-12 Adobe Systems Incorporated Editing control for spatial deformations
GB2452731B (en) * 2007-09-12 2010-01-13 Imagination Tech Ltd Methods and systems for generating 3-dimensional computer images
WO2009063319A2 (en) * 2007-11-15 2009-05-22 Mental Images Gmbh Shallow bounding volume hierarchies for accelerated ray tracing
US8237711B2 (en) * 2007-11-19 2012-08-07 Caustic Graphics, Inc. Tracing of shader-generated ray groups using coupled intersection testing
GB0723536D0 (en) * 2007-11-30 2008-01-09 Imagination Tech Ltd Multi-core geometry processing in a tile based rendering system
US8390618B2 (en) * 2008-03-03 2013-03-05 Intel Corporation Technique for improving ray tracing performance
GB2458488C (en) * 2008-03-19 2018-09-12 Imagination Tech Ltd Untransformed display lists in a tile based rendering system
CN102037497B (zh) * 2008-03-21 2014-06-11 柯斯提克绘图公司 用于光线追踪渲染的并行相交测试及着色的架构
US8379022B2 (en) * 2008-09-26 2013-02-19 Nvidia Corporation Fragment shader for a hybrid raytracing system and method of operation
GB0823254D0 (en) * 2008-12-19 2009-01-28 Imagination Tech Ltd Multi level display control list in tile based 3D computer graphics system
US8248412B2 (en) * 2009-03-19 2012-08-21 International Business Machines Corporation Physical rendering with textured bounding volume primitive mapping
US8294713B1 (en) * 2009-03-23 2012-10-23 Adobe Systems Incorporated Method and apparatus for illuminating objects in 3-D computer graphics
US8570322B2 (en) * 2009-05-12 2013-10-29 Nvidia Corporation Method, system, and computer program product for efficient ray tracing of micropolygon geometry
KR101004110B1 (ko) * 2009-05-28 2010-12-27 주식회사 실리콘아츠 레이 트레이싱 코어 및 이를 포함하는 레이 트레이싱 칩
US8952961B2 (en) * 2009-06-29 2015-02-10 Imagination Technologies, Limited Systems and methods for photon map querying
WO2011035800A2 (en) * 2009-07-24 2011-03-31 Uws Ventures Ltd. Direct ray tracing of 3d scenes
US8587581B2 (en) * 2009-10-15 2013-11-19 Nvidia Corporation Order-preserving distributed rasterizer
WO2011078858A1 (en) * 2009-12-23 2011-06-30 Intel Corporation Image processing techniques
US9058685B2 (en) * 2010-03-11 2015-06-16 Broadcom Corporation Method and system for controlling a 3D processor using a control list in memory
CN101826215B (zh) * 2010-04-19 2012-05-09 浙江大学 实时二级光线跟踪的并行渲染方法
GB201007348D0 (en) 2010-04-30 2010-06-16 Imagination Tech Ltd Programmable tessellation in a tile based rendering system
US20110310102A1 (en) * 2010-06-17 2011-12-22 Via Technologies, Inc. Systems and methods for subdividing and storing vertex data
KR101697238B1 (ko) * 2010-08-26 2017-01-17 삼성전자주식회사 영상 처리 장치 및 방법
KR101705581B1 (ko) * 2010-09-30 2017-02-22 삼성전자주식회사 데이터 처리 장치 및 방법
KR20120065589A (ko) * 2010-12-13 2012-06-21 삼성전자주식회사 저전력을 위한 타일 비닝 장치 및 방법
US8791945B2 (en) * 2011-05-18 2014-07-29 Intel Corporation Rendering tessellated geometry with motion and defocus blur
US20130033507A1 (en) * 2011-08-04 2013-02-07 Nvidia Corporation System, method, and computer program product for constructing an acceleration structure
KR20130092055A (ko) * 2012-02-10 2013-08-20 삼성전자주식회사 영상 처리 장치 및 방법
US9183664B2 (en) * 2012-05-03 2015-11-10 Apple Inc. Tiled forward shading with improved depth filtering
US9390545B2 (en) * 2012-05-04 2016-07-12 Samsung Electronics Co., Ltd. Apparatus and method for traversing hierarchical acceleration structure
CN102750725B (zh) * 2012-06-05 2016-04-06 南京安讯网络服务有限公司 基于图形处理器加速的地形渲染方法
US9922442B2 (en) * 2012-07-18 2018-03-20 Arm Limited Graphics processing unit and method for performing tessellation operations
US8982124B2 (en) * 2012-09-29 2015-03-17 Intel Corporation Load balancing and merging of tessellation thread workloads
GB2546019B (en) 2012-11-02 2017-08-30 Imagination Tech Ltd Geometry processing method for 3-D rendering
GB2509113B (en) * 2012-12-20 2017-04-26 Imagination Tech Ltd Tessellating patches of surface data in tile based computer graphics rendering
US9483861B2 (en) * 2013-03-15 2016-11-01 Qualcomm Incorporated Tile-based rendering
US9355492B2 (en) * 2013-05-15 2016-05-31 Nvidia Corporation System, method, and computer program product for utilizing a wavefront path tracer
US9547932B2 (en) * 2013-06-10 2017-01-17 Nvidia Corporation Splitting bounding volumes of primitives
US9984498B2 (en) * 2013-07-17 2018-05-29 Microsoft Technology Licensing, Llc Sparse GPU voxelization for 3D surface reconstruction
KR20150069617A (ko) 2013-12-13 2015-06-24 삼성전자주식회사 그래픽 프로세싱 유닛, 이를 포함하는 soc, 및 이를 포함하는 그래픽 프로세싱 시스템
US9189883B1 (en) * 2014-02-27 2015-11-17 Pixar Rendering of multiple volumes
WO2016027910A1 (ko) * 2014-08-18 2016-02-25 주식회사 실리콘아츠 레이 트레이싱 방법, 이를 수행하는 레이 트레이싱 장치 및 이를 저장하는 기록매체
EP3012737A1 (de) * 2014-10-24 2016-04-27 Thomson Licensing Vorrichtungen und Verfahren zur Erzeugung von elementaren Geometrien

Also Published As

Publication number Publication date
CN104885123B (zh) 2018-01-09
CN107833268B (zh) 2021-05-14
US10242487B2 (en) 2019-03-26
GB201704155D0 (en) 2017-04-26
GB2545589A (en) 2017-06-21
US20150317818A1 (en) 2015-11-05
GB201704157D0 (en) 2017-04-26
US20190005704A1 (en) 2019-01-03
CN107833268A (zh) 2018-03-23
US10943386B2 (en) 2021-03-09
CN104885123A (zh) 2015-09-02
GB2509369A (en) 2014-07-02
GB2546019A (en) 2017-07-05
WO2014068400A3 (en) 2014-10-30
US20180268600A1 (en) 2018-09-20
GB201319337D0 (en) 2013-12-18
US20180268599A1 (en) 2018-09-20
WO2014068400A2 (en) 2014-05-08
GB2509369B (en) 2017-05-10
US10339696B2 (en) 2019-07-02
CN107833267A (zh) 2018-03-23
US20210158602A1 (en) 2021-05-27
GB2546020A (en) 2017-07-05
US11568592B2 (en) 2023-01-31
US10186070B2 (en) 2019-01-22
US20230169718A1 (en) 2023-06-01
GB201704156D0 (en) 2017-04-26
CN107833267B (zh) 2021-11-05
GB2546019B (en) 2017-08-30
GB2546020B (en) 2017-08-30

Similar Documents

Publication Publication Date Title
DE112013005255T5 (de) Bedarfsweise Geometrie- und Beschleunigungsstrukturerzeugung
DE102019103059B4 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE102019103326A1 (de) Robuste, effiziente multiprozessor-koprozessor-schnittstelle
DE102019102821A1 (de) Verfahren zur behandlung von ungeordneten opak- und alphastrahl/primitiv-schnittpunkten
DE102019101873A1 (de) Abfragespezifische Verhaltensmodifizierung von Baumtraversierung
DE102019103178A1 (de) Verfahren für vorankommen und programmierbare timeouts von baumtraversierungsmechanismen in hardware
DE102018119225A1 (de) System und Verfahren für einen optimierten Winograd-Faltungsbeschleuniger
DE102013020614A1 (de) Mit Mehrfachauflösung konsistente Rastereinteilung
DE102020124932A1 (de) Vorrichtung und Verfahren zur Echtzeit-Grafikverarbeitung mittels lokaler und cloudbasierter Grafikverarbeitungsbetriebsmittel
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102013018445A1 (de) Festlegung eines nachgeordneten Bilderzeugungszustands in einer vorgeordneten Schattierungseinheit
DE102019135639A1 (de) Auf Echtzeit-Strahlverfolgung (RTRT) basierende adaptive Mehrfrequenzschattierung (AMFS)
DE102013020810A1 (de) Effiziente Super-Abtastung mit Schattierungs-Strängen pro Pixel
DE102008034519A1 (de) Aufgeteilte Datenstruktur, und Verfahren zum Laden einer Partikel-basierten Simulation unter Verwendung der aufgeteilten Datenstruktur in GPU, usw.
DE112009000180T5 (de) Verfahren, Vorrichtung und Computerprogrammprodukt für eine verbesserte Grafikperformance
DE102013021046A1 (de) Erzeugung fehlerbefreiter Voxel-Daten
DE102013020613A1 (de) Umgehung der Pixel-Schattierung für die grafische Bilderzeugung mit geringer Leistung
DE102013020807A1 (de) Handhabung von nachgeordneten Z-Abdeckungsdaten in Rasteroperationen
DE102013017640A1 (de) Verteilte gekachelte Zwischenspeicherung
DE102009038454A1 (de) System und Verfahren zum Reduzieren einer Ausführungsdivergenz in Parallelverarbeitungsarchitekturen
DE112017001703T5 (de) Verfahren und Vorrichtung zum effizienteren Ray-Tracing von instanziierter Geometrie
DE102016103854A1 (de) Graphikverarbeitung mit direktionalen Darstellungen der Beleuchtung an Sondenpositionen innerhalb einer Szene
DE102020132557A1 (de) Vorrichtung und verfahren für asynchrones raytracing
DE112017003841T5 (de) Verfahren und vorrichtung für die korrekte reihung und nummerierung mehrerer aufeinanderfolgender strahl-oberflächen-schnittpunkte innerhalb einer raytracing-architektur
KR20210066727A (ko) 그래픽 처리 시스템

Legal Events

Date Code Title Description
R083 Amendment of/additions to inventor(s)
R082 Change of representative

Representative=s name: WESTPHAL, MUSSGNUG & PARTNER PATENTANWAELTE MI, DE

R012 Request for examination validly filed