DE102009037288A1 - Fragment-Shader für ein Hybrid-Raytracing-System und Betriebsverfahren - Google Patents

Fragment-Shader für ein Hybrid-Raytracing-System und Betriebsverfahren Download PDF

Info

Publication number
DE102009037288A1
DE102009037288A1 DE102009037288A DE102009037288A DE102009037288A1 DE 102009037288 A1 DE102009037288 A1 DE 102009037288A1 DE 102009037288 A DE102009037288 A DE 102009037288A DE 102009037288 A DE102009037288 A DE 102009037288A DE 102009037288 A1 DE102009037288 A1 DE 102009037288A1
Authority
DE
Germany
Prior art keywords
fragment
target
raster
color value
rasterized
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.)
Withdrawn
Application number
DE102009037288A
Other languages
English (en)
Inventor
Markus Tavenrath
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102009037288A1 publication Critical patent/DE102009037288A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/10Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • 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

Landscapes

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

Abstract

Ein Fragment-Shader und ein Betriebsverfahren werden für ein Hybrid-Raytracing-System bereitgestellt. Das Verfahren enthält ein Bestimmen, ob ein Fragment gerastert oder geraytracet werden soll. Falls eine Bestimmung gemacht wird, dass das Fragment gerastert werden soll, wird ein vorbestimmter Wert für das Fragment in ein Rasterziel gespeichert, wobei der vorbestimmte Wert angibt, dass das Fragment von Raytracing-Operationen ausgeschlossen werden soll. Falls eine Bestimmung gemacht wird, dass das Fragment geraytracet werden soll, wird ein Grundform-Identifikator des Fragments in ein Rasterziel gespeichert.

Description

  • Gebiet der Erfindung
  • Die vorliegende Erfindung betrifft Hybrid-Raytracing-Operationen und insbesondere einen Fragment-Shader für ein Hybrid-Raytracing-System und sein Betriebsverfahren.
  • Hintergrund
  • Hybrid-Raytracing ist im Stand der Technik bekannt als ein kombinierter Prozess von Rasterung und Strahlverfolgung (Raytracing). Anfänglich werden Fragmente, z. B. Pixel, welche keine reflektiven oder refraktiven Oberflächen aufweisen, gerastert. Eine Raytracing-Operation wird anschließend für die Pixel durchgeführt, welche reflektive oder refraktive Oberflächen aufweisen. Innerhalb der Raytracing-Operation wird der Primärstrahl typischerweise ausgelassen und ein Sekundärstrahl wird von dem geschnittenen Oberflächenpunkt erzeugt, welcher zum Berechnen einer Reflexion oder Refraktion für das gerenderte Bild verwendet wird. Die gerasterten und geraytracten Bilder werden gemischt oder zusammengeführt, um ein zusammengesetztes Bild (Kompositbild) zu bilden.
  • Innerhalb des anfänglichen Rasterprozesses werden zwei Rasteroperationen durchgeführt. In einer ersten Operation werden die Pixel, welche nicht geraytracet werden sollen, gerastert. In einer zweiten Operation werden die Grundform-Identifikatoren für die Pixel gerastert. Dieser Zweistufenrasterprozess verzögert die Erzeugung des gerasterten Bildes und das Rendern des gesamten Kompositbildes.
  • Was benötigt wird ist entsprechend ein System und ein Verfahren zum Reduzieren einer Rasterverzögerung in Hybrid-Raytracing-Systemen.
  • Zusammenfassung
  • Ein Fragment-Schattierer (Fragment-Shader) und ein Betriebsverfahren werden für ein Hybrid-Raytracing-System bereitgestellt. Das Verfahren umfasst ein Bestimmen, ob ein Fragment gerastert oder geraytracet werden soll. Wenn eine Bestimmung erfolgt ist, dass das Fragment gerastert werden soll, wird ein vorbestimmter Wert für das Fragment in ein Rasterziel (engl. rasterization target) gespeichert, wobei der vorbestimmte Wert angibt, dass das Fragment von Raytracing-Operationen ausgeschlossen werden soll. Wenn eine Bestimmung erfolgt ist, dass das Fragment geraytracet werden soll, wird ein Grundform-Identifikator (engl. pimitive identifier) des Fragments in ein Rasterziel gespeichert.
  • Diese und andere Merkmale werden besser verstanden angesichts der folgenden Zeichnungen und detaillierten Beschreibung von exemplarischen Ausführungsformen.
  • Kurze Beschreibung der Zeichnungen
  • 1 veranschaulicht einen exemplarischen Fragment-Shading-Prozess gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2 veranschaulicht einen exemplarischen Fragment-Shading-Prozess, welcher den Fragment-Shading-Prozess von 1 gemäß einer Ausführungsform der vorliegenden Erfindung einschließt.
  • 3 veranschaulicht ein exemplarisches Hybrid-Raytracing-Verfahren, welches die Fragment-Shading-Prozesse von 1 und 2 gemäß einer Ausführungsform der vorliegenden Erfindung einschließt.
  • 4 veranschaulicht ein exemplarisches System, in welchem die Verfahren der 1 bis 3 gemäß einer Ausführungsform der vorliegenden Erfindung Verwendung finden.
  • Detaillierte Beschreibung von detaillierten Ausführungsformen
  • 1 veranschaulicht einen exemplarischen Fragment-Shading-Prozess 100 gemäß einer Ausführungsform der vorliegenden Erfindung. Der Verfahrensprozess umfasst ein Bestimmen, ob ein Fragment (z. B. ein Pixel) gerastert oder durch einen oder mehrere Primärstrahlen geschnitten werden soll (ein Prozess, welcher hierin als „geraytracet” bezeichnet wird), und entsprechendes Anwenden von nachfolgendem Prozessieren auf das Fragment, basierend auf dieser Bestimmung. Wie hierin verwendet, bezeichnet der Ausdruck gerastert jegliche Technik zum Konvertieren eines Farbwertes oder Vektors in ein Rasterformat. Weiterhin bezeichnet der Ausdruck „Raytracing-Operationen” hierin Raytracing-Operationen, welche das Schneiden eines Fragments durch einen oder mehrere Primärstrahlen mit sich bringen, wie dies in der Technik des Hybrid-Raytracing bekannt ist.
  • Bei 102 beginnt ein Fragmentprozessieren und bei 104 wird eine Bestimmung durchgeführt, ob das Fragment gerastert oder geraytracet werden soll. Wenn die Bestimmung gemacht ist, dass das Fragment in Rasteroperationen einbezogen werden soll, wird bei 106 ein vorbestimmter Wert erzeugt und in ein Rasterziel gespeichert, wobei der vorbestimmte Wert angibt, dass das Fragment nicht geraytracet werden soll. In einer Ausführungsform ist der vorbestimmte Wert, der durch die Operation 106 erzeugt wird, von einem Wert von –1, obwohl jeglicher Wert oder jegliches Kennzeichen verwendet werden kann zum Angeben, dass das Fragment von Raytracing-Operationen gemäß der vorliegenden Erfindung ausgeschlossen werden soll. In einer bestimmten Ausführungsform von Operation 106 wird dem Fragment ein „geraytracet-Attribut” zugeordnet, welches entweder einen wahren oder falschen Zustand aufweist, wobei der falsche Zustand durch einen vorbestimmten Wert (z. B. –1) angegeben ist, welcher das Fragment als nicht-rayzutracen identifiziert.
  • Wenn bei 104 eine Bestimmung gemacht wird, dass das Fragment geraytracet werden soll, wird bei 108 ein Grundform-Identifikator des Fragments in ein Rasterziel für das Fragment gespeichert. Zum Beispiel, wenn das Fragment Dreiecksgrundformen umfasst, enthält der Prozess 108 ein Speichern einer Dreiecks-ID in ein Rasterziel (z. B. einen Dreiecks-ID-Puffer) für das Fragment. Die Fachleute werden es zu schätzen wissen, dass verschiedene geometrische Grundformen in einem Fragment eingeschlossen sein können, zum Beispiel Polygone, Kugeln, Linien, Punkte, etc., und jeder Identifikator von solchen Grundformen kann in einem hierzu korrespondierenden Rasterziel gespeichert werden, gemäß der vorliegenden Erfindung. Es sollte sich ferner verstehen, dass ein oder jede Anzahl von Fragmenten kombiniert sein kann, um ein Pixel zu bilden, wie es im Stand der Technik bekannt ist.
  • Die Bestimmung bei 104 kann gemacht werden unter Verwendung von jeglicher Technik zum Unterscheiden zwischen Raster- und Raytracing-Operationen. Zum Beispiel, wenn bestimmt wird, dass das Fragment innerhalb einer reflektierten oder refraktierten Oberfläche liegt, kann bestimmt werden, dass das Fragment in Raytracing-Operationen eingeschlossen werden soll. Die Fachleute werden schätzen, dass andere Metriken angewandt werden können zum Bestimmen, ob das Fragment in Raster- oder Raytracing-Operationen eingeschlossen werden soll.
  • 2 veranschaulicht einen exemplarischen Fragment-Shader-Prozess, welcher den Fragment-Shading-Prozess von 1 gemäß einer Ausführungsform der vorliegenden Erfindung einschließt. Operationen 202208 laufen parallel zu Operationen 102108 von 1. Bei 202 beginnt eine Fragmentverarbeitung und bei 204 wird eine Bestimmung gemacht, ob das Fragment gerastert oder geraytracet werden soll. Wenn die Bestimmung gemacht wird, dass das Fragment in Rasteroperationen eingeschlossen werden soll, wird bei 206 ein vorbestimmter Wert erzeugt und gespeichert in ein erstes Rasterziel, wobei der vorbestimmte Wert angibt, dass das Fragment nicht geraytracet werden soll. Wenn bei 204 eine Bestimmung gemacht wird, dass das Fragment geraytracet werden soll, wird ein Grundform-Identifikator des Fragments in ein erstes Rasterziel für das Fragment gespeichert, bei 208. In der Praxis existiert auch eine dritte Möglichkeit, in welcher das ausgewählte Fragment weder gerastert noch geraytracet werden soll. Während des Rasterns kann ein Shader zum Beispiel entscheiden, das Fragment zu verwerfen. Wenn die gegenwärtige Grundform nicht als geraytracet markiert ist und von dem Shader für eine Rasterung verworfen wird, bleibt der Farbwert unverändert. Grundform-Identifikatoren können als ein Vertex-Attribut implementiert werden. In diesem Fall kann die Grundform als eine Einheitsform (engl. uniform) für den Fragment-Shader pro Grundform spezifiziert werden. Alternativ wird der erste Grundform-Identifikator einer Reihe von Grundformen spezifiziert als eine Einheitsform für einen Geometrie-Shader. Der Geometrie-Shader kann dann nachfolgende Grundform-Identifikatoren pro Grundform erzeugen.
  • Weiter exemplarisch, unter der Bedingung, in welcher das Fragment gerastert werden soll, umfasst das Verfahren 200 ferner eine Operation 210, in welcher eine Shading-Operation für das ausgewählte Fragment aktiviert wird, wobei ein gerasterter Farbwert für das Fragment berechnet und gespeichert wird in ein zweites Rasterziel (z. B. einen Farbpuffer) für das Fragment. Jegliche Shading-Operation kann gemäß dieser Operation implementiert werden.
  • Weiter exemplarisch, unter der Bedingung, in welcher das Fragment geraytracet werden soll, umfasst das Verfahren 200 ferner eine Operation 212, in welcher ein Null-Farbraumwert in ein zweites Rasterziel (z. B. einen Farbpuffer) für das Fragment gespeichert wird. In einer bestimmten Ausführungsform ist der Null-Farbraumwert ein Farbwert von RGBA (0, 0, 0, 0), d. h. volltransparentes Schwarz. Die Auswahl eines solchen Farbraumwertes erleichtert das Kombinieren der gerasterten und geraytracten Fragmente zum Erzeugen eines finalen Frame, da nicht gerasterte Fragmente und nicht geraytracte Fragmente als schwarzer Hintergrund wiedergegeben werden. Jedoch werden die Fachleute anerkennen, dass andere Null-Farbraumwerte (und/oder ein anderes Farbraumformat) implementiert werden kann gemäß einem anderen Kombinationsschema. In einer bestimmten Ausführungsform wird der Fragment-Shader 200 einmal pro Grundform, welche in dem Fragment enthalten ist, aufgerufen. Zum Beispiel können die Operationen 202212 durchgeführt werden für jedes von N Dreiecken, welches innerhalb eines Pixels, welchem der Fragment-Shader 200 zugeordnet ist, enthalten ist. Weiter exemplarisch, können die Operationen 202212 bis zu N Mal für jedes Fragment durchgeführt werden, wenn N Dreiecke dieses Fragment abdecken.
  • Wie verstanden werden wird, werden einige der Fragmente zur Rasterung in der Hybrid-Raytracing-Operation ausgewählt und einige werden zum Raytracen ausgewählt. Entsprechend kann eine Abfolge der Operationen 202, 204, 206 und 210, in welcher ein erstes Fragment zur Rasterung vorbereitet wird, durchgeführt werden vor einer (oder nachfolgend auf eine) Abfolge der Operationen 202, 204, 208 und 212, in welcher ein zweites Fragment zum Raytracen vorbereitet wird. Auf diese Weise wird eine Vielzahl von Fragmenten (z. B. alle der Fragmente innerhalb eines Frames) prozessiert für Rasterung oder Raytracing in der Hybrid-Raytracing-Operation, wie hierin weiter beschrieben ist.
  • 3 veranschaulicht ein exemplarisches Hybrid-Raytracing-Verfahren (oder „Raytracer”), welches den Fragment-Shading-Prozess von 1 und 2 gemäß einer Ausführungsform der vorliegenden Erfindung einschließt. Gemäß diesem Verfahren wird eine Rasterung von Grundformen verwendet zum Lokalisieren des sichtbaren (d. h. nächsten Nahebenen-)Fragments und Shading wird durchgeführt zum Berechnen eines Farbwertes für das Fragment. Der Raytracer 300 lässt den ersten Raytracing-Schritt aus, da Transversaloperationen für die Primärstrahlen, die normalerweise in dem Raytracing-Algorithmus enthalten sind, ersetzt werden durch den Rasterschritt, wie unten weiter erläutert. Alle weiteren Transversalschritte werden durch den Raytracer wie gewöhnlich durchgeführt.
  • Das Verfahren 300 repräsentiert eine Fortsetzung des Verfahrens 200, in welcher ein bestimmtes Fragment gerastert wurde, entweder im Hinblick auf seinen Farbwert (Operation 210) oder im Hinblick auf den Grundform-Identifikator des Fragments (Operation 208). Bei 302 wird das Fragment abgefragt zum Bestimmen, ob es geraytracet werden soll. In einer bestimmten Ausführungsform wird eines oder beide der Rasterziele abgefragt zum Bestimmen, ob es den nicht-rayzutracen-Wert speichert, wie oben erwähnt. In einer anderen Ausführungsform werden die Rasterziele auf die Anwesenheit eines Grundform-Identifikators, welcher angeben würde, dass das Fragment geraytracet werden soll, durchsucht. In einer exemplarischen Ausführungsform dieses Prozesses wird der Dreiecks-ID-Puffer des Fragments an eine Raytracing-Engine geliefert zum Prozessieren, entweder zum Detektieren der Anwesenheit/Abwesenheit des nicht-rayzutracen-Wertes, oder zum Detektieren der Anwesenheit/Abwesenheit eines Grundform-Identifikators.
  • Wenn die Bestimmung bei 302 ist, dass das Fragment nicht geraytracet werden soll (z. B. ein nicht-rayzutracen-Wert für das Fragment gefunden wird), endet das Verfahren bei 304. Wenn die Bestimmung bei 302 ist, dass das Fragment geraytracet werden soll (z. B. ein Grundform-Identifikator gefunden wird oder über die Abwesenheit des nicht-rayzutracen-Wertes für das Fragment), fährt das Verfahren bei 306 fort, wo der Raytracer Schnitt(Intersection)- und Shading-Operationen durchführt. Ferner insbesondere werden Transversaloperationen, die gewöhnlich durchgeführt werden als ein Teil von Raytracing-Operationen, weggelassen, da die Operation 208 diese Daten liefert, d. h. der Grundform-Identifikator gibt die Grundform an, die geschnitten wird durch den Strahl für das Zielfragment. Die Daten, welche durch die Operation 208 geliefert werden, werden von dem Raytracer 300 verwendet zum Berechnen des Schnittpunktes eines Strahls mit einer Geometrie und zum Berechnen des geraytracten Farbraumwertes für das Fragment. Da der Prozess 208 typischerweise wesentlich schneller arbeiten wird zum Identifizieren des nächsten Nahebenen-Fragments im Vergleich zu der logarithmischen Suche, die in einer Raytracing-Transversaloperation verwendet wird (zum Beispiel in einer Szene, welche 10.000 Dreiecke enthält), liefert das Verfahren der vorliegenden Erfindung eine erhöhte Geschwindigkeit und Recheneffizienzen beim Rendern, jenseits der konventionellen Methoden.
  • In einer bestimmten Ausführungsform wird der Hybrid-Raytracer 300 einmal pro sichtbarem Fragment des Bildes aufgerufen. In solch einem Fall werden die Operationen 302308 auf einer Pro-Fragment-Basis durchgeführt und ein geraytracter Farbwert (wenn überhaupt, über die bedingte Operation 304) wird für jedes Fragment einmal berechnet. Weiter beispielhaft können die Operationen 204, 206 und 210 aufgerufen werden zum Liefern eines ersten Fragmentes, welches einen gerasterten Farbraumwert, wie oben definiert, aufweist und die Operationen 204, 208, 212, 302 und 306 können wiederholt werden zum Liefern eines zweiten Fragmentes, wovon jedes einen geraytracten Farbwert, wie oben definiert, aufweist. Ein Kompositbild der zwei Fragmente kann erhalten werden durch Kombinieren (zum Beispiel Mischen (Blending), Verschmelzen (Merging), oder Addieren (Adding)) der Fragmente. Fragmente, die weder gerastert noch geraytracet sind, verbleiben in der Hintergrundfarbe, zum Beispiel, volltransparentes Schwarz RGBA (0, 0, 0, 0) in einer exemplarischen Ausführungsform.
  • Wie von 3 gesehen werden kann, ist der Hybrid-Raytracer betreibbar zum Aufrufen und Ausführen des Fragment-Shader-Programms des Benutzers in der Operation 210, während er ebenfalls betreibbar ist zum Bereitstellen von Grundform-Identifikatoren für Fragmente, welche geraytracet werden sollen (Operation 208). Der Benutzer ist daher in der Lage, die Szene wie benötigt zu rastern und kann danach den Dreiecks-ID-Puffer abfragen (Operation 304) auf nachfolgende Raytracing-Operationen (Operation 306). Auf diese Weise liefert der Hybrid-Raytracer 300 für den Benutzer ein transparentes Prozessieren von beiden Fragmenttypen. Ferner tritt die Rasterung jedes Fragmenttyps nur einmal auf, entweder mittels der Operationen 206 und 210 für gerasterte Farbraumwert-Fragmente, oder mittels der Operationen 208 und 212 für geraytracte Farbraumwert-Fragmente. Die Operationen in den Verfahren 100, 200 und 300 können jeweils implementiert sein als ausführbare Instruktionen in jeder geeigneten Programmiersprache, von denen einige Beispiele Open-GL-Shading Language (GLSL), Cg-Shading Language, High Level Shader Language (HLSL) oder die Compute Unified Device Architecture (CUDATM) GPU-Programmiersprache sind, zur Verwendung mit entsprechenden Compilern für solche Sprachen. Zusätzlich können die veranschaulichten Operationen ausgeführt werden mittels Hardware oder Firmware, zum Beispiel, mittels einer anwendungsspezifischen integrierten Schaltung (Application Specific Integrated Circuitry, ASIC), einem programmierbaren Logik-Array (Programmable Logic Array, PLA), einem feldprogrammierbaren Gate-Array (Field Programmable Gate Array, FPGA) oder anderer solcher Vorrichtungen.
  • 4 veranschaulicht ein exemplarisches System 400, in welchem die Verfahren der 13 Verwendung finden gemäß der vorliegenden Erfindung. Das System 400 umfasst ein Grafikprozessier-Subsystem 420 und eine Ausgabevorrichtung 440, wie beispielsweise einen Monitor oder Drucker. Das Grafikprozessier-Subsystem 420 umfasst einen Prozessor 422, ein Speicher-Interface 424, einen Frame-Puffer 425 und einen Ausscan-Prozessor 426. Der Prozessor 422 umfasst ein Shader-Modul 423, welches betreibbar ist zum Durchführen irgendeiner oder aller der Operationen, die in den 13 hierin veranschaulicht sind. Ein Frame-Puffer 426 ist betreibbar gekoppelt mit dem Prozessor 422 zum Empfangen von gerasterten und geraytracten Fragmentwerten für jeden Frame und zum Auslesen eines Kompositbildes von jedem Frame an die Ausgabevorrichtung 440 über das Speicher-Interface 424 und einen Link 430 (z. B. einen DVI-Link).
  • In einer spezifischen Ausführungsform ist das Shader-Modul 423 betreibbar zum Speichern von Instruktionscode zum Durchführen der Fragment-Shader-Programme 100 und 200 der 1 bzw. 2. In einer Ausführungsform umfasst das Fragment-Shading-Modul 423 Mittel zum Durchführen der Operationen 10408 und 204208, in welchen bestimmt wird, ob ein Fragment gerastert oder geraytracet werden soll, Speichern eines vorbestimmten Wertes für das Fragment in ein Rasterziel, wenn das Fragment gerastert werden soll, wobei der vorbestimmte Wert angibt, dass das Fragment von Raytracing-Operationen ausgeschlossen sein soll, und Speichern eines Grundform-Identifikators des Fragments in ein Rasterziel, wenn das Fragment geraytracet werden soll. Das Fragment-Shading-Modul 423 umfasst ferner Mittel zum Durchführen der Operationen 206 und 210, in welchen eine Shading-Operation für das Fragment durchgeführt wird zum Berechnen eines gerasterten Farbwertes des Fragments und zum Speichern des gerasterten Farbwertes des Fragments in ein zweites Rasterziel. Das Fragment-Shading-Modul 423 umfasst ferner Mittel zum Speichern eines Null-Farbwertes in ein zweites Rasterziel. Das Fragment-Shading-Modul kann auch Mittel zum Durchführen von Hybrid-Raytracing-Operationen 302306, dargestellt in 3 und hierin beschrieben, enthalten.
  • Wie leicht von den Fachleuten anerkannt werden wird, können die beschriebenen Prozesse und Operationen in Hardware, Software, Firmware oder einer Kombination dieser Implementierungen implementiert werden, wie es angemessen ist. Zusätzlich können einige oder alle der beschriebenen Prozesse und Operationen implementiert werden als computerlesbarer Instruktionscode, welcher resident auf einem computerlesbaren Medium ist, wobei der Instruktionscode wirksam ist zum Steuern eines Computers einer solchen programmierbaren Vorrichtung zum Ausführen der vorgesehenen Funktionen. Das computerlesbare Medium, auf welchem der Instruktionscode liegt, kann zahlreiche Formen annehmen, zum Beispiel, eine entfernbare Platte (removable disk), flüchtigen oder nicht-flüchtigen Speicher, etc., oder ein Trägersignal, welchem ein Modulationssignal eingeprägt wurde, wobei das Modulationssignal Instruktionen zum Ausführen der beschriebenen Operationen entspricht.
  • In einer bestimmten Ausführungsform der Erfindung ist ein Speicher betreibbar zum Speichern von Instruktionen zum Ausführen von irgendeiner der Operationen, die in 1, 2 und 3 veranschaulicht sind. Der Speicher kann verschiedene Formen annehmen, zum Beispiel eine entfernbare Platte, einen eingebetteten Speicher, etc., in flüchtiger oder nicht-flüchtiger Form, und kann enthalten sein in einer Vielzahl von verschiedenen Systemen, zum Beispiel einem Computersystem, einem eingebetteten Prozessor (embedded processor), einem Grafikprozessor oder einem Grafik prozessierenden Subsystem, wie beispielsweise einer Grafikkarte.
  • Die Ausdrücke „ein” oder „eines” werden verwendet zum Bezugnehmen auf eines oder mehrere hierdurch beschriebener Merkmale. Ferner bezieht sich der Ausdruck „gekoppelt” oder „verbunden” auf Merkmale, welche in Kommunikation miteinander stehen, entweder direkt oder über eine oder mehrere Zwischenstrukturen oder -substanzen. Die Abfolge von Operationen und Aktionen, auf die in Verfahrensflussdiagrammen Bezug genommen wird, sind beispielhaft und die Operationen und Aktionen können in einer anderen Reihenfolge durchgeführt werden, wie auch zwei oder mehr der Operationen und Aktionen gleichzeitig durchgeführt werden können. Bezugszeichen (soweit vorhanden), die in den Ansprüchen enthalten sind, dienen zum Bezugnehmen auf eine exemplarische Ausführungsform eines beanspruchten Merkmals, und das beanspruchte Merkmal ist nicht limitiert auf die bestimmte Ausführungsform, auf welche durch das Bezugszeichen Bezug genommen wird. Der Umfang des beanspruchten Merkmals soll derjenige sein, der durch die Anspruchsformulierung definiert ist, als wenn das Bezugszeichen hiervon abwesend wäre. Alle Veröffentlichungen, Patente und andere Dokumente, auf die hierin Bezug genommen wird, sind hierin in ihrer Gesamtheit durch Bezugnahme eingeschlossen. In dem Umfang jeder inkonsistenten Verwendung zwischen irgendeinem solchen eingeschlossenen Dokument und diesem Dokument, soll die Verwendung in diesem Dokument führen.
  • Die vorangehenden exemplarischen Ausführungsformen der Erfindung wurden in ausreichendem Detail beschrieben, um einen Fachmann in die Lage zu versetzen, die Erfindung auszuführen, und es sollte sich verstehen, dass die Ausführungsformen kombiniert werden können. Die beschriebenen Ausführungsformen wurden gewählt, um am besten die Prinzipien der Erfindung und ihrer praktischen Anwendung zu erläutern, um dadurch andere Fachleute in die Lage zu versetzen, die Erfindung bestmöglich zu verwenden in zahlreichen Ausführungsformen und mit verschiedenen Modifikationen, wie sie geeignet sind für die bestimmte beabsichtigte Verwendung. Es ist beabsichtigt, dass der Umfang der Erfindung einzig durch die hieran anhängenden Ansprüche definiert ist.

Claims (21)

  1. Verfahren zum Fragment-Shading, enthaltend: Bestimmen, ob ein Fragment gerastert oder geraytracet werden soll; falls das Fragment gerastert werden soll, Speichern eines vorbestimmten Wertes für das Fragment in ein Rasterziel, wobei der vorbestimmte Wert angibt, dass das Fragment von Raytracing-Operationen ausgenommen werden soll; und falls das Fragment geraytracet werden soll, Speichern eines Grundform-Identifikators des Fragments in ein Rasterziel.
  2. Verfahren nach Anspruch 1, wobei das Fragment gerastert werden soll, wobei das Rasterziel ein erstes Rasterziel aufweist, welches den vorbestimmten Wert speichert, wobei das Verfahren ferner enthält: Durchführen einer Shading-Operation für das Fragment zum Berechnen eines gerasterten Farbwertes des Fragments; und Speichern des gerasterten Farbwertes des Fragments in ein zweites Rasterziel.
  3. Verfahren nach Anspruch 1, wobei das Fragment geraytracet werden soll, wobei das Rasterziel ein erstes Rasterziel aufweist, welches den Grundform-Identifikator des Fragments speichert, das Verfahren ferner ein Speichern eines Null-Farbwertes in ein zweites Rasterziel enthält.
  4. Verfahren nach Anspruch 2, ferner enthaltend: Abfragen des ersten Rasterziels; und Ausschließen des Fragments von Raytracing-Operationen basierend auf dem vorbestimmten Wert, der in dem ersten Rasterziel gespeichert ist.
  5. Verfahren nach Anspruch 3, ferner enthaltend: Abfragen des ersten Rasterziels; und Berechnen eines geraytracten Farbwertes für das Fragment.
  6. Verfahren nach Anspruch 5, wobei Berechnen eines geraytracten Farbwertes für das Fragment ein Verwenden des Grundform-Identifikators des Fragments, welcher in dem zweiten Rasterziel gespeichert ist, als Daten für Primärstrahlen einer Raytracing-Operation enthält.
  7. Verfahren nach Anspruch 2, ferner enthaltend: für ein zweites Fragment, welches geraytracet werden soll, Durchführen der Operationen: Speichern eines Grundform-Identifikators des zweiten Fragments in ein drittes Rasterziel; Speichern eines Null-Farbwertes in ein viertes Rasterziel; und Berechnen eines geraytracten Farbwertes für das zweite Fragment; und Kombinieren des ersten Fragments und des zweiten Fragments zum Erhalten eines Kompositbildes.
  8. Computerprogrammprodukt, resident auf einem computerlesbaren Medium, welches wirksam ist zum Ausführen von Instruktionen zum Durchführen von Fragment-Shading, wobei das Computerprogrammprodukt Instruktionscode aufweist zum: Bestimmen, ob ein Fragment gerastert oder geraytracet werden soll; Speichern eines vorbestimmten Wertes für das Fragment in ein erstes Rasterziel, falls das Fragment gerastert werden soll, wobei der vorbestimmte Wert angibt, dass das Fragment von Raytracing-Operationen ausgeschlossen werden soll; und Speichern eines Grundform-Identifikators des Fragments in ein erstes Rasterziel, falls das Fragment geraytracet werden soll.
  9. Computerprogrammprodukt nach Anspruch 8, wobei das Fragment gerastert werden soll, wobei das Rasterziel ein erstes Rasterziel aufweist, welches den vorbestimmten Wert speichert, wobei das Computerprogrammprodukt ferner Instruktionscode aufweist zum: Durchführen einer Shading-Operation für das Fragment zum Berechnen eines gerasterten Farbwertes des Fragments; und Speichern des gerasterten Farbwertes des Fragments in ein zweites Rasterziel.
  10. Computerprogrammprodukt nach Anspruch 8, wobei das Fragment geraytracet werden soll, wobei das Rasterziel ein erstes Rasterziel aufweist, zum Speichern des Grundform-Identifikators des Fragments, wobei das Computerprogrammprodukt ferner Instruktionscode aufweist zum Speichern eines Null-Farbwertes in ein zweites Rasterziel.
  11. Computerprogrammprodukt nach Anspruch 9, ferner enthaltend Instruktionscode zum: Abfragen des ersten Rasterziels; und Ausschließen des Fragments von Raytracing-Operationen basierend auf dem vorbestimmten Wert, welcher in dem ersten Rasterziel gespeichert ist.
  12. Computerprogrammprodukt nach Anspruch 10, ferner enthaltend Instruktionscode zum: Abfragen des ersten Rasterziels; und Berechnen eines geraytracten Farbwertes für das Fragment.
  13. Computerprogrammprodukt nach Anspruch 12, wobei der Instruktionscode zum Berechnen eines geraytracten Farbwertes für das Fragment Instruktionscode aufweist zum Verwenden des Grundform-Identifikators des Fragments, welcher in dem zweiten Rasterziel gespeichert ist, als Daten für Primärstrahlen einer Raytracing-Operation.
  14. Computerprogrammprodukt nach Anspruch 9, ferner enthaltend: Instruktionscode zum Durchführen, für ein zweites Fragment, welches geraytracet werden soll, der Operationen: Speichern eines Grundform-Identifikators des zweiten Fragments in ein drittes Rasterziel; Speichern eines Null-Farbwertes in ein viertes Rasterziel; und Berechnen eines geraytracten Farbwertes für das zweite Fragment; und Instruktionscode zum Kombinieren des ersten Fragments und des zweiten Fragments zum Erhalten eines Kompositbildes.
  15. Fragment-Shading-Modul, enthaltend: Mittel zum Bestimmen, ob ein Fragment gerastert oder geraytracet werden soll; Mittel zum Speichern eines vorbestimmten Wertes für das Fragment in ein Rasterziel, falls das Fragment gerastert werden soll, wobei der vorbestimmte Wert angibt, dass das Fragment von Raytracing-Operationen ausgeschlossen werden soll; und Mittel zum Speichern eines Grundform-Identifikators des Fragments in ein Rasterziel, falls das Fragment geraytracet werden soll.
  16. Fragment-Shading-Modul nach Anspruch 15, wobei das Fragment gerastert werden soll, wobei das Rasterziel ein erstes Rasterziel aufweist, welches den vorbestimmten Wert speichert, wobei das Fragment-Shading-Modul ferner aufweist: Mittel zum Durchführen einer Shading-Operation für das Fragment zum Berechnen eines gerasterten Farbwertes des Fragments; und Mittel zum Speichern des gerasterten Farbwertes des Fragments in ein zweites Rasterziel.
  17. Fragment-Shading-Modul nach Anspruch 15, wobei das Fragment geraytracet werden soll, wobei das Rasterziel ein erstes Rasterziel aufweist, welches den Grundform-Identifikator des Fragments speichert, wobei das Fragment-Shading-Modul ferner Mittel aufweist zum Speichern eines Null-Farbwertes in ein zweites Rasterziel.
  18. Fragment-Shading-Modul nach Anspruch 16, ferner enthaltend: Mittel zum Abfragen des ersten Rasterziels; und Mittel zum Ausschließen des Fragments von Raytracing-Operationen basierend auf dem vorbestimmten Wert, welcher in dem ersten Rasterziel gespeichert ist.
  19. Fragment-Shading-Modul nach Anspruch 17, ferner enthaltend: Mittel zum Abfragen des ersten Rasterziels; und Mittel zum Berechnen eines geraytracten Farbwertes für das Fragment.
  20. Fragment-Shader-Modul nach Anspruch 19, wobei die Mittel zum Berechnen eines geraytracten Farbwertes für das Fragment Mittel zum Verwenden des Grundform-Identifikators des Fragments, welcher in dem zweiten Rasterziel gespeichert ist, als Daten für Primärstrahlen einer Raytracing-Operation aufweisen.
  21. Fragment-Shader-Modul nach Anspruch 16, ferner enthaltend: für ein zweites Fragment, welches geraytracet werden soll, Mittel zum Speichern eines Grundform-Identifikators des zweiten Fragments in ein drittes Rasterziel; Mittel zum Speichern eines Null-Farbwertes in ein viertes Rasterziel; und Mittel zum Berechnen eines geraytracten Farbwertes für das zweite Fragment; und Mittel zum Kombinieren des ersten Fragments und des zweiten Fragments zum Erhalten eines Kompositbildes.
DE102009037288A 2008-09-26 2009-08-12 Fragment-Shader für ein Hybrid-Raytracing-System und Betriebsverfahren Withdrawn DE102009037288A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/238,661 2008-09-26
US12/238,661 US8379022B2 (en) 2008-09-26 2008-09-26 Fragment shader for a hybrid raytracing system and method of operation

Publications (1)

Publication Number Publication Date
DE102009037288A1 true DE102009037288A1 (de) 2010-05-06

Family

ID=42048690

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102009037288A Withdrawn DE102009037288A1 (de) 2008-09-26 2009-08-12 Fragment-Shader für ein Hybrid-Raytracing-System und Betriebsverfahren

Country Status (5)

Country Link
US (1) US8379022B2 (de)
JP (1) JP4877636B2 (de)
KR (1) KR101082215B1 (de)
CN (1) CN101685548B (de)
DE (1) DE102009037288A1 (de)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9292965B2 (en) * 2009-03-19 2016-03-22 International Business Machines Corporation Accelerated data structure positioning based upon view orientation
US8248412B2 (en) * 2009-03-19 2012-08-21 International Business Machines Corporation Physical rendering with textured bounding volume primitive mapping
US8248401B2 (en) * 2009-03-19 2012-08-21 International Business Machines Corporation Accelerated data structure optimization based upon view orientation
KR101266360B1 (ko) * 2009-08-24 2013-05-22 한국전자통신연구원 전역조명을 지원하는 그래픽 처리 장치 및 이를 이용한 그래픽 처리 방법
US9117254B2 (en) * 2012-07-24 2015-08-25 Nvidia Corporation System, method, and computer program product for performing ray tracing
GB2546020B (en) 2012-11-02 2017-08-30 Imagination Tech Ltd Method of scheduling discrete productions of geometry
US9495721B2 (en) * 2012-12-21 2016-11-15 Nvidia Corporation Efficient super-sampling with per-pixel shader threads
US9607426B1 (en) 2013-12-20 2017-03-28 Imagination Technologies Limited Asynchronous and concurrent ray tracing and rasterization rendering processes
US9697640B2 (en) * 2014-04-21 2017-07-04 Qualcomm Incorporated Start node determination for tree traversal in ray tracing applications
KR102224845B1 (ko) 2014-07-22 2021-03-08 삼성전자주식회사 하이브리드 렌더링 방법 및 장치
KR102244619B1 (ko) * 2014-09-30 2021-04-26 삼성전자 주식회사 가속 구조를 생성 및 탐색하는 방법
KR20160047317A (ko) * 2014-10-22 2016-05-02 삼성전자주식회사 하이브리드 렌더링 장치 및 방법
KR102397001B1 (ko) * 2015-06-02 2022-05-11 엘지전자 주식회사 그래픽 프로세서
US9773340B2 (en) * 2015-06-12 2017-09-26 Qualcomm Incorporated Rendering using ray tracing to generate a visibility stream
US10614614B2 (en) 2015-09-29 2020-04-07 Adshir Ltd. Path tracing system employing distributed accelerating structures
US11010956B2 (en) * 2015-12-09 2021-05-18 Imagination Technologies Limited Foveated rendering
US10565776B2 (en) 2015-12-12 2020-02-18 Adshir Ltd. Method for fast generation of path traced reflections on a semi-reflective surface
US10614612B2 (en) 2018-06-09 2020-04-07 Adshir Ltd. Fast path traced reflections for augmented reality
US12008704B2 (en) 2016-01-28 2024-06-11 Snap Inc. System for photo-realistic reflections in augmented reality
US9818221B2 (en) 2016-02-25 2017-11-14 Qualcomm Incorporated Start node determination for tree traversal for shadow rays in graphics processing
KR20180050124A (ko) 2016-11-04 2018-05-14 삼성전자주식회사 가속 구조를 생성하는 방법 및 장치
US10559115B2 (en) * 2018-03-02 2020-02-11 Microsoft Technology Licensing, Llc Techniques for generating visualizations of ray tracing images
US10699468B2 (en) * 2018-06-09 2020-06-30 Adshir Ltd. Method for non-planar specular reflections in hybrid ray tracing
US10580196B1 (en) * 2018-08-10 2020-03-03 Nvidia Corporation Method for continued bounding volume hierarchy traversal on intersection without shader intervention
US10754498B2 (en) * 2018-12-07 2020-08-25 Amazon Technologies, Inc. Hybrid image rendering system
KR102151443B1 (ko) * 2019-04-11 2020-09-03 주식회사 실리콘아츠 하이브리드 gpu 아키텍처 기반의 그래픽 처리 장치
US10853994B1 (en) 2019-05-23 2020-12-01 Nvidia Corporation Rendering scenes using a combination of raytracing and rasterization
US11017581B1 (en) * 2020-01-04 2021-05-25 Adshir Ltd. Method for constructing and traversing accelerating structures
US11321901B2 (en) * 2020-02-13 2022-05-03 Mediatek Inc. Hybrid rendering mechanism of a graphics pipeline and an effect engine
CN111340928B (zh) * 2020-02-19 2022-05-03 杭州群核信息技术有限公司 一种结合光线跟踪的Web端实时混合渲染方法、装置及计算机设备
US11869117B2 (en) 2021-03-18 2024-01-09 Samsung Electronics Co., Ltd. Systems and methods of adaptive, variable-rate, hybrid ray tracing
JP2024070286A (ja) * 2021-03-24 2024-05-23 ソニーグループ株式会社 情報処理装置、情報処理方法及び情報処理プログラム

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4078716B2 (ja) * 1998-06-29 2008-04-23 ソニー株式会社 画像処理装置および方法、並びに提供媒体
CA2583664A1 (en) 2004-10-27 2006-05-11 Pacific Data Images Llc Volumetric shadows for computer animation
US7289119B2 (en) * 2005-05-10 2007-10-30 Sony Computer Entertainment Inc. Statistical rendering acceleration
US7973790B2 (en) * 2005-08-11 2011-07-05 Realtime Technology Ag Method for hybrid rasterization and raytracing with consistent programmable shading
US7439973B2 (en) 2005-08-11 2008-10-21 International Business Machines Corporation Ray tracing with depth buffered display
US20070132754A1 (en) 2005-12-12 2007-06-14 Intel Corporation Method and apparatus for binary image classification and segmentation
KR20100132605A (ko) * 2009-06-10 2010-12-20 삼성전자주식회사 하이브리드 렌더링 장치 및 방법

Also Published As

Publication number Publication date
KR20100035622A (ko) 2010-04-05
US20100079457A1 (en) 2010-04-01
JP4877636B2 (ja) 2012-02-15
US8379022B2 (en) 2013-02-19
CN101685548A (zh) 2010-03-31
CN101685548B (zh) 2012-11-21
JP2010092462A (ja) 2010-04-22
KR101082215B1 (ko) 2011-11-09

Similar Documents

Publication Publication Date Title
DE102009037288A1 (de) Fragment-Shader für ein Hybrid-Raytracing-System und Betriebsverfahren
DE102006005044B4 (de) Verfahren und System zur Bestimmung eines Datenmodells zur Überlagerung mit einem realen Objekt in einem Verfahren zur Objektverfolgung
DE102005035012B4 (de) Hochleistungsschattierung von großen volumetrischen Daten unter Verwendung von partiellen Schirmraumableitungen
DE60032832T2 (de) Darstellung einer gekrümmten Oberfläche in mehreren Auflösungen
EP3418978B1 (de) Verfahren, visualisierungsvorrichtung und computerprogrammprodukt zur visualisierung eines dreidimensionalen objekts
DE10296401B4 (de) Verbund-Rendering von 3-D-Graphikobjekten
DE60033250T2 (de) System und Verfahren zur Darstellung mit Strahlverfolgung
DE102013114176A1 (de) Tessellieren von Oberflächendatensegmenten beim kachelbasierten Rendern von Computergrafik
DE102011101328A1 (de) Kachelrendering für die Bildbearbeitung
DE102018127647A1 (de) Systeme und verfahren zum trainieren neuronaler netzwerke auf regression ohne referenzdaten-trainingsmuster
DE102018113845A1 (de) Systeme und Verfahren zum Trainieren von neuronalen Netzwerken mit dünnbesetzten Daten
DE102009035441B4 (de) Verfahren und Bildverarbeitungssystem zur Erzeugung eines Volumenansichtsbilds vom Inneren eines Körpers
EP2406769B1 (de) Verfahren und vorrichtung zur reduktion des speicherbedarfs bei der bestimmung von disparitätswerten für mindestens zwei stereoskopisch aufgenommene bilder
DE112009000180T5 (de) Verfahren, Vorrichtung und Computerprogrammprodukt für eine verbesserte Grafikperformance
DE102019006149A1 (de) Begrenzungsbewusste Objektentfernung und Contentfüllung
DE102016103854A1 (de) Graphikverarbeitung mit direktionalen Darstellungen der Beleuchtung an Sondenpositionen innerhalb einer Szene
DE102013020807A1 (de) Handhabung von nachgeordneten Z-Abdeckungsdaten in Rasteroperationen
DE602004003111T2 (de) Tiefen-basiertes Antialiasing
DE112012005770T5 (de) Zeichnungsdaten-Erzeugungsvorrichtung und Bildzeichnungsvorrichtung
DE102013018445A1 (de) Festlegung eines nachgeordneten Bilderzeugungszustands in einer vorgeordneten Schattierungseinheit
DE102018128699A1 (de) Einstellen einer Winkelabtastrate während eines Renderings unter Verwendung von Blickinformationen
DE102006023633A1 (de) Gleichzeitige Projektion von mehrfach verzweigten Gefäßen und ihrer Umgebung auf einem einzigen Bild
DE102006021118B4 (de) Rendern von anatomischen Strukturen mit ihrem nahen Umgebungsbereich
DE102020108358A1 (de) Wiedergeben von szenen mit einer kombination aus strahlverfolgung und rasterung
DE112012004809T5 (de) Kantenverfolgung mit Hysterese-Schwellenwertbildung

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R082 Change of representative

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

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee