DE102016103874A1 - Systeme und Verfahren zur weichen Schattierung in 3D-Rendering - Google Patents

Systeme und Verfahren zur weichen Schattierung in 3D-Rendering Download PDF

Info

Publication number
DE102016103874A1
DE102016103874A1 DE102016103874.1A DE102016103874A DE102016103874A1 DE 102016103874 A1 DE102016103874 A1 DE 102016103874A1 DE 102016103874 A DE102016103874 A DE 102016103874A DE 102016103874 A1 DE102016103874 A1 DE 102016103874A1
Authority
DE
Germany
Prior art keywords
light
pixels
occlusion
distance
ray
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
DE102016103874.1A
Other languages
English (en)
Inventor
Justin Decell
Luke 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 DE102016103874A1 publication Critical patent/DE102016103874A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/60Shadow generation
    • 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
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree

Landscapes

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

Abstract

Graphikverarbeitungssysteme und Graphikverarbeitungsverfahren werden beschrieben, welche weiche Schattierungseffekte in gerenderten Bildern bereitstellen. Dies wird auf eine einfache Art und Weise erreicht, die in Echtzeit implementiert werden kann, ohne hohe Verarbeitungskosten auf sich zu nehmen, so dass es zur Implementierung in kostengünstigen Vorrichtungen geeignet ist. Strahlen werden von Positionen auf sichtbaren Oberflächen, die Pixelpositionen entsprechen, in Richtung des Zentrums eines Lichts geworfen und Verdeckungen der Strahlen werden bestimmt. Die Ergebnisse dieser Bestimmungen werden verwendet, um weiche Schatten auf die gerenderten Pixelwerte anzuwenden.

Description

  • Hintergrund
  • In einem Aspekt betrifft die Offenbarung im Allgemeinen 3D-Renderingsysteme, Systemarchitekturen und Verfahren, und in einem spezielleren Aspekt betrifft die Offenbarung Systeme, Architekturen und Verfahren zum asynchronen und gleichzeitigen hybridisierten Rendern, wie beispielsweise hybridisierte Strahlenverfolgung (Ray Tracing) und Rasterisierungs-basiertes Rendering.
  • Graphikverarbeitungseinheiten (GPUs = graphics processing units) stellen hochparallelisierte Rasterisierungs-basierte Rendering-Hardware bereit. Eine herkömmliche Graphikverarbeitungseinheit (GPU) verwendete eine feste Pipeline lediglich für das Rendering von Polygonen mit Texturabbildungen und entwickelte sich allmählich in eine flexiblere Pipeline, die programmierbare Vertex- und Fragmentstadien ermöglicht. Obwohl moderne GPUs mehr Programmierbarkeit von Geometrie und Pixelverarbeitung unterstützen, wird eine Vielfalt von Funktionen innerhalb einer GPU in Festfunktionshardware implementiert. Moderne GPUs können in der Komplexität variieren, wobei Hochleistungs-GPUs Transistorbudgets in der Größenordnung von 4–6 Milliarden Transistoren aufweisen. GPUs werden häufig in Echtzeit-Renderingaufgaben verwendet und Optimierungen für viele GPU-Anwendungen beinhalten das Bestimmen von Abkürzungen, um einen gewünschten Durchsatz von Rahmen pro Sekunde zu erreichen, während ein gewünschtes Niveau subjektiver Videoqualität beibehalten wird. Beispielsweise ist in einem Videospiel ein realistisches Modellieren des Lichtverhaltens selten ein Ziel; stattdessen ist das Erreichen eines gewünschten Aussehens oder ein Renderingeffekt häufig ein hauptsächliches Ziel.
  • Herkömmlicherweise ist die Strahlenverfolgung eine Technik, die für Nicht-Echtzeit-Graphik-Renderingaufgaben hoher Qualität verwendet wird, wie beispielsweise die Erzeugung von Trickfilmen oder das Erzeugen von 2D-Bildern, die das Verhalten von Licht in unterschiedlichen Materialien wirklichkeitsgetreuer modellieren. Bei der Strahlenverfolgung waren die Steuerung des Rendern und die Pipeline-Flexibilität, um ein gewünschtes Ergebnis zu erreichen, häufig kritischere Probleme als das Beibehalten einer gewünschten Rahmenrate. Außerdem sind einige der Arten von Verarbeitungsaufgaben, die für die Strahlenverfolgung benötigt werden, nicht zwangsläufig auf der Hardware implementierbar, die für die Rasterisierung gut geeignet ist.
  • Zusammenfassung
  • Diese Zusammenfassung wird bereitgestellt, um eine Auswahl von Konzepten in einer vereinfachten Form vorzustellen, die nachstehend in der detaillierten Beschreibung weiter beschrieben werden. Diese Zusammenfassung ist nicht dazu bestimmt, Schlüsselmerkmale oder wesentliche Merkmale des beanspruchten Gegenstands zu identifizieren, noch ist sie bestimmt, verwendet zu werden, um den Schutzumfang des beanspruchten Gegenstands zu begrenzen.
  • Schatten sind bedeutende Merkmale, die in 3D-Rendering zu modellieren sind. Für mehr Echtzeit-Graphikanwendungen, können Lichter durch Punktlichter modelliert werden, welche harte Schatten werfen. Dies ist so, weil Punktlichter viel leichter zu modellieren sind als ein Flächenlicht. Techniken existieren, um zu bestimmen, ob ein Punkt auf einer Oberfläche von der Perspektive einer Lichtquelle verdeckt ist. Wenn verdeckt, ist der Punkt vollständig dunkel, und nicht verdeckt, ist er vollständig beleuchtet. Realistische Lichter sind jedoch keine Punktlichter und realistische Schatten weisen sowohl Kernschatten als auch Halbschatten auf.
  • Hier beschriebene Beispiele betreffen das Erstellen von weichen Schatteneffekten. Weiche Schatteneffekte können rechenaufwändig sein, weil die Verarbeitung von weichen Schatten ein Modellieren umfasst, wie Licht von einem Flächenlicht (und keinem Punktlicht) eine Oberfläche beeinflusst, welche teilweise verdeckt ist, und folglich Abschnitte im Kernschatten und Halbschatten aufweist.
  • Eine Vorgehensweise zur weichen Schattierung (soft shadowing) besteht hier darin, sichtbare Oberflächen für Pixel eines Rahmens von Pixeln zu identifizieren. Dies kann durch Strahlenverfolgung oder Rasterisierung durchgeführt werden.
  • Falls durch Rasterisierung, kann ein g-Puffer erzeugt werden, um Information zu unterhalten, wie beispielsweise Tiefe, Normale und Oberflächenidentifikatorinformation. Ein “g-Puffer” ist ein Puffer von Werten, die angeben, welche Oberflächen in der Szene an jeweiligen Pixelpositionen primär sichtbar sind, und Information bezogen auf die Oberflächen, die an diesen Positionen sichtbar sind. Die sichtbaren Oberflächen sind Oberflächen von Objekten in einer 3D-Szene, die an einem oder mehreren Pixeln sichtbar sind. Hier wird der Begriff “Pixel” zweckmäßigerweise verwendet, wobei er jedoch dazu bestimmt ist, um auf irgendeine Unterteilung eines Bereichs des Schirm-Raums (des Rahmens) Bezug zu nehmen, der abgetastet wird (d.h., für welche Aspekte der Offenbarung ausgeführt werden), und muss nicht mit irgendeinem besonderen vorbestimmten Konzept des Begriffs “Pixel” korrelieren.
  • Wenn die sichtbaren Oberflächen identifiziert sind, kann ein Strahl von einem Punkt innerhalb einer Projektion von der Pixelbasisfläche auf die sichtbare Oberfläche (Probenpunkt) in Richtung des Lichts geworfen werden. Typischerweise wird dieser Strahl in Richtung des Zentrums des Lichtes geworfen. In einigen Beispielen kann der Probenpunkt innerhalb der Basisfläche des Pixels verjittert werden. Verjittern kann zum Vermeiden von Aliasing-Problemen entlang Geometrieränder nützlich sein. Ein Ergebnis jeder Strahlenverfolgungsoperation wird aufgezeichnet. Dieses Ergebnis kann das Aufzeichnen eines Abstands zu einem Verdecker umfassen, wenn vorhanden, und kann ebenfalls das Aufzeichnen einer Intensität oder eines Dämpfungswerts umfassen. Beispielsweise können Implementierungen lichtdurchlässige Objekte unterstützen, die teilweise dämpfen. In derartigen Fällen kann es sekundäre Strahlen geben, die von dem verdeckten Objekt emittiert werden, wobei diese verfolgt würden, und schließlich kann ein Betrag der Dämpfung bestimmt werden (d.h., der sekundäre Strahl kann/die sekundären Strahlen können verwendet werden, um zu bestimmen, ob der ursprüngliche Strahl das Licht getroffen oder verfehlt hätte). Beispielsweise kann ein weiterer Verdecker vorhanden sein, der vollständig oder teilweise ist. Somit sollte diese Offenbarung verstanden werden, eine beliebige Anzahl von Schichten von Objekten zu umfassen, die weitere Strahlen emittieren können, die verfolgt werden, um zu bestimmen, welcher Betrag der Verdeckung entlang dieser Strahlenrichtung vorhanden ist.
  • In einer Implementierung gibt es einen primären (Eltern) Strahl, der für jedes Pixel verfolgt wird. In einigen Implementierungen werden alle diese primären Strahlen aufgelöst bevor fortgefahren wird. In anderen Implementierungen können die Strahlen eines Abschnitts der Pixel (z.B. der Wert einer Kachel von Strahlen in einem Kachel-basierten Rasterisierungssystem) aufgelöst werden.
  • In einigen Beispielen wird für jeden der Strahlen, der verdeckt ist (d.h. für jeden der Strahlen, für den das Verfolgen eine Verdeckung angibt), eine Größe und Form eines Mischkernels von einem Abstand zu dem Verdecker berechnet. Die Berechnung der Mischkernelgröße kann ebenfalls einen Abstand von dem Strahlenursprung zu dem Licht und/oder andere Information bezogen auf das Licht, wie beispielsweise eine Form oder ein räumliches Ausmaß des Lichts, berücksichtigen. Der Mischkernel kann ebenfalls als “Filterparameter” bezeichnet werden und beschreibt eine “Mischregion”, über welcher das Mischfilter arbeiten soll. Der Mischkernel kann im Welt-Raum berechnet werden und dann in den Schirm-Raum basierend auf einer aktuellen Projektion und basierend auf einer Tiefe transformiert werden. Hier werden diese Begriffe im allgemeinen Sinne verwendet, um anzugeben, dass der Mischkernel transformiert wird, um Projektion und Abstand von dem Rahmen zu berücksichtigen, so dass, obwohl der Mischkernel einen großen Teil eines Welt-Raum-Bereichs abdecken kann, dieser Welt-Raum-Bereich weit von dem Rahmen sein kann, so dass es scheint, dass er lediglich einige Pixel abdeckt. Umgekehrt kann ein kleiner Welt-Raum-Bereich, wenn er nahe an dem Rahmen ist, mehrere Pixel abdecken.
  • Die Mischregion kann auf dem Pixel zentriert sein, an dem gearbeitet wird. Für irgendein Pixel innerhalb der Mischregion wird Verdeckungsinformation von einem derartigen Pixel mit der des Pixels gemischt, an dem gearbeitet wird. Beispielsweise wird eine gewichtete Interpolation durchgeführt. Implementierungen können ebenfalls unähnliche Oberflächen davon ausschließen, bei dem Mischen enthalten zu sein. Beispielsweise kann eine Tiefenähnlichkeitsprüfung durchgeführt werden. Wenn beispielsweise ein Unterschied zwischen der Tiefe des Pixels, an dem gearbeitet wird, und der eines nahegelegenen Pixels einen Schwellenunterschied überschreitet, kann dieser benachbarte Pixel vom Mischen ausgeschlossen werden. Hier bezieht sich die Tiefe auf ein Konzept, wie weit jedes der Pixel von dem Rahmen ist. Dieser Parameter kann auf eine Vielfalt von Weisen, wie beispielsweise als umgekehrte Tiefe, ausgedrückt werden.
  • Der Mischkernel (oder allgemeiner die “Mischregion”) kann ein Kästchenfilter (Boxfilter) mit einer ungeraden Anzahl von Pixeln in der Breite/Höhe sein. Andere Arten von Filterkonfigurationen können bereitgestellt werden. Unterschiedliche Filterkonfigurationen und Arten können ausprobiert werden. Unterschiedliche Filterkonfigurationen können verwendet werden, um unterschiedliche Formen von Lichtquellen zu modellieren. Ein kreisförmiger Kernel kann ein kreisförmiges oder sphärisches Licht modellieren, wobei jedoch eine Leuchtstoffröhre von einer unterschiedlichen Filterkonfiguration profitieren kann. Wie deutlicher werden wird, so lange wie das Filtern eine Diffusion von Verdeckungsdaten von dem benachbarten Pixel in den Wert für das Pixel verursacht, an dem gearbeitet wird, würde das Filtern imstande sein, ein Weichwerden des Schattens zu verursachen, obwohl diese besondere Vorgehensweise anderen Vorgehensweisen unterlegen sein kann.
  • Die obige Vorgehensweise handhabt jene Pixel, für welche es eine verdeckende Oberfläche gab. Typischerweise würden jedoch nicht alle Pixel verdeckt sein. Für diese Pixel würde es keine bekannte Verdeckertiefe geben. Das würde bedeuten, dass wenigstens etwas Licht dieses Pixel erreicht. Dieses Pixel könnte jedoch noch in einem Halbschatten eines nahegelegenen Verdeckers sein.
  • Implementierungen charakterisieren Beleuchtungsbedingungen für diese Pixel durch Verwenden benachbarter Verdeckungsinformation. In einer Vorgehensweise wird eine Suche innerhalb einer Nachbarschaft (oder “Suchregion”) um das Pixel herum ausgeführt, das verarbeitet wird, um ein am nächsten kommendes Pixel (am nächsten kommend im Schirm-Raum) zu identifizieren, für welches ein Strahl eine Verdeckung gefunden hatte. Es kann ebenfalls bestimmt werden, ob dieses gefundene Pixel eine Tiefe ähnlich derjenigen des Pixels aufweist, das verarbeitet wird. Wenn nicht, dann kann das gefundene Pixel ausgeschlossen werden. Für jene Pixel, die Strahlen aufweisen, die gerade einen Verdecker verfehlt haben, würde diese Suche häufig ein angrenzendes Pixel mit einem Strahl identifizieren, der eine Verdeckung zeigte. Ein Abstand zu diesem Verdecker des Pixels kann als eine Ersatzgröße für einen Abstand für das Pixel verwendet werden, an dem gearbeitet wird (dieser Abstand ist ein Welt-Raum-Abstand zwischen der sichtbaren Oberfläche und dem Verdecker). Da dieser Abstand als eine Grundlage zum Bestimmen der Mischkernelgröße verwendet wird, können einige Implementierungen einfach die Mischkernelgröße erneut verwenden, wie beispielsweise, wenn die Tiefe zwischen diesen Pixeln klein ist (und vorausgesetzt, dass die Transformation/Projektion für den Rahmen nicht geändert würde). Einige Implementierungen können in orthogonalen Richtungen, z.B. in einem Kreuzmuster, suchen. Wie auch immer der Mischkernel erhalten wird, die gleichen Operationen zum Mischen können durchgeführt werden, wie oben beschrieben, um zu bestimmen, wie sehr das Pixel durch die benachbarte Verdeckung im Schatten sein sollte.
  • Insbesondere wird ein maschinenimplementiertes Verfahren zur Graphikverarbeitung bereitgestellt, wobei Positionen von Grundelementen in einer Szene durch Knoten einer hierarchischen Beschleunigungsstruktur dargestellt werden, wobei das Verfahren umfasst:
    Verwenden der hierarchischen Beschleunigungsstruktur, um sichtbare Oberflächen einer Szene für Pixel eines Rahmens von Pixeln zu identifizieren;
    Bestimmen von Ursprüngen zum Werfen von Strahlen von den sichtbaren Oberflächen in Richtung eines Lichts;
    Bestimmen, ob jeder der Strahlen vom Erreichen des Licht verdeckt ist; und
    für einen oder mehrere der Strahlen, die bestimmt werden, nicht von dem Licht verdeckt zu sein:
    Identifizieren eines nächstgelegenen getroffenen Grundelements durch Bestimmen, welcher der Knoten der hierarchischen Beschleunigungsstruktur, der von dem Strahl zu treffen ist, das kleinste Abstandsverhältnis aufweist, wobei ein Abstandsverhältnis für einen Knoten das Verhältnis einer Abmessung des Knotens und des Abstands entlang des Strahls ist, bei dem der Strahl den Knoten trifft; und
    Bestimmen eines Ausmaßes der Verdeckung von dem Licht für das dem Strahlenursprung entsprechende eine oder mehrere Pixel gemäß Daten, die sich auf den bestimmten Knoten beziehen, der das kleinste Abstandsverhältnis aufweist.
  • Die Daten, die sich auf den bestimmten Knoten beziehen, der das kleinste Abstandsverhältnis aufweist, können eines oder beides umfassen von: (i) einer Angabe der Abmessung des Knotens und einer Angabe des Abstands entlang des Strahls, bei dem der Strahl den Knoten trifft, und (ii) dem Abstandsverhältnis des bestimmten Knotens.
  • Das Bestimmen eines Ausmaßes der Verdeckung von dem Licht für das eine oder mehrere Pixel, die dem Strahlenursprung entsprechen, umfasst das Bestimmen eines Winkels, der dem Abstandsverhältnis des bestimmten Knotens entspricht, und das Verwenden des bestimmten Winkels, um das Ausmaß der Verdeckung von dem Licht zu bestimmen.
  • Die Knoten können Voxel sein, die gemäß einer Octree-Struktur bestimmt werden.
  • Das Identifizieren eines nächstgelegenen getroffenen Grundelements für einen Strahl kann umfassen:
    Speichern eines Abstandsverhältnisses des am nächsten kommenden Treffers für den Strahl;
    Absenken innerhalb der hierarchischen Beschleunigungsstruktur von einem aktuellen Niveau für ein Prüfgrundelement, das geprüft wird, wenn der aktuelle Knoten, der dem Prüfgrundelement auf dem aktuellen Niveau entspricht, ein Treffer für den Strahl ist, und wenn das Abstandsverhältnis für den aktuellen Knoten kleiner als das gespeicherte Abstandsverhältnis des am nächsten kommenden Treffers für den Strahl ist; und
    Aktualisieren des gespeicherten Abstandsverhältnisses des am nächsten kommenden Treffers für den Strahl in Reaktion auf das Absenken innerhalb der hierarchischen Beschleunigungsstruktur.
  • Ein Knoten der hierarchischen Beschleunigungsstruktur mit einem relativ niedrigen Abstandsverhältnis kann vor einem Knoten der hierarchischen Beschleunigungsstruktur mit einem relativ hohen Abstandsverhältnis wahlweise abgesenkt werden.
  • Die hierarchische Beschleunigungsstruktur kann in einer Tiefe-zuerst-Weise durchquert werden.
  • Das Bestimmen eines Ausmaßes der Verdeckung von dem Licht für das dem Strahlenursprung entsprechende eine oder mehrere Pixel kann ferner auf das Licht bezogene Information verwenden. Die auf das Licht bezogene Information kann eines oder mehrere umfassen von: eine Position des Lichts in der Szene; einen Abstand des Lichts von dem Ursprung des Strahls; ein räumliches Ausmaß des Lichts in der Szene; und ein räumliches Ausmaß des Lichts wie entlang der Richtung des Strahls betrachtet.
  • Das Bestimmen eines Ausmaßes der Verdeckung von dem Licht für das dem Strahlenursprung entsprechende eine oder mehrere Pixel kann umfassen:
    Bestimmen eines Dämpfungswerts für das nächstgelegene getroffene Grundelement für den Strahl und Verwenden des bestimmten Dämpfungswerts, um das Ausmaß der Verdeckung zu bestimmen.
  • Das Verfahren kann ferner umfassen:
    für jeden der Strahlen, die bestimmt werden, von dem Licht verdeckt zu sein:
    Aufzeichnen eines Abstands entlang des Strahls von der Oberfläche zu seiner jeweiligen Verdeckung;
    Bestimmen einer Mischregion für ein Mischfilter basierend auf dem aufgezeichneten Abstand für den Strahl;
    Transformieren dieser Mischregion in den Rahmen von Pixeln;
    Mischen von Schatteninformation für Pixel in den Rahmen von Pixeln, die innerhalb der transformierten Mischregion sind; und
    Verwenden der gemischten Schatteninformation, um eine Schattierung für das dem Strahlenursprung entsprechende eine oder mehrere Pixel zu bestimmen.
  • Das Verfahren kann ferner umfassen: Bestimmen gerenderter Pixelwerte des Rahmens gemäß den bestimmten Ausmaßen der Verdeckung von dem Licht für die Pixel.
  • Es wird eine Graphikverarbeitungseinheit bereitgestellt, die ausgelegt ist, um einen Rahmen zu rendern, der eine Szene darstellt, wobei Positionen von Grundelementen in der Szene durch Knoten einer hierarchischen Beschleunigungsstruktur dargestellt werden, wobei die Graphikverarbeitungseinheit umfasst:
    Oberflächen-Identifikationslogik, die ausgelegt ist, um Oberflächen innerhalb der Szene zu identifizieren; und
    Verarbeitungslogik, die ausgelegt ist, um Graphikdaten für identifizierte Oberflächen zu verarbeiten;
    wobei die Graphikverarbeitungseinheit ausgelegt ist, um:
    die hierarchische Beschleunigungsstruktur zu verwenden, um sichtbare Oberflächen einer Szene für Pixel eines Rahmens von Pixeln zu identifizieren;
    Ursprünge zum Werfen von Strahlen von den sichtbaren Oberflächen in Richtung eines Lichts zu bestimmen;
    zu bestimmen, ob jeder der Strahlen vom Erreichen des Lichts verdeckt ist; und
    für einen oder mehrere der Strahlen, die bestimmt werden, nicht von dem Licht verdeckt zu sein:
    Identifizieren eines nächstgelegenen getroffenen Grundelements durch Bestimmen, welcher der Knoten der hierarchischen Beschleunigungsstruktur, der von dem Strahl zu treffen ist, das kleinste Abstandsverhältnis aufweist, wobei ein Abstandsverhältnis für einen Knoten das Verhältnis einer Abmessung des Knotens und des Abstands entlang des Strahls ist, bei dem der Strahl den Knoten trifft; und
    Bestimmen eines Ausmaßes der Verdeckung von dem Licht für das einem Strahlenursprung entsprechende eine oder mehrere Pixel gemäß Daten bezogen auf den bestimmten Knoten, der das kleinste Abstandsverhältnis aufweist.
  • Die Graphikverarbeitungseinheit kann ausgelegt sein, um zu bestimmen: das Ausmaß der Verdeckung von dem Licht für das einem Strahlenursprung entsprechende eine oder mehrere Pixel durch Bestimmen eines Winkels, der dem Abstandsverhältnis des bestimmten Knotens entspricht, und Verwenden des bestimmten Winkels, um das Ausmaß der Verdeckung von dem Licht zu bestimmen.
  • Die Graphikverarbeitungseinheit kann ausgelegt sein, um ein nächstgelegenes getroffenes Grundelement für einen Strahl zu identifizieren, durch:
    Speichern eines Abstandsverhältnisses des am nächsten kommenden Treffers für den Strahl;
    Absenken innerhalb der hierarchischen Beschleunigungsstruktur von einem aktuellen Niveau für ein Prüfgrundelement, das geprüft wird, wenn der aktuelle Knoten, der dem Prüfgrundelement auf dem aktuellen Niveau entspricht, ein Treffer für den Strahl ist, und wenn das Abstandsverhältnis für den aktuellen Knoten kleiner als das gespeicherte Abstandsverhältnis des am nächsten kommenden Treffers für den Strahl ist; und
    Aktualisieren des gespeicherten Abstandsverhältnisses des am nächsten kommenden Treffers für den Strahl in Reaktion auf das Absenken innerhalb der hierarchischen Beschleunigungsstruktur.
  • Die Graphikverarbeitungseinheit kann ausgelegt sein, um ein Ausmaß der Verdeckung von dem Licht für ein Pixel weiter unter Verwendungen von auf das Licht bezogener Information zu bestimmen.
  • Die Graphikverarbeitungseinheit kann ferner einen Puffer umfassen, der ausgelegt ist, um für jeden des einen oder mehrere Strahlen ein Abstandsverhältnis des nächstgelegenen getroffenen Grundelements für den Strahl zu speichern.
  • Die Graphikverarbeitungseinheit kann ausgelegt sein, um für jeden der Strahlen, die bestimmt werden, von dem Licht verdeckt zu sein:
    einen Abstand entlang des Strahls von der Oberfläche zu seiner jeweiligen Verdeckung aufzuzeichnen;
    eine Mischregion für ein Mischfilter basierend auf dem aufgezeichneten Abstand für den Strahl zu bestimmen;
    diese Mischregion in den Rahmen von Pixeln zu transformieren;
    Schatteninformation für Pixel in den Rahmen von Pixeln zu mischen, die innerhalb der transformierten Mischregion sind; und
    die gemischte Schatteninformation zu verwenden, um eine Schattierung für das eine oder mehrere Pixel entsprechend dem Strahlenursprung zu bestimmen.
  • Es wird ein maschinenimplementiertes Verfahren zur Graphikverarbeitung bereitgestellt, umfassend:
    Identifizieren sichtbarer Oberflächen einer Szene für Pixel eines Rahmens von Pixeln;
    Bestimmen von Ursprüngen zum Werfen von Strahlen von den sichtbaren Oberflächen in Richtung eines Lichts;
    für einen oder mehrere der Strahlenursprünge;
    Werfen mehrere Prüfstrahlen von dem bestimmten Ursprung in Richtung unterschiedlicher Punkte innerhalb des Lichts;
    Bestimmen, ob jede der Prüfstrahlen vom Erreichen des Lichts verdeckt sind;
    Verwenden der Ergebnisse des Bestimmens, ob die Prüfstrahlen vom Erreichen des Lichts verdeckt sind, um ein Ausmaß der Verdeckung von dem Licht für ein oder mehrere Pixel zu bestimmen, die dem Strahlenursprung entsprechen.
  • Beispielsweise können die Ergebnisse des Bestimmens, ob die Prüfstrahlen vom Erreichen des Flächenlichts verdeckt sind, verwendet werden, um einen streifenden Strahl zu bestimmen, welcher der am nächsten kommende Strahl zu einer Verdeckung ist, welche nicht durch die Verdeckung verdeckt wird, wobei ein Winkel zwischen dem streifenden Strahl und einem Strahl, der in Richtung des Zentrums des Flächenlicht geworfen wird, verwendet wird, um ein Ausmaß der Verdeckung von dem Licht für das Pixel zu bestimmen. Beispielsweise kann dieser Winkel einen unverdeckten Kegelschnitt definieren, der verwendet werden kann, um einen Abschnitt des Lichts darzustellen, der unverdeckt ist.
  • Die hier beschriebenen Graphikverarbeitungssysteme können in Hardware auf einer integrierten Schaltung verkörpert sein. Es kann ein Verfahren zur Herstellung, bei einem Herstellungssystem für eine integrierte Schaltung, einer Graphikverarbeitungseinheit bereitgestellt werden, wie hier beschrieben. Es kann ein Definitionsdatensatz für eine integrierte Schaltung bereitgestellt werden, der, wenn in einem Herstellungssystem für eine integrierte Schaltung verarbeitet, das System konfiguriert, eine Graphikverarbeitungseinheit herzustellen, wie hier beschrieben. Es kann ein nicht-transitorisches computerlesbares Speichermedium bereitgestellt werden, das darauf gespeichert eine computerlesbare Beschreibung einer integrierten Schaltung aufweist, die, wenn verarbeitet, ein Layout-Verarbeitungssystem veranlasst, eine Schaltungs-Layout-Beschreibung zu erzeugen, die in einem Herstellungssystem für eine integrierte Schaltung verwendet wird, um eine Graphikverarbeitungseinheit herzustellen, wie hier beschrieben.
  • Des Weiteren kann ein Herstellungssystem für eine integrierte Schaltung bereitgestellt werden, umfassend:
    ein nicht-transitorisches computerlesbares Speichermedium, das darauf gespeichert eine computerlesbare Beschreibung für eine integrierte Schaltung aufweist, die eine Graphikverarbeitungseinheit beschreibt, wie hier beschrieben;
    ein Layout-Verarbeitungssystem, das ausgelegt ist, die Beschreibung für eine integrierte Schaltung zu verarbeiten, um eine Schaltungs-Layout-Beschreibung einer integrierten Schaltung zu erzeugen, die eine Graphikverarbeitungseinheit verkörpert, wie hier beschrieben; und
    ein Erzeugungssystem für eine integrierte Schaltung, das ausgelegt ist, eine Graphikverarbeitungseinheit, wie hier beschrieben, gemäß der Schaltungs-Layout-Beschreibung herzustellen.
  • Es kann ein Computerprogrammcode zum Durchführen irgendeines der hier beschriebenen Verfahren bereitgestellt werden. Es kann ein nicht-transitorisches computerlesbares Speichermedium bereitgestellt werden, das darauf gespeichert computerlesbare Anweisungen aufweist, die, wenn an einem Computersystem ausgeführt, das Computersystem veranlassen, eines der hier beschriebenen Verfahren durchzuführen.
  • Die obigen Merkmale können geeignet kombiniert werden, wie es für einen Fachmann offensichtlich sein würde, und können mit irgendeinem der Aspekte der hier beschriebenen Beispiele kombiniert werden.
  • Kurze Beschreibung der Zeichnungen
  • Beispiele werden nun detailliert mit Bezug auf die begleitenden Zeichnungen beschrieben, in denen:
  • 1a in einem ersten Beispiel zeigt, wie weiche Schatten von einer Verdeckung geworfen werden;
  • 1b in einem zweiten Beispiel zeigt, wie weiche Schatten von einer Verdeckung geworfen werden;
  • 2 ein Graphikverarbeitungssystem zeigt;
  • 3 ein Ablaufdiagramm für ein Verfahren zur Graphikverarbeitung gemäß einem ersten Beispiel ist;
  • 4 eine zu rendernde Szene von einem Blickpunkt veranschaulicht;
  • 5 das Mischen von Basisflächen für Positionen auf einer sichtbaren Oberfläche in der Szene veranschaulicht;
  • 6 das Mischen von Basisflächen veranschaulicht, die in den Rahmen von Pixeln transformiert wurden;
  • 7 ein Ablaufdiagramm für ein Verfahren zur Graphikverarbeitung gemäß einem zweiten Beispiel ist;
  • 8a eine erste Veranschaulichung eines Strahls ist, der eine Verdeckung knapp verfehlt;
  • 8b eine zweite Veranschaulichung eines Strahl ist, der eine Verdeckung knapp verfehlt, die Knoten einer hierarchischen Beschleunigungsstruktur zeigt;
  • 9 eine dritte Veranschaulichung eines Strahls ist, der eine Verdeckung knapp verfehlt;
  • 10 eine Oberfläche in einer Szene veranschaulicht, die von mehreren Lichtern illuminiert wird;
  • 11 ein Ablaufdiagramm für ein Verfahren zur Graphikverarbeitung gemäß einem dritten Beispiel ist;
  • 12 ein hybrides Graphikverarbeitungssystem zeigt;
  • 13 ein Computersystem zeigt, in welchem ein Graphikverarbeitungssystem implementiert ist; und
  • 14 ein Herstellungssystem für integrierte Schaltungen zum Erzeugen einer integrierten Schaltung zeigt, die ein Graphikverarbeitungssystem verkörpert.
  • Die begleitenden Zeichnungen veranschaulichen verschiedene Beispiele. Der Fachmann wird erkennen, dass die veranschaulichten Elementgrenzen (z.B. Kästchen, Gruppen von Kästchen oder andere Formen) in den Zeichnungen ein Beispiel der Grenzen darstellen. Es kann sein, dass in einigen Beispielen ein Element wie mehrere Elemente ausformet sein kann oder dass mehrere Elemente wie ein Element ausformet sein können. Gemeinsame Bezugsziffern werden überall in den Figuren verwendet, um gegebenenfalls ähnliche Merkmale anzugeben.
  • Detaillierte Beschreibung
  • Die folgende Beschreibung wird beispielhaft vorgestellt, um es einem Fachmann zu ermöglichen, die Erfindung herzustellen und zu verwenden. Die vorliegende Erfindung ist nicht auf die hier beschriebenen Ausführungsformen begrenzt und verschiedenen Modifikationen an den offenbarten Ausführungsformen werden Fachleuten offensichtlich sein.
  • Ausführungsformen werden nun lediglich beispielhaft beschrieben.
  • Wie oben beschrieben, sind harte Schatten (z.B. von Punktlichtern geworfen) relativ einfach zu rendern. Für harte Schatten kann ein Strahl von einer einem Pixel entsprechenden Oberflächenposition in Richtung eines Lichts geworfen werden; wenn der Strahl einen Verdecker trifft, dann ist das Pixel im Schatten, und wenn der Strahl keinen Verdecker trifft, dann ist das Pixel nicht im Schatten und wird von dem Licht illuminiert. Tatsächlich sind jedoch viele Schatten weiche Schatten, weil beispielsweise Lichtquellen nicht unendlich kleine Punkte sind und weil Streuung zwischen Lichtoberflächen und Oberflächen in einer Szene auftritt.
  • 1a zeigt ein erstes Beispiel eines Flächenlichts 102 (d.h. kein Punktlicht), welches eine Szene illuminiert, einschließlich einer sichtbaren Oberfläche 104 und einer Verdeckung 106. Bereiche der Oberfläche 104, welche im Blick des gesamten Flächenlichts 102 sind, werden vollständig beleuchtet, und Bereiche der Oberfläche 104, welche von dem gesamten Licht 102 durch die Verdeckung 106 verdeckt sind, sind im vollen Schatten (der als “Kernschatten (Umbra)” bezeichnet werden kann). Der Bereich, in dem ein Schatten zwischen vollständig beleuchtet und vollständig im Schatten übergeht, wird der “Halbschatten (Penumbra)” genannt. Bereiche der Oberfläche 104, die im Halbschatten ist, werden von einigem jedoch nicht allem des Lichts 102 durch die Verdeckung 106 verdeckt.
  • 1b zeigt ein dem ersten Beispiel ähnliches zweites Beispiel, bei dem die Verdeckung 106 näher an der Oberfläche 104 ist. Die beiden in 1a und 1b gezeigten Beispiele veranschaulichen, dass die Halbschattengröße von dem Verhältnis des Abstands (d) von der Oberfläche 104 zu der Verdeckung 106 und des Abstands (D) von der Oberfläche 104 zu dem Licht 102 abhängig ist. Die Größe des Halbschattens, der durch einen Rand der Verdeckung 106 erzeugt wird, ist ebenfalls von dem räumlichen Ausmaß (L) des Flächenlichts 102 abhängig.
  • 2 veranschaulicht ein Graphikverarbeitungssystem 200, welches eine Graphikverarbeitungseinheit 202 und einen Speicher 204 umfasst. Die Graphikverarbeitungseinheit 202 umfasst Oberflächen-Identifikationslogik 206, Verarbeitungslogik 208, einen Bildpuffer 210 und Steuerlogik 212. Die Oberflächen-Identifikationslogik ist ausgelegt, um Oberflächen innerhalb einer Szene zu identifizieren, die gerendert wird. Die Verarbeitungslogik 208 umfasst einen oder mehrere Ausführungskerne und ist ausgelegt, um Graphikdaten für Oberflächen zu verarbeiten, die von der Oberflächen-Identifikationslogik 206 identifiziert werden. Der Bildpuffer ist ausgelegt, um gerenderte Pixelwerte zu speichern. Die Steuerlogik 212 ist ausgelegt, um den Betrieb des Graphikverarbeitungssystems 200 zu steuern.
  • Ein erstes Beispiel des Betriebs des Graphikverarbeitungssystems 200 wird mit Bezug auf das Ablaufdiagramm in 3 beschrieben.
  • Graphikdaten, die Objekte in einer Szene darstellen, werden an der Graphikverarbeitungseinheit 202 empfangen. Die Graphikdaten können Grundelemente umfassen, die Oberflächen von zu rendernden Objekten darstellen. Grundelemente sind häufig Dreiecke, können jedoch andere Formen annehmen, z.B. andere zweidimensionale Formen oder Punkte oder Linien. Ein Grundelement kann durch einen Satz von Eckpunkten definiert werden, wobei z.B. drei Eckpunkte ein dreieckiges Grundelement definieren. Die Graphikdaten können Eckpunktdaten (z.B. Positionsdaten und Attributdaten, wie beispielsweise Texturdaten) für die Eckpunkte der Grundelemente in der Szene und Angaben für die Grundelemente umfassen, um anzugeben, welche der Eckpunkte die Grundelemente bilden.
  • In Schritt S302 identifiziert die Oberflächen-Identifikationslogik 206 sichtbare Oberflächen für Pixel eines Rahmens. Mit anderen Worten ist ein Rahmen zu rendern, um eine Ansicht der Szene von einem bestimmten Blickpunkt darzustellen, und der Rahmen umfasst eine Anordnung von Pixelpositionen. Für jede Pixelposition des Rahmens wird eine Oberfläche in der Szene, welche primär in diesem Pixel sichtbar ist, in Schritt S302 identifiziert. Angaben der sichtbaren Oberflächen für die Pixel werden von der Oberflächen-Identifikationslogik 206 der Verarbeitungslogik 208 bereitgestellt. Ein oder mehrere unterschiedliche Verfahren können von der Oberflächen-Identifikationslogik 206 verwendet werden, um sichtbare Oberflächen für die Pixel in der Szene zu identifizieren, wobei z.B. Rasterisierung oder Strahlenverfolgung verwendet werden kann, um sichtbare Oberflächen zu identifizieren. Verfahren zur Rasterisierung und Verfahren zur Strahlenverfolgung zum Identifizieren sichtbarer Oberflächen für Pixel sind in der Technik bekannt, und als solche werden im Sinne der Prägnanz die Einzelheiten dieser Verfahren hier nicht detailliert beschrieben.
  • 4 zeigt ein einfaches Beispiel eines Teils einer Szene einschließlich eines Flächenlichts 402, einer sichtbaren Oberfläche 404 und einer Verdeckung 406. Der Blickpunkt, aus dem die Szene betrachtet wird, wird bei 408 gezeigt, und die Betrachtungsebene des zu rendernden Rahmens wird bei 410 dargestellt. In diesem einfachen Beispiel wird lediglich eine sichtbare Oberfläche gezeigt, wobei es jedoch erkennbar sein sollte, dass es in anderen Beispielen viele sichtbare Oberflächen innerhalb der Szene geben kann.
  • In Schritt S304 bestimmt die Verarbeitungslogik 208 einen Ursprung zum Werfen eines Strahls von der sichtbaren Oberfläche 404 für jedes der Pixel in Richtung des Lichts 402. Die Punkte 412 1, 412 2, 412 3 und 412 4 stellen vier Positionen auf der sichtbaren Oberfläche 404 dar, welche den vier Pixeln des Rahmens entsprechen, und diese vier Positionen 412 sind die bestimmten Ursprünge der Strahlen für diese vier Pixel. Es ist ersichtlich, dass die Position 412 1 in der Kernschatten(d.h. Vollschatten)-Region ist, die Positionen 412 2 und 412 3 im Halbschatten sind und die Position 412 4 überhaupt nicht im Schatten ist. Die Strahlen werden von den bestimmten Positionen 412 in Richtung des Zentrums des Lichts 402 geworfen. Es sei angemerkt, dass in diesem Beispiel ein Strahl für eine jedem Pixel entsprechende Position geworfen wird. Dies macht die hier beschriebenen Beispielen viel einfacher zu implementieren als wenn mehrere Strahlen von jeder Position in Richtung unterschiedlicher Teile des Flächenlichts 402 geworfen würden. Insbesondere kann dies den hier beschriebenen Verfahren ermöglichen, in Echtzeit und/oder auf Vorrichtungen implementiert zu werden, wie beispielsweise mobilen Vorrichtungen, welche enge Beschränkungen auf die Verarbeitungsressourcen, physische Größe und/oder Leistungsverbrauch einer darauf implementierten Graphikverarbeitungseinheit aufweisen können.
  • Es ist nicht notwendig, einen Strahl für jedes Pixel zu werfen, und in einigen Fällen können Unterabtastungstechniken verwendet werden. Auf ähnliche Weise kann es wünschenswert sein, mehrere Strahlen von einem einzigen Pixel in manchen Fällen zu werfen.
  • In Schritt S306 bestimmt die Verarbeitungslogik 208, ob jeder der Strahlen vom Erreichen des Flächenlichts 402 verdeckt ist. In dem in 4 gezeigten Beispiel sind die von Positionen 412 1 und 412 2 geworfenen Strahlen verdeckt, wobei jedoch die von Positionen 412 3 und 412 4 geworfenen Strahlen nicht verdeckt sind.
  • Der Halbschatten kann bestehend aus zwei verschiedenen Regionen betrachtet werden: einer ersten Region, für welche Strahlen von dem Zentrum des Lichts 402 verdeckt sind, und einer zweiten Region, für welche Strahlen nicht von dem Zentrum des Lichts 402 verdeckt sind. Für die erste Region (z.B. einschließlich Position 412 2) kann ein Prozess einer “Erosion” einer entsprechenden harten Schattenregion angewendet werden, um den weichen Schattierungseffekt in diesem Teil des Halbschattens zu bestimmen. Für die zweite Region (z.B. einschließlich Position 412 3) kann ein Prozess einer “Dilatation” einer entsprechenden harten Schattenregion angewendet werden, um den weichen Schattierungseffekt in diesem Teil des Halbschattens zu bestimmen.
  • In Schritt S308 wird für jeden der Strahlen, die bestimmt werden, von dem Licht 402 verdeckt zu sein (z.B. den Strahlen von Positionen 412 1 und 412 2), ein Abstand entlang des Strahls von der Oberfläche 404 zu der Verdeckung 406 aufgezeichnet. Insbesondere unterhält die Verarbeitungslogik 208 einen Puffer, um einen Abstand für jede Pixelposition des Rahmens aufzuzeichnen, der gerendert wird. Die Abstandswerte können zur Speicherung in dem Puffer quantisiert oder anderweitig komprimiert werden, um die Speicheranforderungen des Puffers zu verringern.
  • In einigen Beispielen bestimmt die Verarbeitungslogik 208 ebenfalls einen Dämpfungswert für die Verdeckung 406. Der Dämpfungswert kann in einem Puffer für jeden Strahl gespeichert werden, der durch die Verdeckung 406 verdeckt ist. Auf diese Weise kann die Verarbeitungslogik 208 einen Abstand und einen Dämpfungsfaktor für jede Pixelposition des Rahmens aufzeichnen. Es sei angemerkt, dass in einigen Beispielen ein Dämpfungswert für die Strahlen nicht bestimmt oder aufgezeichnet wird, beispielsweise weil dies einfacher zu implementieren ist oder weil die gesamte oder der größte Teil der Geometrie in der Szene lichtundurchlässig ist.
  • Das Speichern eines Dämpfungswert ermöglicht Schatten, die von nicht lichtundurchlässigen Verdeckungen geworfen werden (z.B. Verdeckungen, welche wenigstens teilweise lichtdurchlässig sind oder “punch-through (durchgestanzte)” Texturen aufweisen), modelliert zu werden.
  • Manchmal kann der Dämpfungswert mehrere Kanäle, z.B. rot, grün und blau, enthalten. Dies ermöglicht Schatten-werfenden Objekte, einen “Buntglass”-Effekt aufzuweisen, wobei sie gewisse Lichtfarben und keine anderen wahlweise dämpfen, was getönte Schatten auf der Schatten-empfangenden Oberfläche erzeugt.
  • Beispielsweise kann ein Dämpfungswert für die Verdeckung 406 durch Verarbeiten einer Textur für die Verdeckung 406 bestimmt werden, um ein Niveau zu bestimmen, auf das die Verdeckung 406 Licht dämpft. Wenn die auf die Verdeckung 406 anzuwendende Textur beispielsweise lichtundurchlässig ist, dann wird die Verdeckung bestimmt, Licht vollständig zu dämpfen. Wenn die auf die Verdeckung 406 anzuwendende Textur jedoch lichtdurchlässig oder punch-through ist, dann ist das Niveau der Dämpfung variabel und wird durch Abtasten der Textur bestimmt. Auf diese Weise kann die Schattierung des Pixels, das den Positionen 412 1 und 412 2 entspricht, jegliches Licht berücksichtigen, das durch die Verdeckung 406 aufgrund einer lichtdurchlässigen oder punch-through Textur laufen kann. Eine ‘punch-through’ Textur ist eine Textur, welche einige “Löcher” umfasst, so dass Licht durch die Verdeckung 406 laufen kann.
  • Die Bestimmung eines Dämpfungswerts für die Verdeckung 406 kann das Werfen eines sekundären Strahls von der Verdeckung 406 in Richtung des Lichts 402 umfassen (wie durch die gestrichelten Linien in 4 dargestellt), um ein Ausmaß zu bestimmen, zu dem die Verdeckung 406 selbst von dem Licht 402 verdeckt ist. Beispielsweise könnte es eine andere Verdeckung in der Szene geben, welche irgendwelches von dem Licht 402 zu der Verdeckung 406 laufende Licht blockiert, wobei in diesem Fall, sogar wenn die Verdeckung lichtdurchlässig ist, der Dämpfungswert, der für Pixel entsprechend den Positionen 412 1 und 412 2 aufgezeichnet wird, dann eingestellt wird, um anzugeben, dass das Licht von dem Zentrum des Flächenlichts 402 vollständig gedämpft ist.
  • Die Bestimmung eines Dämpfungswerts für die Verdeckung 406 kann Verfolgen der Ausbreitung eines Strahls und Bestimmen eines Schnittpunktbereichs des Strahls mit der Verdeckung 406 umfassen. Der Schnittpunktbereich kann analysiert werden, um den Dämpfungswert zu bestimmen. Das Verfolgen der Ausbreitung eines Strahls, wie er sich durch den Raum bewegt, kann helfen, um Aliasing insbesondere in punch-through Texturen zu bekämpfen. Den Strahl kann man sich als ein Kegelsegment für die Zwecke des Anti-Aliasing vorstellen. Dies ermöglicht Schattierung an dem Strahlschnittpunkt, um einen Integral über die Oberfläche im Gegensatz zu einer Punktabtastung zu bewerten. Dies beseitigt Aliasing wirksam, das verursacht wird, wenn ein punch-through Objekt abgetastet wird, weil der Kegel ermöglicht, dass ein geeignetes MIP-Niveau einer Textur ausgewählt wird, und dann ein Teildämpfungswert (irgendwo zwischen 0,0 und 1,0) verwendet werden kann. In Fällen, in denen der Schatten einer Hochfrequenz-Textur mit unzureichender Schirmauflösung betrachtet wird, um zu ermöglichen, dass alle Textureinzelheiten im Schatten gesehen werden können, ermöglicht dies eine geeignete Unschärfebildung anstatt von Aliasing. Eine Implementierung zum Verfolgen der Strahlausbreitung wird “Strahldifferentiale” genannt.
  • Beim Verfolgen der Ausbreitung eines Strahls kann eine Anfangsausbreitung des Strahls, der von der sichtbaren Oberfläche für das entsprechende Pixel geworfen wurde, basierend auf der Tiefe der sichtbaren Oberfläche in der Szene und der Oberflächennormalen der sichtbaren Oberfläche eingestellt werden. Beispielsweise wird in einem hybriden Zusammenhang (wobei Rasterisierung anstatt Strahlenverfolgung für primäre Strahlen verwendet wird), die Anfangsausbreitung eines Strahls basierend darauf eingestellt, was die Strahlausbreitung von dem Oberflächenpunkt gewesen wäre, wie von einer virtuellen Kamera aus gesehen, die der Ansichtsprojektion entspricht. Um Aliasing am wirksamsten zu bekämpfen, sollte die Ausbreitung des Strahls die Fläche verfolgen, wie von einem einzigen Pixel betrachtet, was eine wirksame Integration über alle Daten ermöglicht, die für dieses Pixel wirksam abgetastet wurden. Die Verarbeitungslogik 208 kann x- und y-Divergenz getrennt verfolgen. Eine Konstante, die den Abstand zwischen Pixeln in der Kameraprojektion darstellt, kann durch den Tiefenwert skaliert werden, der den Abstand von der Betrachtungsebene 410 zu dem ersten sichtbaren Objekt darstellt (das Objekt, das den Schatten empfängt, welches in 4 die Oberfläche 404 ist), und dann kann die Divergenz in den x- und y-Achsen jeweils unter Berücksichtigung der Normalen an dem Punkt eingestellt werden, bei dem das Objekt gerendert wird (z.B. der Normalen an dem Punkt 412). Anders ausgedrückt ist dies das Projizieren des Pixels auf die sichtbare Oberfläche 404 und das Initialisieren der Verfolgungswerte der Ausbreitung des Strahls basierend auf dieser projizierten Pixelbasisfläche.
  • Für Strahlen, die nicht verdeckt sind (z.B. Strahlen von Positionen 412 3 und 412 4), sucht die Verarbeitungslogik 208 in Schritt S310 nach einem Pixel, für das ein Strahl verdeckt ist, und wenn ein Pixel in der Suche gefunden wird, dann wird der Abstand für dieses gefundene Pixel für das aktuelle Pixel oder Element aufgezeichnet, an dem gearbeitet wird. Beispielsweise kann die Verarbeitungslogik 208, innerhalb einer Suchregion für das aktuelle Pixel, nach einem am nächsten kommenden Pixel in dem Rahmen von Pixeln suchen, für das ein Strahl bestimmt wird, von dem Licht verdeckt zu sein. Die Suchregion kann in dem Raum der Rahmenpixel definiert sein, in dem Pixel gerendert werden, wobei sie beispielsweise ein 5×5 Block von Pixeln des Rahmens sein kann, der auf dem aktuellen Pixel zentriert ist. Die Suchregion kann eine unterschiedliche Größe und/oder Form in unterschiedlichen Beispielen aufweisen. Des Weiteren könnte die Suche lediglich Pixel in der Suchregion berücksichtigen, wenn davon ausgegangen wird, dass sie eine ähnliche Oberfläche wie das aktuelle Pixel zeigen. Beispielsweise kann eine Tiefenähnlichkeitsprüfung oder eine andere Diskontinuitätsprüfung durchgeführt werden. Wenn ein Unterschied zwischen der Tiefe des Pixels, an dem gearbeitet wird, und der Tiefe eines nahegelegenen Pixels beispielsweise einen Schwellenunterschied überschreitet, kann dieses benachbarte Pixel von der Suche ausgeschlossen werden. Der Suchkernel kann ein konstantes Suchmuster aufweisen, wobei z.B. ein kreuzförmiger Kernel einen guten Ausgleich zwischen Kosten und Leistung bereitstellt, während ein Kästchenmuster bessere Ergebnisse bereitstellen kann, jedoch aufwändiger zu implementieren ist. Ein stochastisches TAP-Muster könnte als eine Mischregion verwendet werden, die für jedes Pixel unterschiedlich sein kann, welches die niedrigsten Artefakte auf Kosten des Erzeugens eines gewissen Bildrauschens geben kann.
  • Von den Pixeln, die in der Suche gefunden werden, für die ein Strahl verdeckt ist, kann von diesen gefundenen Pixeln das Pixel ausgewählt werden, das dem aktuellen Pixel am nächsten kommt. Der für das ausgewählte Pixel aufgezeichnete Abstand wird als eine Ersatzgröße verwendet, um den Abstand von dem aktuellen Pixel zu der Verdeckung 406 darzustellen, und als solches wird dieser Abstand in dem Abstandspuffer für das aktuelle Pixel aufgezeichnet, obwohl das aktuelle Pixel von dem Zentrum des Lichts 402 nicht verdeckt ist. Beispielsweise könnte die Suche nach dem Pixel, das der Position 412 3 entspricht, möglicherweise das Pixel, das der Position 412 2 entspricht, in ihrer Suchregion finden, und als solches wird der für die Position 412 2 aufgezeichnete Abstand ebenfalls für die Position 412 3 aufgezeichnet. Alternativ können die Abstände von mehreren der gefundenen Pixel zusammen gemischt werden, um einen repräsentativen Abstand für die nicht verdeckten Pixel zu bilden.
  • Wenn die Suche kein Pixel in der Suchregion findet, für das ein Strahl verdeckt ist, dann kann dies angeben, dass das aktuelle Pixel vollständig beleuchtet ist. Beispielsweise könnte die Suche nach dem Pixel, das der Position 412 4 entspricht, möglicherweise keinen beliebigen Pixel in ihrer Suchregion finden, für welche ein Strahl verdeckt ist.
  • In Schritt S312 führt die Verarbeitungslogik 208 verschiedene Schritte für jeden der Strahlen durch, für den ein Abstand aufgezeichnet wird (d.h. für Pixel, die wenigstens teilweise im Schatten sind). Parameter für ein Mischfilter (d.h. eine “Mischregion” oder ein “Mischkernel”) werden für einen Strahl basierend auf dem aufgezeichneten Abstand bestimmt. Wie oben beschrieben, je näher die Verdeckung 406 zu der Oberfläche 404 ist, desto kleiner ist der Halbschatten, und als solches würde der bestimmte Mischkernel desto kleiner sein.
  • 5 veranschaulicht eine sichtbare Region 502 der Oberfläche 404, wie von oberhalb der Oberfläche 404 aus betrachtet. Die Betrachtungsebene 410 kann zum Beispiel quadratisch sein und die Projektion dieser Betrachtungsebene 410 auf die Oberfläche 404 führt zu einem länglichen Rechteck 502. Die vier Positionen 412 1 bis 412 4 werden in 5 gezeigt. Mischkernel 504 1, 504 2 und 504 3 sind veranschaulicht, die für die jeweiligen Positionen 412 1, 412 2 und 412 3 bestimmt wurden. Es ist ersichtlich, dass die Mischkernel näherungsweise von der gleichen Größe sind, weil sie auf dem Abstand von den Positionen 412 1 und 412 2 zu der Verdeckung 406 beruhen. Da die Position 412 4 vollständig beleuchtet ist, wird kein Mischkernel für diese Position bestimmt. In diesem Beispiel sind die Mischkernel in den x- und y-Richtungen auf der Oberfläche 404 symmetrisch.
  • Die Mischkernel werden in den Rahmen von Pixel transformiert. 6 zeigt ein Beispiel eines Rahmens von Pixeln 602. Jedes Pixel in dem Rahmen kann auf eine Region in der Szene abgebildet werden. Die Abbildung bewahrt nicht immer die Form des Pixels aufgrund von perspektivischen Effekten. Auf ähnliche Weise kann eine Region der Szene zurück in ein oder mehrere Pixel in dem Rahmen abgebildet werden. Das Pixel 612 1 entspricht der Position 412 1; das Pixel 612 2 entspricht der Position 412 2; das Pixel 612 3 entspricht der Position 412 3; und das Pixel 612 4 entspricht der Position 412 4. Die in 6 gezeigten Gitterlinien stellen die Grenzen zwischen Regionen in dem Rahmen dar. Diese Transformation zurück in den Schirm-Raum ist einer der Parameter für einen Filterkernel. Der Mischkernel 504 1 für die Position 412 1 wird in den Rahmen transformiert, wie als 604 1 gezeigt; der Mischkernel 504 2 für die Position 412 2 wird in den Rahmen transformiert, wie als 604 2 gezeigt; und der Mischkernel 504 3 für die Position 412 3 wird in den Rahmen transformiert, wie als 604 3 gezeigt. Es ist ersichtlich, dass die Transformation die Form der Mischkernel beeinflusst hat. Insbesondere sind die quadratischen Mischkernel auf der Oberfläche 404 in der horizontalen Richtung länglich, um Rechtecke in dem Rahmen 602 zu werden.
  • Die Schatteninformation für Pixel innerhalb eines transformierten Mischkernels kann gemischt sein. Beispielsweise kann die Schatteninformation für ein Pixel eine Angabe darüber umfassen, ob der Strahl für dieses Pixel vom Erreichen des Zentrums des Lichts 402 verdeckt war. Die Schatteninformation für ein Pixel kann ebenfalls die Dämpfungswerte umfassen, die für die Pixel aufgezeichnet werden. Das Mischen der Schatteninformation kann das Kombinieren der Werte umfassen (z.B. Flag-Bits, die angeben, ob die Strahlen für die Pixel in dem Mischkernel vom Erreichen des Zentrums des Lichts 402 verdeckt waren, und/oder die Dämpfungswerte). Das “Kombinieren” kann Mittelwertbildung, Summieren, Interpolieren oder Durchführen einer anderen Funktion an den Werten für die Pixel innerhalb des Mischkernels umfassen. Das Mischen kann lediglich Pixel innerhalb des Mischkernels berücksichtigen, falls diese Pixel für sich gesehen eine ähnliche Oberfläche wie das aktuelle Pixel aufweisen. Beispielsweise kann eine Ähnlichkeitsprüfung der Tiefe durchgeführt werden. Wenn beispielsweise ein Unterschied zwischen der Tiefe des Pixels, an dem gearbeitet wird, und der eines anderen Pixels innerhalb des Mischkernels einen Schwellenunterschied überschreitet, kann dieses benachbarte Pixel von dem Mischprozess ausgeschlossen werden. Ein Kernel, wo Pixel stochastisch ausgewählt werden, kann ebenfalls verwendet werden. Außerdem können Pixel, die näher dem Objektpixel sind, stärker beim Bestimmen des Gesamtschattenwerts gewichtet werden.
  • Die gemischte Schatteninformation von einem Mischkernel (z.B. Kernel 604 1) wird verwendet, um eine Schattierung für die Pixel zu bestimmen, die diesem Mischkernel zugeordnet sind (z.B. Pixel 612 1). Beispielsweise kann ein Beleuchtungsfaktor bestimmt werden, um ein Niveau anzugeben, auf dem das Pixel durch das Licht 402 in dem gerenderten Bild zu beleuchten ist. Auf diese Weise können weiche Schatteneffekte implementiert werden.
  • In Schritt S314 bestimmt die Verarbeitungslogik 208 gerenderte Pixelwerte gemäß der bestimmten Schattierung für die Pixel. Beispielsweise rendert die Verarbeitungslogik 208 ein Pixel und wendet als Teil des Renderingprozesses eine Beleuchtung auf das Pixel gemäß dem angegebenen Niveau an, auf dem das Pixel von dem Licht 402 zu beleuchten ist.
  • Ein einfaches Beispiel wird nun mit Bezug auf das in 4 bis 6 gezeigte Beispiel beschrieben, bei dem die Verdeckung 406 lichtundurchlässig ist, so dass der Dämpfungswert für verdeckte Pixel ‘total verdeckt’ von dem Licht 402 angibt, und die Schatteninformation für ein Pixel ist einfach ein Schattenindikator, der angibt, ob der Strahl für das Pixel vom Erreichen des Zentrums des Licht 402 verdeckt wurde, z.B. mit einem Wert von 1, der verdeckt darstellt, und einem Wert von 0, der nicht verdeckt darstellt. Die Pixel innerhalb des Mischkernels 604 1 können alle vom Zentrum des Lichts 402 verdeckt sein, so dass, wenn die Flag-Bits über den Mischkernel 604 1 gemittelt werden, der endgültige Wert 1 sein wird, der angibt, dass das Pixel 612 1 im vollen Schatten von dem Licht 402 ist.
  • Das Pixel 612 2 weist einen Schattenindikator von 1 auf, der angibt, dass es von dem Zentrum des Lichts 402 verdeckt ist. Der Mischkernel 604 2 kann jedoch einige Pixel umfassen, welche von dem Zentrum des Lichts 402 verdeckt sind, und einige Pixel, welche nicht von dem Zentrum der Licht 402 verdeckt sind. Daher wird, wenn die Schattenindikatoren über den Mischkernel 604 2 gemittelt werden, der endgültige Wert irgendwo zwischen 0 und 1 sein, der angibt, dass das Pixel 612 2 im Teilschatten von dem Licht 402 ist, d.h. es ist im Halbschatten. Die gemischten Werte weisen mehrere Bits auf (z.B. 4 Bits), so dass sie Werte zwischen 0 und 1 darstellen können.
  • Das Pixel 612 3 weist einen Schattenindikator von 0 auf, der angibt, dass es nicht von dem Zentrum der Licht 402 verdeckt ist. Der Mischkernel 604 3 kann jedoch einige Pixel umfassen, welche von dem Zentrum des Lichts 402 verdeckt sind, und einige Pixel, welche nicht von dem Zentrum des Lichts 402 verdeckt sind. Daher wird, wenn die Schattenindikatoren über den Mischkernel 604 3 gemittelt sind, der endgültige Wert irgendwo zwischen 0 und 1 sein, was angibt, dass das Pixel 612 3 im Teilschatten von dem Licht 402 ist, d.h. es ist im Halbschatten. Das Pixel 612 3 ist weniger im Schatten als das Pixel 612 2, so dass die gemischte Schattenangabe für das Pixel 612 3 niedriger als die gemischte Schattenangabe für das Pixel 612 2 ist.
  • Strahlen, für die ein Abstand nicht aufgezeichnet wird (z.B. der Strahl, welcher der Position 412 4 und dem Pixel 612 4 entspricht) sind vollständig beleuchtet, so dass keine Schattierung auf das entsprechende Pixel angewendet wird.
  • In den oben beschriebenen Beispielen wird für jedes der Pixel der Ursprung zum Werfen eines Strahl von der sichtbaren Oberfläche 404 für das Pixel bestimmt durch Projizieren einer Zentrumposition des Pixels im Schirm-Raum in die Szene und Identifizieren einer Position auf der sichtbaren Oberfläche, welche dieser zentralen Position entspricht. In anderen Beispielen werden die Ursprünge zum Werfen von Strahlen von den sichtbaren Oberflächen für die Pixel innerhalb projizierter Basisflächen der jeweiligen Pixel verjittert. Dieses Verjittern fügt kleine Rauschmengen zu den Schattenstrahlursprüngen hinzu, um Geometrie-Rand Aliasing aufzubrechen. Dieses Rauschen wird basierend auf der Weise projiziert, wie das Schirm-Pixel in den Welt-Raum transformiert wird. Beispielsweise umfasst das Verjittern eines Ursprungs zum Werfen eines Strahls von der sichtbaren Oberfläche 404 für ein Pixel das Hinzufügen eines zweidimensionalen Rauschwerts zu der Zentrumposition des Pixels im Schirm-Raum, um eine verjitterte Pixelposition zu bestimmen, Projizieren der verjitterten Pixelposition in die Szene und Identifizieren einer Position auf einer Ebene, die der sichtbaren Oberfläche 404 entspricht.
  • Mit anderen Worten wird ein zweidimensionaler Rauschwert zu dem Pixelzentrum hinzugefügt, dann wird ein neuer virtueller Strahl (alias Linie) basierend auf dem Fokuspunkt der Kamera und dem verjitterten Ort berechnet, und dann wird diese Linie mit einer Ebenen-erweiterten Version der Oberfläche 404 geschnitten. Dieser endgültige Punkt umfasst welche Anpassungen auch immer angewendet wurden, um numerische Ungenauigkeit zu überwinden, um sicherzustellen, dass der Ursprung des Schattenstrahls (Effekt des Strahls) auf der sichtbaren Seite der Oberfläche 404 ist. Sehr viel von dieser Berechnung kann abhängig davon erneut verwendet werden, ob einige der Zwischenwerte bereits für einen anderen Zweck berechnet wurden.
  • 7 ist ein Ablaufdiagramm, das ein anderes Verfahren für implementierte weiche Schatteneffekte veranschaulicht. Das in 7 gezeigte Verfahren ist dem in 3 gezeigten ähnlich, wobei jedoch die Weise, mit der Schattierung für Strahlen bestimmt wird, die nicht von dem Zentrum des Lichts 402 verdeckt sind, unterschiedlich ist.
  • Die Schritte S702 bis S706 entsprechen im Allgemeinen den oben beschriebenen Schritten S302 und S306. Daher werden in Schritt S702 sichtbare Oberflächen für Pixel eines Rahmens identifiziert (z.B. wird die Oberfläche 404 für die Pixel 612 1, 612 2, 612 3 und 612 4 identifiziert). In Schritt S704 werden Ursprünge zum Werfen von Strahlen von den identifizierten sichtbaren Oberflächen für die Pixel bestimmt (z.B. werden die Positionen 412 1 bis 412 4 als Ursprünge für Strahlen bestimmt, die den Pixeln 612 1 bis 612 4 entsprechen). In Schritt S706 wird für jeden der Strahlen bestimmt, ob der Strahl vom Erreichen des Zentrums des Lichts 402 verdeckt ist. Wenn der Strahl verdeckt ist, dann setzt sich die Verarbeitung für diesen Strahl von Schritt S706 bis Schritt S708 fort, während, wenn der Strahl nicht verdeckt ist, sich die Verarbeitung für diesen Strahl dann von Schritt S706 zu Schritt S720 fortsetzt.
  • Auf ähnliche Weise zu dem in 3 gezeigten Beispiel wird in dem in 7 gezeigten Beispielverfahren lediglich ein Strahl von der Position 412 geworfen, die jedem Pixel 612 entspricht. Dies macht es viel einfacher, die hier beschriebenen Beispiele zu implementieren, als wenn mehrere Strahlen von jeder Position in Richtung unterschiedlicher Teile des Flächenlichts 402 geworfen würden. Insbesondere kann dies den hier beschriebenen Verfahren ermöglichen, in Echtzeit und/oder auf Vorrichtungen implementiert zu werden, wie beispielsweise mobilen Vorrichtungen, welche enge Begrenzungen auf die Verarbeitungsressourcen, physische Größe und/oder Leistungsverbrauch einer darauf implementierten Graphikverarbeitungseinheit aufweisen können.
  • Die Strahlen, die verdeckt sind (z.B. die Strahlen von Positionen 412 1 und 412 2), werden auf die gleiche Art und Weise verarbeitet, wie oben mit Bezug auf 3 beschrieben. Kurz gesagt wird in Schritt S708 ein Abstand entlang des Strahls von der Oberfläche 404 zu der Verdeckung 406 bestimmt und in einem Puffer aufgezeichnet. In Schritt S710 wird ein Dämpfungswert bestimmt und für die Verdeckung 406 aufgezeichnet. Der Dämpfungswert kann bestimmt werden, wie oben beschrieben. Des Weiteren ist, wie oben beschrieben, die Verwendung von Dämpfungswerten ein optionales Merkmal. In Schritt S712 werden Parameter für ein Mischfilter (d.h. einen Mischkernel) für einen Strahl basierend auf dem aufgezeichneten Abstand für den Strahl bestimmt. Zum Beispiel werden die Mischkernel 504 1 und 504 2 für die Positionen 412 1 und 412 2 bestimmt. In Schritt S714 wird der Mischkernel für einen Strahl in den Rahmen transformiert. Beispielsweise werden die Mischkernel 504 1 und 504 2 transformiert, um die Mischkernel 604 1 und 604 2 in dem Rahmen 602 für die Pixel 612 1 und 612 2 zu bestimmen. In Schritt S716 wird Schatteninformation (z.B. binäre Flags, die angebt, ob Pixel vom Zentrum des Lichts 402 verdeckt sind) für Pixel innerhalb eines Mischkernel gemischt. Beispielsweise werden die binären Flags für Pixel innerhalb des Mischkernel 604 1 gemischt, um einen Schattenwert für das Pixel 612 1 zu bestimmen. In Schritt S718 werden diese Schattenwerte (d.h. die gemischte Schatteninformation) verwendet, um eine Schattierung für die Pixel von dem Licht 402 zu bestimmen.
  • Für Strahlen, welche nicht von dem Zentrum des Lichts 402 verdeckt sind, geht das Verfahren jedoch von Schritt S706 zu Schritt S720. 8 zeigt ein Beispiel eines Flächenlichts 802, einer sichtbarer Oberfläche 804 und einer Verdeckung 806. Ein Strahl 810 weist einen Ursprung an einer Position 808 auf der sichtbaren Oberfläche 804 auf. Der Strahl 810 ist nicht von dem Zentrum des Lichts 802 verdeckt, so dass das Verfahren von Schritt S706 zu Schritt S720 für den Strahl 810 weitergeht. Die Verdeckung 806 ist ein am nächsten kommender Fehltreffer für den Strahl 810. Mit anderen Worten kommt der Strahl 810 näher zum Treffen der Verdeckung 806 als er zum Treffen irgendeines anderen Geometrieelements in der Szene kommt.
  • In Schritt S720 bestimmt die Verarbeitungslogik 208 einen ersten Abstand (d1) für einen Strahl. Der Abstand d1 ist ein minimaler Abstand zwischen dem Strahl und dem Geometrieelement 806, welcher ein am nächsten kommender Fehltreffer (bzw. nächstkommende Verfehlung) für den Strahl ist. Der Abstand d1 kann als ein “tangentialer Abstand” bezeichnet werden. Um den Abstand d1 zu bestimmen, kann die Verarbeitungslogik 208 ein vorzeichenbehaftetes Abstandsfeld verwenden, um den minimalen Abstand zwischen dem Strahl und der Verdeckung 806 zu bestimmen. Wenn ein Strahl durch eine Szene verfolgt wird, können vorzeichenbehaftete Abstandsfelder verwendet werden, um zu bestimmen, ob sich, an Punkten entlang des Strahls, der Strahl mit der Oberfläche eines Geometrieelements in der Szene geschnitten hat. Das Vorzeichen der Ergebnisse der vorzeichenbehafteten Abstandsfunktion an unterschiedlichen Punkten entlang eines Strahls gibt an, ob die Position des Strahls innerhalb oder außerhalb eines Geometrieelement ist. Für einen Strahl, der kein Geometrieelement vor Erreichen des Lichts 802 schneidet (z.B. für den Strahl 810), gibt das Ergebnis der vorzeichenbehafteten Abstandsfunktion mit der geringsten Größenordnung entlang des Pfads des Strahls den minimalen Abstand (d1) zu dem Geometrieelement 806 an, welcher ein am nächsten kommender Fehltreffer für den Strahl ist.
  • In Schritt S722 bestimmt die Verarbeitungslogik 208 einen zweiten Abstand (d2) für den Strahl 810. Der Abstand d2 ist der Abstand von dem Ursprung des Strahls 808, bei dem der Strahl 810 an seinem am nächsten kommenden Punkt zu der Verdeckung 806 ist. Der Abstand d1 kann als ein “direktionaler Abstand” bezeichnet werden. Dieser Abstand wird ebenfalls ohne weiteres von der vorzeichenbehafteten Abstandsfunktion bestimmt, d.h. er ist der Abstand entlang des Strahls, bei dem das Ergebnis der vorzeichenbehafteten Abstandsfunktion die niedrigste Größenordnung aufweist. Die beiden Abstände d1 und d2 stellen einen Winkel dar. Mit anderen Worten bildet das Verhältnis zwischen den beiden Abständen den Arkustangens des Winkels des Kegels, der den Raumwinkel beschreibt, von welchem Licht die Oberfläche erreichen kann. Wenn dieser Raumwinkel kleiner als der Raumwinkel des Lichts ist, ist der Oberflächenpunkt im Halbschatten.
  • Die Verarbeitungslogik 208 kann die Abstände d1 und d2 für einen Strahl in einem Puffer speichern.
  • In Schritt S724 bestimmt die Verarbeitungslogik 208 ein Ausmaß der Verdeckung von dem Licht 802 für das Pixel, das dem Strahl 810 entspricht, unter Verwendung der bestimmten Abstände d1 und d2 für den Strahl. Beispielsweise wird für einen größeren d1 ein Ausmaß der Verdeckung von dem Licht 802 kleiner sein; während für einen größeren d2 ein Ausmaß der Verdeckung von dem Licht 802 größer sein wird. Das Ausmaß der Verdeckung kann wie eine Funktion von d1 und d2 bestimmt werden. Die Funktion zum Bestimmen des Ausmaßes der Verdeckung kann ebenfalls von dem Abstand (D) von dem Punkt 808 zu dem Flächenlicht 802 und/oder dem räumlichen Ausmaß (L) des Flächenlichts 802 abhängen. Mit anderen Worten kann die Bestimmung des Ausmaßes der Verdeckung von dem Licht 802 für das Pixel, das dem Strahl 810 entspricht, auf Information bezogen auf das Licht beruhen, wie beispielsweise: einer Position des Lichts 802 in der Szene, einem Abstand (D) des Lichts 802 von dem Ursprung 808 des Strahls 810, einem räumlichen Ausmaß (L) des Lichts 802 in der Szene und/oder einem räumlichen Ausmaß des Lichts, wie entlang der Richtung des Strahls 810 gesehen.
  • Beim Bestimmen des Ausmaßes der Verdeckung bestimmt die Verarbeitungslogik 208 das Ausmaß, zu welchem die Verdeckung 806 (d.h. der nächste Fehltreffer) das Licht von dem Licht 802 verdeckt, und daher kann die Lichtundurchlässigkeit der Verdeckung 806 das Ausmaß der Verdeckung beeinflussen. Wie oben beschrieben, kann ein Dämpfungswert für die Verdeckung 806 bestimmt werden, und die Bestimmung des Ausmaßes der Verdeckung von dem Licht 802 für das dem Strahl 810 entsprechende Pixel kann das Bestimmen eines Dämpfungswerts für das Geometrieelement 806, welche ein am nächsten kommender Fehltreffer für den Strahl 810 ist, und das Verwenden des bestimmten Dämpfungswerts umfassen, um das Ausmaß der Verdeckung zu bestimmen. Wie oben beschrieben, kann ein Dämpfungswert für die Verdeckung 806 durch Verarbeitung einer Textur (die eine Lichtdurchlässigkeit und/oder punch-through umfassen kann) für die Verdeckung 806 bestimmt werden, um ein Niveau zu bestimmen, auf das die Verdeckung 806 Licht dämpft. Des Weiteren kann die Bestimmung des Dämpfungswerts für die Verdeckung 806 das Werfen eines sekundären Strahls von der Verdeckung 806 in Richtung des Lichts 802 umfassen, um ein Ausmaß zu bestimmen, zu dem die Verdeckung 806 selbst von dem Licht 802 verdeckt ist.
  • Schritt S726 folgt von Schritt S718 und folgt von Schritt S724. In Schritt S726 bestimmt die Verarbeitungslogik gerenderte Pixelwerte des Rahmens. Für Strahlen, die von dem Zentrum des Lichts verdeckt sind, wurde eine Schattierung in Schritt S718 bestimmt, und die Verarbeitungslogik bestimmt gerenderte Pixelwerte, die diesen Strahlen entsprechen, gemäß der bestimmten Schattierung für die Pixel. Für Strahlen, die nicht vom Zentrum des Lichts verdeckt sind, wurde ein Ausmaß der Verdeckung in Schritt S724 bestimmt, und die Verarbeitungslogik bestimmt gerenderte Pixelwerte, die diesen Strahlen entsprechen, gemäß dem bestimmten Ausmaß der Verdeckung.
  • Die gerenderten Pixelwerte können in dem Bildpuffer 210 gespeichert werden.
  • In einigen Beispielen kann, statt d1 und d2 explizit in Schritten S720 und S722 zu bestimmen, ein Verhältnis (als “Abstandsverhältnis” bezeichnet) bestimmt werden, welche mit dem Verhältnis von d2/d1 korreliert ist. Die Berechnung des Abstandsverhältnisses in den nachstehend beschriebenen Beispielen sind leichter zu implementieren als Verfahren zum expliziten Bestimmen von d1 und d2, wie oben beschrieben, und sind somit zur Verwendung in Echtzeit auf einer Vorrichtung mit begrenzenden Verarbeitungsressourcen (z.B. auf einer mobilen Vorrichtung) geeigneter.
  • Insbesondere wird, um eine Schnittpunktprüfung an Grundelementen in der Szene in einer Strahlenverfolgungs-Implementierung durchzuführen, eine hierarchische Beschleunigungsstruktur aufgebaut, welche eine Hierarchie von Knoten umfasst, die Regionen des Welt-Raums der Szene darstellt, die gerendert wird. Der Blattknoten der Beschleunigungsstruktur kann ein oder mehrere Grundelemente oder Teile von Grundelementen darstellen, die in der Szene zu rendern sind. Beispielsweise können während der Hierarchieerzeugung Grundelemente in der Szene in einschließenden Knoten voxelisiert werden, und diese Knoten werden wiederum in große einschließende Knoten voxelisiert, bis alle Objekte in der Szene in einer oder einer kleinen Anzahl von Knoten eingeschlossen sind. Hardware zur Voxelisation ist bekannt und kann zum Beispiel eine Octree-Struktur für die Voxelisation verwenden, so dass jeder einschließende Knoten zweimal so groß in jeder Abmessung wie die Knoten ist, die er umschließt (das Achtfache Volumen). Der Voxel-Erbauer kann Knoten schrumpfen oder nicht, so dass sie sich in Raum lediglich so weit wie notwendig erstrecken, um die Kindknoten oder Grundelemente vollständig zu umschließen, die sie begrenzen. Unterschiedliche Sätze von Dreiecken können in unterschiedlichen Blattknoten-Auflösungen voxelisiert werden. In anderen Beispielen sind die Knoten der hierarchischen Beschleunigungsstruktur keine Voxel, wobei sie jedoch irgendeine geeignete Form und Größe annehmen können, um Knoten oder Grundelemente niedrigeren Niveaus einzuschließen.
  • 8b zeigt eine Szene einschließlich eines Lichts 812, einer sichtbaren Oberfläche 814 und eines verdeckenden Grundelements 816, welches als ein Dreieck gezeigt ist. Ein Strahl wird von einer Position 818 auf der Oberfläche 814 in Richtung des Zentrums des Lichts 812 geworfen und wird nicht verdeckt. Das Grundelement 816 wird in einem Voxel 822 1 umschlossen, das einem Knoten der hierarchischen Beschleunigungsstruktur entspricht. Der Strahl 820 schneidet sich nicht mit dem Voxel 822 1. Auf einem Niveau höher innerhalb der hierarchischen Beschleunigungsstruktur umschließt ein Voxel 822 2 das Voxel 822 1. Der Strahl 820 schneidet sich mit dem Voxel 822 2.
  • Das Verfahren kann ein nächstgelegenes getroffenes Grundelement (z.B. das Grundelement 816) durch Bestimmen identifizieren, welcher der Knoten der hierarchischen Beschleunigungsstruktur, der von dem Strahl zu treffen ist, das kleinste Abstandsverhältnis aufweist. Das Abstandsverhältnis für einen Knoten ist das Verhältnis einer Abmessung des Knotens (z.B. d1 veranschaulicht in 8b) und des Abstands entlang des Strahls, bei dem der Strahl den Knoten trifft (z.B. d2 veranschaulicht in 8b). Das Abstandsverhältnis kann durch d1/d2 gegeben werden. Ein Abstandsverhältnis für einen am nächsten kommenden Treffer für einen Strahl kann gespeichert werden. Dann können Knoten der hierarchischen Beschleunigungsstruktur für ein Grundelement abgesenkt werden, das geprüft wird, wenn ein aktueller Knoten, der dem Prüfgrundelement auf einem aktuellen Niveau entspricht, ein Treffer für den Strahl ist, und wenn das Abstandsverhältnis für den aktuellen Knoten kleiner als das gespeicherte Abstandsverhältnis für einen am nächsten kommenden Treffer für den Strahl ist. Das gespeicherte Abstandsverhältnis für einen am nächsten kommenden Treffer für den Strahl kann dann in Reaktion auf das Absenken innerhalb der hierarchischen Beschleunigungsstruktur aktualisiert werden. Der dem Voxel 822 2 entsprechende Knoten ist ein Treffer, wobei jedoch der Knoten niedrigeren Niveaus, der dem Voxel 822 1 entspricht, kein Treffer ist. So wenn das Grundelement 816 das am nächsten getroffene Grundelement für den Strahl 820 ist, dann stellt der dem Voxel 822 2 entsprechende Knoten den am nächsten getroffenen Knoten dar, und das Abstandsverhältnis, das am Ende des Prüfens gespeichert wird, ist das Abstandsverhältnis für diesen Knoten (d.h. d1/d2). Falls der Strahl ein Grundelement trifft, weist er ein Abstandsverhältnis von Null auf.
  • Das Abstandsverhältnis bildet sich in einen Raumwinkel ab, der angibt, wie nahe der Strahl dazu kam, ein Grundelement zu treffen. Daher gibt dies das Ausmaß an, zu dem die Position 818 im Schatten von dem Grundelement 816 ist. Entweder das Abstandsverhältnis oder die Werte von d1 und d2 für den am nächsten kommenden Knoten 822 2 können einem Schattierer zum Bestimmen des Ausmaßes der Verdeckung an der Position 818 bereitgestellt werden.
  • In einigen Beispielen werden Knoten der hierarchischen Beschleunigungsstruktur mit dem kleinsten Abstandsverhältnis zuerst abgesenkt, um das Abstandsverhältnis des Strahls schnell so schnell wie möglich zu treiben, so klein wie möglich zu werden, wodurch die Suche beschnitten wird. Diese Art von Abfrage bevorzugt Verhaltensweisen einer Tiefe-zuerst-Durchquerung gegenüber einer Breite-zuerst-Durchquerung.
  • Ein Strahlenverfolgungsprozess kann zwischen Breite-zuerst-Prüfen und Tiefe-zuerst-Prüfen der Beschleunigungsstruktur abhängig von der Verfügbarkeit von verschiedenen Ressourcen (z.B. chipinterner Speicher) ausgleichen, wobei jedoch dieser Algorithmus das Auswählen von mehr Tiefe-zuerst-Verhaltensweisen in mehr Situationen bevorzugt. Ein möglicher Weg, um die Beschleunigungsstruktur zu durchqueren, würde darin bestehen, alle Kindknoten eines Kästchens gegen den Strahl zu prüfen und lediglich Knoten abzusenken, die der Strahl in den Fällen verfehlte, in denen keine Treffer in einer gegebenen Kindliste verfügbar waren. Dann wird, wenn Fehltreffer abgesenkt werden, mit dem tiefsten Knoten in dem Baum begonnen und rekursiv nach oben gearbeitet, wobei entweder jedes Kästchen basierend auf dem Abstandsverhältnis des Strahls abgelehnt oder abgesenkt wird.
  • Auf diese Weise wird ein Durchquerungsmechanismus implementiert, um Beinahe-Fehltreffer-Information zu bestimmen. Dies ermöglicht die Extraktion von Daten, die denen ähnlich sind, die von einer gewöhnlichen Durchquerung einer Beschleunigungsstruktur extrahiert wurden (d.h. Treffer oder Fehltreffer von verschiedenen Knoten), um beim Bestimmen des Ausmaßes der Verdeckung an einer Position im Halbschatten eines Schattens eines Verdeckers verwendet zu werden. Dies ist daher eine einfache Erweiterung zu einem System, welche hierarchische Beschleunigungsstrukturen durchquert, jedoch keine weichen Schatten implementiert.
  • Des Weiteren kann dieses Verfahren zum Bestimmen der Wirkungen einer Dilation eines Schattens (d.h. für Halbschattenregionen, die nicht Teil eines harten Schattens von einer Verdeckung sein würden) durch Bestimmen des “nächsten Fehltreffers” mit den Wirkungen einer Schattenerosion kombiniert werden (d.h. für Halbschattenregionen, die Teil eines harten Schattens von einer Verdeckung sein würden), die vom Filtern bestimmt werden, wie oben beschrieben.
  • 9 zeigt eine weitere Beispielszene, die ein Flächenlicht 902, eine sichtbare Oberfläche 904 und eine Verdeckung 906 umfasst. Ein Strahl 910 weist einen Ursprung an einer Position 908 auf der sichtbaren Oberfläche 904 auf. Der Strahl 910 wird von dem Zentrum des Lichts 902 nicht verdeckt. Die Verdeckung 906 ist ein am nächsten kommender Fehltreffer für den Strahl 910. Mit anderen Worten kommt der Strahl 910 näher dazu, die Verdeckung 906 zu treffen, als er dazu kommt, ein anderes Geometrieelement in der Szene zu treffen.
  • Ähnlich den oben beschriebenen Verfahren können sichtbare Oberflächen der Szene für Pixel eines Rahmens von Pixeln bestimmt werden und Ursprünge zum Werfen von Strahlen von der sichtbaren Oberfläche in Richtung des Zentrum des Lichts 902 können für jedes Pixel bestimmt werden. Für ein oder mehrere der Pixel können mehrere Prüfstrahlen von dem bestimmten Ursprung für das Pixel in Richtung unterschiedlicher Punkte innerhalb des Flächenlichts geworfen werden. Beispielsweise zeigt 9 drei Prüfstrahlen (912 1, 912 2 und 912 3), die von der Position 908 auf der Oberfläche 904 in Richtung unterschiedlicher Teile des Lichts 902 geworfen werden. Es sei angemerkt, dass irgendeine Anzahl von Prüfstrahlen geworfen werden kann, und beispielsweise können viel mehr als drei Prüfstrahlen von einer bestimmten Position auf der Oberfläche 904 in Richtung unterschiedlicher Teile des Lichts 902 geworfen werden. Die Verarbeitungslogik 208 kann bestimmen, ob jeder der Prüfstrahlen 912 sowie auch der Hauptstrahl 910 vom Erreichen des Flächenlichts 902 verdeckt sind. Beispielsweise wird der Strahl 910 nicht verdeckt, der Prüfstrahl 912 1 wird nicht verdeckt und der Prüfstrahl 912 3 wird verdeckt. Der Prüfstrahl 912 2 ist ein streifender Strahl, der gerade den Rand der Verdeckung 906 streift. Mit anderen Worten ist der streifende Strahl der am nächsten kommende der Prüfstrahlen 912 zu der Verdeckung 906, welcher durch die Verdeckung 906 nicht verdeckt ist. Die Verarbeitungslogik 208 verwendet die Ergebnisse des Bestimmens, ob die Prüfstrahlen 912 vom Erreichen des Flächenlichts 902 verdeckt sind, um ein Ausmaß der Verdeckung von dem Licht 902 für das Pixel zu bestimmen. Beispielsweise kann der streifende Strahl 912 2 bestimmt werden, und ein Winkel (θ) zwischen dem streifenden Strahl 912 2 und dem Strahl 910, der in Richtung zu dem Zentrum des Flächenlichts 902 geworfen wird, wird verwendet, um ein Ausmaß der Verdeckung von dem Licht 902 für das Pixel zu bestimmen. Beispielsweise kann dieser Winkel (θ) einen unverdeckten Kegelschnitt definieren, der verwendet werden kann, um einen Abschnitt des Lichts 902 darzustellen, der unverdeckt ist. Der Kegelschnitt weist Ränder entlang der in 9 gezeigten Linien 912 2 und 914 auf, wobei die Linie 914 den gleichen Winkel θ mit dem Strahl 910 jedoch auf der gegenüberliegenden Seite zu dem streifenden Strahl 912 2 macht. Daher weist der Kegelschnitt einen Nasenwinkel von 2θ auf und die Fläche dieses Kegelschnitts an dem Schnittpunkt mit dem Licht 910 kann verwendet werden, um das Ausmaß der Verdeckung von dem Flächenlicht 902 zu bestimmen. Wenn das Flächenlicht 902 beispielsweise als eine Platte mit Durchmesser L modelliert werden kann, weist es eine Fläche von π / 4L2 auf. Die Fläche des Kegelschnitts an dem Schnittpunkt mit dem Licht 910 ist π(tanθ)2D2. Daher wird der Anteil des Flächenlichts 902, das den Kegelschnitt schneidet, durch ( 2Dtanθ / L)2 gegeben, und dies kann verwendet werden, um ein Anteil des Lichts von dem Flächenlicht 902 zu bestimmen, welches die Position 908 trifft. Dies kann verwendet werden, um die Schattierung zu bestimmen, die auf das der Position 908 entsprechende Pixel beim Rendering des Pixels anzuwenden ist. Das in 9 gezeigte Verfahren kann für alle Pixel in dem Rahmen oder lediglich für Pixel verwendet werden, für die Strahlen von dem Zentrum des Lichts 902 nicht verdeckt sind.
  • In den oben beschriebenen Beispielen gibt es eine einzige Lichtquelle. In einigen Beispielen kann eine Szene jedoch von mehreren Lichtquellen beleuchtet werden. Beispielsweise veranschaulicht 10 drei Lichtquellen 1002 1, 1002 2 und 1002 3, welche eine Oberfläche 1004 in der Szene illuminieren können. Die Position 1108 wird von dem Licht 1002 1 vollständig beleuchtet, ist in dem Halbschatten des Schattens für das Licht 1002 2, der durch die Verdeckung 1006 verursacht wird, und in dem Kernschatten des Schattens für das Licht 1002 3, der durch die Verdeckung 1006 verursacht wird. In anderen Beispielen kann es irgendeine Anzahl von Lichtquellen geben, welche die Szene illuminieren, z.B. viel mehr als drei. Eine Verdeckung 1006 ist in der Szene vorhanden.
  • Ein Verfahren zum Rendering von Pixeln einer Ansicht der Szene wird in 11 gezeigt. Dieses Verfahren ist besonders zur Verwendung mit Szenen geeignet, die von mehreren Lichtquellen beleuchtet werden, wobei es jedoch zur Verwendung mit Szenen angewendet werden könnte, die von einer einzigen Lichtquelle beleuchtet werden. In Schritt S1102 identifiziert die Oberflächen-Identifikationslogik 206 sichtbare Oberflächen für Pixel eines Rahmens (z.B. kann die Oberfläche 1004 identifiziert sein). In Schritt S1104 bestimmt die Verarbeitungslogik 208 Positionen auf den identifizierten Oberflächen, die jedem der Pixel eines zu rendernden Rahmens entsprechen. Die bestimmten Positionen stellen Ursprünge zum Werfen von Strahlen von den identifizierten sichtbaren Oberflächen für die Pixel dar. Beispielsweise ist die Position 1008 auf der Oberfläche 1004 für ein Pixel bestimmt.
  • In Schritt S1106 bestimmt die Verarbeitungslogik 208 für jede der bestimmten Positionen für die Pixel Komponenten einer direktionalisierten Abstandsfunktion, welche einen Richtungs-abhängigen Abstand zu einer oder mehreren Verdeckungen des Lichts in der Szene für die Position angibt.
  • Beispielsweise kann Schritt S1106 das Durchführen einer Verarbeitung für jedes der Lichter 1002 für eine bestimmte Position (z.B. Position 1008) umfassen. Beispielsweise wird für jedes der Lichter (z.B. Lichter 1002 1, 1002 2 und 1002 3) ein Strahl von der bestimmten Position 1008 auf die identifizierte sichtbare Oberfläche 1004 in einer Richtung zu dem Licht geworfen. Diese Strahlen werden in 10 jeweils als 1010 1, 1010 2 und 1010 3 gezeigt. Die Verarbeitungslogik 208 bestimmt, ob jeder der Strahlen vom Erreichen des Zentrums des jeweiligen Lichts verdeckt ist. Beispielsweise werden die Strahlen 1010 1 und 1010 2 nicht durch die Verdeckung 1006 verdeckt, wobei jedoch der Strahl 1010 3 durch die Verdeckung 1006 verdeckt ist. Für jeden der Strahlen, die bestimmt werden, von dem jeweiligen Licht verdeckt zu sein (z.B. für Strahl 1010 3), zeichnet die Verarbeitungslogik 208 in diesem Beispiel einen Abstand entlang des Strahls von der Oberfläche 1004 zu seiner jeweiligen Verdeckung auf. Dann kombiniert die Verarbeitungslogik 208 für die Position 1008 die aufgezeichneten Abstände zu Verdeckungen für die Lichter, um dadurch die Komponenten der direktionalisierten Abstandsfunktion für die bestimmte Position zu bestimmen.
  • Beispielsweise könnte die direktionalisierte Abstandsfunktion eine sphärische harmonische Funktion sein, so dass die Komponenten sphärische harmonische Komponenten sind. Als ein weiteres Beispiel könnten die Komponenten der direktionalisierten Abstandsfunktion mit Bezug auf ein dreidimensionales kartesisches Koordinatensystem definiert sein.
  • Für jeden der Strahlen, die bestimmt werden, nicht von dem jeweiligen Licht verdeckt zu sein (z.B. Strahlen 1010 1 und 1010 2), kann die Verarbeitungslogik 208 Verfahren ähnlich den oben beschriebenen durchführen. Zum Beispiel kann die Verarbeitungslogik 208 nach einem Pixel suchen, für das ein Strahl bestimmt wird, von dem Licht verdeckt zu sein, und wenn ein Pixel in der Suche gefunden wird, den Abstand aufzeichnen, der für den Strahl des gefundenen Pixels aufgezeichnet wurde. Wie oben beschrieben, kann dieses Suchen nach einem Pixel ein Suchen innerhalb einer Suchregion für das Pixel nach einem am nächsten kommenden Pixel in dem Rahmen der Pixel umfassen, für die ein Strahl bestimmt wird, von dem Licht verdeckt zu sein. Auf diese Weise kann ein Abstand zu einer Verdeckung für ein bestimmtes Licht auf einem entsprechenden Abstand zu einer Verdeckung für das bestimmte Licht für ein nahegelegenes Pixel beruhen.
  • Statt den Abstand zu Verdeckungen in den Richtungen der Lichter zu bestimmen, könnten die Bestimmungen in Abtastrichtungen durchgeführt werden. Die Abtastrichtungen können Richtungen zu einem Licht sein oder nicht. Die Abtastrichtungen können stochastisch oder gemäß einem vorbestimmten Muster ausgewählt werden. Beispielsweise könnten die Abtastrichtungen die positiven und negativen Richtungen entlang jeder der drei Achsen eines kartesischen Koordinatensystems sein. Dies kann vorteilhaft sein, wenn es viele Lichter gibt (z.B. über zwanzig Lichter), die eine Szene illuminieren. Auf diese Weise wird für jede einer Mehrzahl von Abtastrichtungen ein Strahl von einer bestimmten Position (z.B. Position 1008) auf die identifizierte sichtbare Oberfläche (z.B. 1004) in der Abtastrichtung geworfen. Die Verarbeitungslogik 208 bestimmt, ob jeder der Strahlen vom Erreichen eines Lichts in der Abtastrichtung verdeckt ist, und für jeden der Strahlen, die bestimmt werden, von einem Licht in der Abtastrichtung verdeckt zu sein, wird ein Abstand entlang des Strahls von der Oberfläche zu seiner jeweiligen Verdeckung aufgezeichnet. Dann kombiniert für jede der für die Pixel bestimmten Positionen die Verarbeitungslogik 208 die aufgezeichneten Abstände zu Verdeckungen für die Abtastrichtungen, um dadurch die Komponenten der direktionalisierten Abstandsfunktion für die bestimmte Position zu bestimmen.
  • In Schritt S1108 verwendet die Verarbeitungslogik 208 die bestimmten Komponenten der direktionalisierten Abstandsfunktion und Information bezogen auf das eine oder mehrere Lichter 1002, um Schatteninformation für Pixel in dem Rahmen zu bestimmen. Beispielsweise kann jedes der Lichter 1002 getrennt verarbeitet werden und dann können die Schattierungseffekte von den unterschiedlichen Lichtern 1002 für ein Pixel kombiniert werden, um eine endgültige Beleuchtung für das Pixel zu bestimmen. Beispielsweise kann für jedes der Lichter die Verarbeitungslogik 208 die bestimmten Komponenten der direktionalisierten Abstandsfunktion verwenden, um einen Abstand zu einer Verdeckung, wenn vorhanden, in der Richtung des Lichts für jedes der Pixel zu bestimmen. Pixel, für welche ein Abstand zu einer Verdeckung geschätzt wird, können wie in den oben beschriebenen Beispielen verarbeitet werden, d.h. Parameter für ein Mischfilter (d.h. ein Mischkernel) können basierend auf dem für das Pixel geschätzten Abstand bestimmt werden, wobei dieser Mischkernel in den Rahmen von Pixeln transformiert werden kann und Schatteninformation für Pixel in dem Rahmen von Pixeln, die innerhalb der transformierten Basisfläche sind, gemischt werden kann. Dann kann für jedes einer Mehrzahl von Pixeln in dem Rahmen die gemischte Schatteninformation für die für die Lichter 1002 bestimmten Pixel kombiniert werden, um dadurch eine Schattierung für die Pixel zu bestimmen.
  • Wie oben beschrieben, kann die Schatteninformation für ein Pixel für ein Licht darauf beruhen, ob ein von der bestimmten Position für das Pixel geworfener Strahl vom Erreichen des Lichts verdeckt ist. Des Weiteren kann, wie oben beschrieben, die Schatteninformation für ein Pixel, für das ein Strahl von dem Licht verdeckt ist, ferner auf einem Dämpfungswert für seine jeweilige Verdeckung beruhen, wobei der Dämpfungswert für eine Verdeckung bestimmt werden kann, wie oben beschrieben, z.B. durch Verarbeitung einer Textur für die Verdeckung, um ein Niveau zu bestimmen, auf das die Verdeckung Licht dämpft, und/oder durch Werfen eines sekundären Strahls von der Verdeckung in Richtung des Lichts, um ein Ausmaß zu bestimmen, zu welchem die Verdeckung selbst von dem Licht verdeckt ist.
  • In Schritt S1110 bestimmt die Verarbeitungslogik 208 gerenderte Pixelwerte des Rahmens gemäß der bestimmten Schattierung für die Pixel. Die gerenderten Pixelwerte können in dem Bildpuffer 210 gespeichert werden.
  • Die sphärischen Harmonischen (oder eine andere direktionalisierte Darstellung) der Abstandsfunktion ermöglicht, dass Schatteninformation für mehrere Lichter in einem Puffer oder in einem Satz von Puffern gespeichert werden kann. Dies ist eine Erweiterung der Technik, wobei der Abstandswert kein Skalar ist, der einen Abstand entlang eines Vektors in Richtung einer Lichtquelle darstellt, sondern eher eine Mehr-Komponentenzahl ist, die wie eine Funktion behandelt werden kann, wobei die Funktionseingabe ein Richtungsvektor und die Ausgabe eine Näherung des Abstands zu dem nächsten Verdecker entlang dieses Vektors ist. Ein derartiges Beispiel einer Darstellung ähnlich dieser sind Koeffizienten der sphärischen Harmonischen. Ein anderes Beispiel ist eine Funktion, die sechs Vektoren darstellt, welche die + und – Richtungen entlang jeder Kardinalachse sind.
  • Die Werte der Koeffizienten der Abstandsfunktion können auf verschiedene Weisen errechnet werden. Beispielsweise kann, wie oben beschrieben, jedes relevante Schatten-werfende Licht (kein durch andere Kriterien, wie Abstand, Normale, usw. ausgeschlossenes Licht) für jeden sichtbaren Oberflächenpunkt unter Verwendung eines Schattenstrahls abgetastet werden und die Ergebnisse können in die sphärischen harmonischen Koeffizienten für diesen Oberflächenpunkt integriert werden. Für eine sehr komplexe Beleuchtungsumgebung kann es weniger aufwändig sein, Schattenstrahlen zu verwenden, um omnidirektional (oder hemisphärisch) in einem stochastischen oder sogar einem festen Muster abzutasten. Eine andere Option würde sein, eine repräsentative Teilmenge der Lichter abzutasten. Es würde ebenfalls möglich sein, diese Koeffizienten durch Projizieren der Geometrie aus der Perspektive des Lichts in einer der Abbildung von Schatten ähnlichen Technik zu berechnen.
  • Ein Teil des Bereichs der sphärischen Harmonischen (oder derjenige einer alternativen Darstellung) kann eingespart werden, indem lediglich eine Hemisphäre anstatt einer vollen 3D-Richtung gespeichert wird. Dies liegt daran, weil der Punkt, der beschattet oder beleuchtet wird, grundsätzlich einen Normalenvektor aufweist und daher lediglich der Beleuchtung von der Hälfte der möglichen Richtungen ausgesetzt ist. Während dies im Wesentlichen Speicheranforderungen verringert, bedeutet es, dass die Koeffizienten transformiert werden müssen, um zwischen zwei oder mehreren Datenpunkten im 3D-Raum zu interpolieren oder den Mittelwert zu bilden, so dass es in einigen Beispielen rechenmäßig effizienter ist, die volle sphärische Darstellung der Daten der sphärischen Harmonischen zu speichern.
  • Wenn ein direktionaler Abstandspuffer (im Gegensatz zu einem skalaren Abstandspuffer) berechnet wurde, kann dies auf unterschiedliche Weisen verwendet werden, um die Schattierung in der Szene zu bestimmen. Wie oben beschrieben, besteht eine Option darin, über jedes der Schattierungslichter zu iterieren und den ungefähren Abstand zu einem möglichen Verdecker in der Richtung von diesem Licht von der sphärischen harmonischen Funktion zu errechnen und dann diesen Abstand zu verarbeiten, wie in den oben gegebenen Beispielen beschrieben, um die Beleuchtungsberechnung für jedes Licht durchzuführen. Dies ist besonders gut zur Verarbeitung von Szenen geeignet, die eine niedrige Anzahl von Lichtquellen aufweisen, die ein gegebenes Pixel oder Oberflächenpunkt beeinflussen. Es ermöglicht den Lichtern, unterschiedliche Eigenschaften (Lichtfarben, Weichheiten, usw.) aufzuweisen. Eine Variation dieser Technik könnte in Situationen mit viel mehr Lichtern durch Abtasten von repräsentativen Teilmengen von Lichtern oder durch Kombinieren von mehreren Lichtern in Gruppen angewendet werden, die wie eine einzige Lichtquelle behandelt werden.
  • Eine weitere Option zum Verwenden des direktionalen Abstandspuffers besteht darin, Schattenintensität in einer direktionalisierten Form zu tragen. In diesem Fall ist die Schattenintensität tatsächlich das Umgekehrte: Lichtintensität vor irgendeiner Filterung für Weichheit. Um dies zu tun, würden die Filterschritte eine feste Anzahl von Malen mit unterschiedlichen kanonischen Richtungen ausgeführt werden und das Ergebnis der abschließenden Filteroperationen würde zusammen gemischt werden. Dies würde für eine Beleuchtungsumgebung geeignet sein, wobei zwischen einem halben Dutzend bis zu Tausenden von Schatten-werfenden Lichtern einen Ort zur gleichen Zeit beeinflussen könnten.
  • Hybride Renderingsysteme werden ausführlich in der vorhergehenden US Patentanmeldung Nr. 13/953,754 (veröffentlicht als US 2014/0063016 A1 ) beschrieben. Hybride Renderingsysteme ermöglichen der Strahlenverfolgungslogik und der Rasterisierungslogik, manche Verarbeitungsressourcen auf der GPU gemeinsam zu nutzen. 12 veranschaulicht ein Beispiel einer GPU 1202, die ein hybrides Renderingsystem 1200 implementiert. Die GPU 1202 ist der GPU 202 ähnlich, umfasst jedoch zwei Oberflächen-Identifikationslogik-Blöcke: Rasterisierungsoberflächen-Identifikationslogik 1204 und Strahlenverfolgungsoberflächen-Identifikationslogik 1206 und einen Normierer 1214 zusätzlich zu einer Verarbeitungslogik 1208, einem Bildpuffer 1210 und einer Steuerlogik 1212.
  • Die GPU 1202 kann eine vereinheitlichte Rechenressource bereitstellen, um Schattierungsarbeiten gleichzeitig für Oberflächen bereitstellen, die sowohl durch Strahlenverfolgungs- als auch durch Rasterisierungstechniken identifiziert sind. Beispielsweise führt eine vereinheitlichte Rechenressource Schattierer basierend auf einem normierten Satz von Eingaben aus, und eine gegebene Oberfläche wird durch ein zugeordnetes Schattierermodul schattiert, ungeachtet dessen, ob diese Oberfläche in Reaktion auf einen Strahlenschnittpunkt oder während der Rasterisierung zu schattieren ist. In einem anderen Beispiel können unterschiedliche Schattierer-Codemodule zur Schattierung von Strahlenverfolgungs-Schnittpunkten und zur Rasterisierung existieren. In diesem Beispiel können Oberflächen-Schattierer zur Rasterisierung Strahlen emittieren, die auf Schnittpunkt zu prüfen sind, und eine Schattierung in Abhängigkeit von den Ergebnissen der Schnittpunktprüfung dieses Strahls durchführen.
  • Ungeachtet dessen, ob 3D-Rendering unter Verwendung von Rasterisierungstechniken oder Strahlenverfolgung (oder beidem) durchgeführt wird, sind zwei Hauptkategorien von durchzuführenden Aktivitäten (1) das Identifizieren von Oberflächen von 3D-Szenengeometrie, die gegebenenfalls schattiert oder anderweitig während des Rendering eines 2D-Bildes verarbeitet werden müssen; und (2) das Bestimmen, welche Wirkung diese Oberfläche auf ein Bild, das gerendert wird, haben sollte. Diese konstituierenden Operationen können unterschiedliche Verarbeitungs-, Datenzugriffs-, und Datenflussimplikationen für die Rasterisierung und für die Strahlenverfolgung aufweisen.
  • Die Rasterisierungsoberflächen-Identifikationslogik 1204 verwendet Rasterisierungstechniken, um Oberflächen von 3D-Szenengeometrie zu identifizieren, die gegebenenfalls schattiert werden müssen. Dies kann das Durchführen von Tiefenprüfungen an jeder Abtastposition an Grundelementen (z.B. Dreiecken) beinhalten, welche die Abtastposition überlappen, um zu bestimmen, welches Grundelement bei jeder Abtastposition sichtbar ist. Angaben der bei jeder Abtastposition identifizierten Oberflächen werden dem Normierer 1214 bereitgestellt.
  • Die Strahlenverfolgungsoberflächen-Identifikationslogik 1206 verwendet Strahlenverfolgungstechniken, um Oberflächen einer 3D-Szenen-Geometrie zu identifizieren, die gegebenenfalls schattiert werden müssen. Dies kann das Verfolgen eines Strahls für jede Abtastposition durch die Szene und das Durchführen von Schnittpunktprüfungen an den Grundelementen in der Szene beinhalten, um zu bestimmen, welches Grundelement bei jeder Abtastposition geschnitten wird. Angaben der identifizierten Oberflächen bei jeder Abtastposition werden dem Normierer 1214 von einem oder dem anderen der Oberflächen-Identifikationslogik-Blöcken 1204 oder 1206 bereitgestellt.
  • Das Format der an dem Normierer 1214 empfangenen Daten kann abhängig davon unterschiedlich sein, ob die Daten von der Rasterisierungsoberflächen-Identifikationslogik 1204 oder der Strahlenverfolgungsoberflächen-Identifikationslogik 1206 empfangen werden. Der Normierer verarbeitet die Daten, um einen normierten Satz von Schattierereingaben zu bilden, welche ein gemeinsames Format ungeachtet dessen aufweisen, ob die Oberfläche reagierend auf einen Strahlenschnittpunkt oder während der Rasterisierung zu schattieren ist. Der normierte Satz von Schattierereingaben wird zu der Verarbeitungslogik 1208 geleitet, welche die Daten verarbeitet, um gerenderte Pixelwerte für einen Rahmen zu bestimmen. Die von der Verarbeitungslogik 1208 durchgeführte Verarbeitung kann das Ausführen eines oder mehrerer Schattiererprogramme auf Ausführungskernen umfassen, um zu bestimmen, welche Wirkung die identifizierten Oberflächen auf ein Bild haben sollten, das gerendert wird. Schatteneffekte können in die gerenderten Pixelwerte eingeführt werden, wie oben beschrieben. Die Ausführung eines Schattiererprogramms kann veranlassen, dass weitere Prüfungen von der Oberflächen-Identifikationslogik 1204 und/oder 1206 durchzuführen sind. Beispielsweise kann die Ausführung eines Schattierers veranlassen, dass ein oder mehrere neue Strahlen emittiert werden (z.B. um eine Reflexion zu modellieren), und diese Strahlen werden zu der Strahlenverfolgungsoberflächen-Identifikationslogik 1206 zurückgeleitet, um zu bestimmen, welche Oberflächen die emittierten Strahlen schneiden. Als weiteres Beispiel kann manche Geometrie, die unter Verwendung einer Rasterisierungstechnik verarbeitet wird, einen lichtdurchlässigen oder einen “punch-through” Objekttyp aufweisen. Konzeptmäßig umfassen punch-through Objekte Grundelemente, welche Löcher in ihnen aufweisen können. In diesem Fall kann das Ergebnis des Ausführens eines Schattierers an der Verarbeitungslogik 1208 zu einem weiteren Lauf durch die Rasterisierungsoberflächen-Identifikationslogik 1204 führen, um Bildwerte zu bestimmen, die mit lichtdurchlässigen Grundelementen gemischt werden, oder in den Abtastpositionen, die den Löchern von punch-through Grundelementen entsprechen, gerendert zu werden.
  • Für das Rendering einiger Abtastpositionen kann ein Rasterisierungsprozess durch Identifizieren einer Oberfläche beginnen, die an der Abtastposition (an der Rasterisierungsoberflächen-Identifikationslogik 1204) sichtbar ist, dann kann die Ausführung eines Schattierers an der Verarbeitungslogik 1208 einen Strahl emittieren, der dann unter Verwendung einer Strahlenverfolgungstechnik verarbeitet werden kann. Daher können sowohl Strahlenverfolgung als auch Rasterisierung verwendet werden, um einen bestimmten Bildwert an einer bestimmten Abtastposition zu rendern.
  • Die Steuerlogik 1212 kann den Betrieb der Rasterisierungsoberflächen-Identifikationslogik 1204, der Strahlenverfolgungsoberflächen-Identifikationslogik 1206, der Verarbeitungslogik 1208 und des Bildpuffers 1210 steuern, so dass z.B. die hier beschriebenen Schattierungseffekte auf die gerenderten Pixelwerte angewendet werden.
  • Es sei angemerkt, dass die obigen Beispiele mit Bezug auf das Anwenden von Schattierungseffekte auf einen gerenderten Rahmen beschrieben sind. Ähnliche Verfahren können zum Anwenden weiterer Effekte, wie beispielsweise Reflexionen und Tiefe von Feldeffekten, verwendet werden, wobei ein Unterschied darin besteht, dass die Oberflächeneigenschaft und nicht die Lichtgröße diktiert, wie sehr die Weichheit proportional mit dem Verdeckungsabstand zunimmt.
  • In dem Beispiel einer Reflexion würde ein Strahl entlang einer Richtung geworfen werden, die unter Verwendung der euklidischen Reflexionsberechnung oder alternativ durch Auswerten einer Funktion für das Oberflächenmaterial, z.B. einer BRDF, berechnet wird. Dieser Strahl würde dann veranlassen, dass der Abstand zu dem ersten sichtbaren Objekt aufgezeichnet wird, und schließlich könnten Unschärfekernelparameter aus dem Abstand zu dem reflektierten Objekt und der Glanzeigenschaft des Materials berechnet werden. Genau wie oben, müsste der Kernel in den Schirm-Raum projiziert und bewertet werden, um unbeabsichtigte Unschärfebildung über Bild-Raum-Unstetigkeiten zu vermeiden, die durch unterschiedliche sichtbare Objekte, Materialänderungen, große Änderungen in der Tiefe usw. verursacht werden.
  • 13 zeigt ein Computersystem, bei dem die hier beschriebenen Graphikverarbeitungssysteme implementiert werden können. Das Computersystem umfasst eine CPU 1302, eine GPU 1304, einen Speicher 1306 und andere Vorrichtungen 1308, wie beispielsweise eine Anzeige 1310, einen Lautsprecher 1312 und eine Kamera 1314. Die GPU 1304 kann der oben beschriebenen GPU 202 oder der GPU 1202 entsprechen. Der Speicher 1306 kann dem oben beschriebenen Speicher 204 entsprechen. Die Bauteile des Computersystems können miteinander über einen Kommunikationsbus 1316 kommunizieren.
  • Die Graphikverarbeitungseinheiten von 2 und 12 werden gezeigt, wie sie eine Anzahl von Funktionsblöcken umfassen. Dies ist lediglich schematisch und nicht dazu bestimmt, eine strenge Teilung zwischen unterschiedlichen Logikelementen von derartigen Entitäten zu definieren. Jeder Funktionsblock kann in irgendeiner geeigneten Art und Weise bereitgestellt werden. Es sei zu verstehen, dass hier beschriebene dazwischenliegende Werte, wie durch eine Graphikverarbeitungseinheit gebildet, nicht von der Graphikverarbeitungseinheit an irgendeinem Punkt physikalisch erzeugt werden müssen und lediglich Logikwerte darstellen können, die zweckmäßigerweise die Verarbeitung beschreiben, die von der Graphikverarbeitungseinheit zwischen ihrem Eingang und Ausgang durchgeführt wird.
  • Die hier beschriebenen Graphikverarbeitungseinheiten können in Hardware auf einer integrierten Schaltung verkörpert sein. Die hier beschriebenen Graphikverarbeitungseinheiten können ausgelegt sein, um irgendeines der hier beschriebenen Verfahren durchzuführen. Im Allgemeinen können irgendwelche der oben beschriebenen Funktionen, Verfahren, Techniken oder Bauteile in Software, Firmware, Hardware (z.B. feste Logikschaltungen) oder irgendeine Kombination davon implementiert sein. Die Begriffe “Modul”, “Funktionalität”, “Bauteil”, “Element”, “Einheit”, “Block” und “Logik” können hier verwendet werden, um Software, Firmware, Hardware oder irgendeine Kombination davon allgemein darzustellen. Im Fall einer Softwareimplementierung stellen das Modul, die Funktionalität, das Bauteil, das Element, die Einheit, der Block oder die Logik einen Programmcode dar, der die spezifizierten Aufgaben durchführt, wenn auf einem Prozessor ausgeführt. Die hier beschriebenen Algorithmen und Verfahren könnten von einem oder mehreren Prozessoren durchgeführt werden, die einen Code ausführen, der den(die) Prozessor(en) veranlasst, die Algorithmen/Verfahren durchzuführen. Beispiele eines computerlesbaren Speichermediums umfassen einen Direktzugriffsspeicher (RAM), einen Nurlesespeicher (ROM), eine optische Platte, einen Flash-Speicher, einen Festplattenspeicher und andere Speichervorrichtungen, die magnetische, optische und andere Techniken verwenden können, um Anweisungen oder andere Daten zu speichern und auf die mittels einer Maschine zugegriffen werden kann.
  • Die Begriffe Computerprogrammcode und computerlesbare Anweisungen, wie hier verwendet, beziehen sich auf irgendeine Art von ausführbarem Code für Prozessoren, einschließlich eines in einer Maschinensprache, einer interpretierten Sprache oder einer Skriptsprache ausgedrückten Codes. Ein ausführbarer Code umfasst Binärcode, Maschinencode, Bytecode, Code, einen eine integrierte Schaltung beschreibenden Code (wie beispielsweise eine Hardwarebeschreibungssprache oder Netzliste) und Code, der in einem Programmiersprachen-Code, wie beispielsweise C, Java oder OpenCL, ausgedrückt ist. Ein ausführbarer Code kann beispielsweise irgendeine Art von Software, Firmware, Skript, Modul oder Bibliothek sein, der, wenn er ein einer virtuellen Maschine oder anderen Softwareumgebung geeignet ausgeführt, verarbeitet, interpretiert, kompiliert oder ausgeführt wird, einen Prozessor des Computersystems veranlasst, bei dem der ausführbare Code unterstützt wird, die durch den Code spezifizierten Aufgaben durchzuführen.
  • Ein Prozessor, ein Computer oder ein Computersystem kann irgendeine Art von Vorrichtung, Maschine oder fest zugeordnete Schaltung, oder Sammlung oder Teil davon mit Verarbeitungsfähigkeit sein, so dass er/sie Anweisungen ausführen kann. Ein Prozessor kann irgendeine Art von Allzweck- oder fest zugeordneter Prozessor, wie beispielsweise eine CPU, eine GPU, ein System-auf-Chip, eine Zustandsmaschine, ein Medienprozessor, eine anwendungsspezifische integrierte Schaltung (ASIC), eine programmierbare logische Anordnung, ein Field Programmable Gate Anordnung (FPGA) oder dergleichen sein. Ein Computer oder Computersystem kann einen oder mehrere Prozessoren umfassen.
  • Es ist ebenfalls beabsichtigt, Software einzuschließen, die eine Konfiguration von Hardware definiert, wie hier beschrieben, wie beispielsweise HDL(Hardwarebeschreibungssprache)-Software, wie zum Formen von integrierten Schaltungen oder zum Auslegen von programmierbaren Chips verwendet wird, um gewünschte Funktionen auszuführen. Das heißt, es kann ein computerlesbares Speichermedium bereitgestellt werden, das darauf codiert einen computerlesbaren Programmcode in der Form eines Definitionsdatensatzes für eine integrierte Schaltung aufweist, der, wenn in einem Herstellungssystem für eine integrierte Schaltung verarbeitet, das System auslegt, um ein Renderingsystem herzustellen, das ausgelegt ist, um irgendeines der hier beschriebenen Verfahren durchzuführen, oder um ein Renderingsystem herzustellen, das irgendeines der hier beschriebenen Geräte umfasst. Ein Definitionsdatensatz für eine integrierte Schaltung kann beispielsweise eine Beschreibung für eine integrierte Schaltung sein.
  • Ein Definitionsdatensatz für eine integrierte Schaltung kann in der Form eines Computercodes, beispielsweise als eine Netzliste, eines Codes zum Auslegen eines programmierbaren Chips, als eine Hardwarebeschreibungssprache sein, die eine integrierte Schaltung auf irgendeinem Niveau, einschließlich als RTL(Register Transfer Level)-Code, als Hoher-Niveau-Schaltungsdarstellung, wie beispielsweise Verilog oder VHDL, und als Niedrig-Niveau-Schaltungsdarstellung, wie beispielsweise OASIS (RTM) und GDSII, definiert. Übergeordnete Darstellungen, die eine integrierte Schaltung logisch definieren (wie beispielsweise RTL), können bei einem Computersystem verarbeitet werden, das zum Erzeugen einer Herstellungsdefinition einer integrierten Schaltung im Kontext einer Softwareumgebung ausgelegt ist, die Definitionen von Schaltungselementen und Regeln zum Kombinieren dieser Elemente umfasst, um die Herstellungsdefinition einer integrierten Schaltung zu erzeugen, die so durch die Darstellung definiert ist. Wie es typischerweise der Fall mit Software ist, die an einem Computersystem ausgeführt wird, um eine Maschine zu definieren, können ein oder mehrere dazwischenliegende Benutzerschritte (z.B. Bereitstellen von Befehlen, Variablen usw.) erforderlich sein, damit ein Computersystem, das zum Erzeugen einer Herstellungsdefinition einer integrierten Schaltung ausgelegt ist, einen Code auszuführt, der eine integrierte Schaltung definiert, um die Herstellungsdefinition dieser integrierten Schaltung zu erzeugen.
  • Ein Beispiel der Verarbeitung eines Definitionsdatensatzes für eine integrierte Schaltung an einem Herstellungssystem für eine integrierte Schaltung, um das System auszulegen, um ein Renderingsystem herzustellen, wird nun mit Bezug auf 14 beschrieben.
  • 14 zeigt ein Beispiel eines Herstellungssystems für eine integrierte Schaltung (IC) 1402, das ein Layout-Verarbeitungssystem 1404 und ein Erzeugungssystem für eine integrierte Schaltung 1406 umfasst. Das IC-Herstellungssystem 1402 ist ausgelegt, um einen IC-Definitionsdatensatz zu empfangen (z.B. Definieren eines Renderingsystems, wie in irgendeinem der hier beschriebenen Beispiele), den IC-Definitionsdatensatz zu verarbeiten und ein IC gemäß dem IC-Definitionsdatensatz zu erzeugen (der z.B. ein Renderingsystem verkörpert, wie in irgendeinem der hier beschriebenen Beispiele). Die Verarbeitung des IC-Definitionsdatensatzes legt das IC-Herstellungssystem 1402 aus, um eine integrierte Schaltung herzustellen, die ein Renderingsystem verkörpert, wie in irgendeinem der hier beschriebenen Beispiele.
  • Das Layout-Verarbeitungssystem 1404 ist ausgelegt, um den IC-Definitionsdatensatz zu empfangen und zu verarbeiten, um ein Schaltungs-Layout zu bestimmen. Verfahren zum Bestimmen eines Schaltungs-Layouts von einem IC-Definitionsdatensatz sind im Stand der Technik bekannt und können beispielsweise ein Synthetisieren eines RTL-Codes beinhalten, um eine Darstellung auf Gatterebene einer zu erzeugenden Schaltung, z.B. in Begriffen von logischen Bauteilen (z.B. NAND, NOR, AND, OR, MUX und FLIP-FLOP-Bauteilen), zu bestimmen. Ein Schaltungs-Layout kann von der Darstellung auf Gatterebene der Schaltung durch Bestimmen von Positionsinformation für die logischen Bauteile bestimmt werden. Dies kann automatisch oder mit Benutzerbeteiligung durchgeführt werden, um das Schaltungs-Layout zu optimieren. Wenn das Layout-Verarbeitungssystem 1404 das Schaltungs-Layout bestimmt hat, kann es eine Schaltungs-Layout-Definition an das IC-Erzeugungssystem 1406 ausgeben. Eine Schaltungs-Layout-Definition kann beispielsweise eine Beschreibung für ein Schaltungs-Layout sein.
  • Das IC-Erzeugungssystem 1406 erzeugt ein IC gemäß der Schaltungs-Layout-Definition, wie in der Technik bekannt ist. Beispielsweise kann das IC-Erzeugungssystem 1406 einen Halbleitervorrichtung-Fertigungsprozess implementieren, um das IC zu erzeugen, der eine Mehrschrittfolge von photo-lithographischen und chemischen Verarbeitungsschritten beinhalten kann, während derselben elektronische Schaltungen allmählich auf einem Wafer erzeugt werden, der aus einem Halbleitermaterial hergestellt ist. Die Schaltungs-Layout-Definition kann in der Form einer Maske sein, die in einem lithographischen Prozess zum Erzeugen eines IC gemäß der Schaltungsdefinition verwendet werden kann. Alternativ kann die dem IC-Erzeugungssystem 1406 bereitgestellte Schaltungs-Layout-Definition in der Form eines computerlesbaren Codes sein, den das IC-Erzeugungssystem 1406 verwenden kann, um eine geeignete Maske zum Gebrauch bei der Erzeugung eines IC zu bilden.
  • Die von dem IC-Herstellungssystem 1402 durchgeführten unterschiedlichen Prozesse können alle in einem Ort, z.B. von einem Teilnehmer, implementiert werden. Alternativ kann das IC-Herstellungssystem 1402 ein verteiltes System sein, so dass einige der Prozesse an unterschiedlichen Orten und von unterschiedlichen Teilnehmern durchgeführt werden können. Beispielsweise können einige der folgenden Stufen: (i) Synthetisieren des RTL-Codes, der den IC-Definitionsdatensatz darstellt, um eine Darstellung auf Gatterebene einer zu erzeugenden Schaltung zu bilden, (ii) Erzeugen eines Schaltungs-Layouts basierend auf der Darstellung auf Gatterebene, (iii) Bilden einer Maske gemäß dem Schaltungs-Layout und (iv) Anfertigen einer integrierten Schaltung unter Verwendung der Maske, in unterschiedlichen Orten und/oder von unterschiedlichen Teilnehmern durchgeführt werden.
  • In anderen Beispielen kann eine Verarbeitung des Definitionsdatensatzes für eine integrierte Schaltung an einem Herstellungssystem für eine integrierte Schaltung das System auslegen, um ein Renderingsystem herzustellen, ohne dass der IC-Definitionsdatensatz verarbeitet wird, um ein Schaltungs-Layout zu bestimmen. Beispielsweise kann ein Definitionsdatensatz für eine integrierte Schaltung die Konfiguration eines rekonfigurierbaren Prozessors definieren, wie beispielsweise eines FPGA, und die Verarbeitung dieses Datensatzes kann ein IC-Herstellungssystem auslegen, um einen rekonfigurierbaren Prozessor zu erzeugen, der diese definierte Konfiguration aufweist (z.B. durch Laden von Konfigurationsdaten in den FPGA).
  • In einigen Ausführungsformen kann ein Herstellungsdefinitionsdatensatz für eine integrierte Schaltung, wenn in einem Herstellungssystem für eine integrierte Schaltung verarbeitet, ein Herstellungssystem für eine integrierte Schaltung veranlassen, eine Vorrichtung zu erzeugen, wie hier beschrieben. Beispielsweise kann die Konfiguration eines Herstellungssystems für eine integrierte Schaltung in der oben beschriebenen Art und Weise mit Bezug auf 14 mittels eines Herstellungsdefinitionsdatensatz für eine integrierte Schaltung veranlassen, dass eine Vorrichtung, wie hier beschrieben, hergestellt wird.
  • In einigen Beispielen könnte ein Definitionsdatensatz für eine integrierte Schaltung Software umfassen, die auf Hardware läuft, die bei dem Datensatz oder in Kombination mit Hardware definiert ist, die bei dem Datensatz definiert ist. In dem in 14 gezeigten Beispiel kann das IC-Erzeugungssystem ferner von einem Definitionsdatensatz für eine integrierte Schaltung ausgelegt sein, um beim Herstellen einer integrierten Schaltung Firmware auf diese integrierte Schaltung gemäß einem Programmcode zu laden, der bei dem Definitionsdatensatz für eine integrierte Schaltung definiert ist, oder anderweitig einen Programmcode mit der integrierten Schaltung zur Verwendung mit der integrierten Schaltung bereitstellt.
  • Die Anmelderin offenbart hiermit in Isolation jedes hierin beschriebene einzelne Merkmal und jede beliebige Kombination aus zwei oder mehr derartigen Merkmalen in dem Ausmaß, dass solche Merkmale oder Kombinationen auf der Grundlage der vorliegenden Patentschrift als Ganzes angesichts des üblichen allgemeinen Wissens eines Fachmanns ausgeführt werden können, ungeachtet dessen, ob solche Merkmale oder Kombinationen von Merkmalen etwaige hier offenbarte Probleme lösen. Angesichts der vorausgegangenen Beschreibung ist es für einen Fachmann offensichtlich, dass innerhalb des Schutzbereichs der Erfindung verschiedenartige Modifikationen vorgenommen werden können.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 2014/0063016 A1 [0132]

Claims (20)

  1. Maschinenimplementiertes Verfahren zur Graphikverarbeitung, wobei Positionen von Grundelementen in einer Szene durch Knoten einer hierarchischen Beschleunigungsstruktur dargestellt werden, wobei das Verfahren umfasst: Verwenden der hierarchischen Beschleunigungsstruktur, um sichtbare Oberflächen einer Szene für Pixel eines Rahmens von Pixeln zu identifizieren; Bestimmen von Ursprüngen zum Werfen von Strahlen von den sichtbaren Oberflächen in Richtung eines Lichts; Bestimmen, ob jeder der Strahlen vom Erreichen des Licht verdeckt ist; und für einen oder mehrere der Strahlen, die bestimmt werden, nicht von dem Licht verdeckt zu sein: Identifizieren eines nächstgelegenen getroffenen Grundelements durch Bestimmen, welcher der Knoten der hierarchischen Beschleunigungsstruktur, der von dem Strahl zu treffen ist, das kleinste Abstandsverhältnis aufweist, wobei ein Abstandsverhältnis für einen Knoten das Verhältnis einer Abmessung des Knotens und des Abstands entlang des Strahls ist, bei dem der Strahl den Knoten trifft; und Bestimmen eines Ausmaßes der Verdeckung von dem Licht für das dem Strahlenursprung entsprechende eine oder mehrere Pixel gemäß Daten, die sich auf den bestimmten Knoten beziehen, der das kleinste Abstandsverhältnis aufweist.
  2. Maschinenimplementiertes Verfahren gemäß Anspruch 1, wobei die Daten bezogen auf den bestimmten Knoten, der das kleinste Abstandsverhältnis aufweist, eines oder beides umfasst von: (i) einer Angabe der Abmessung des Knotens und einer Angabe des Abstands entlang des Strahls, bei dem der Strahl den Knoten trifft, und (ii) das Abstandsverhältnis des bestimmten Knotens.
  3. Maschinenimplementiertes Verfahren gemäß Anspruch 1 oder 2, wobei das Bestimmen eines Ausmaßes der Verdeckung von dem Licht für das eine oder mehrere Pixel entsprechend dem Strahlenursprung das Bestimmen eines Winkels umfasst, der dem Abstandsverhältnis des bestimmten Knotens entspricht, und Verwenden des bestimmten Winkels, um das Ausmaß der Verdeckung von dem Licht zu bestimmen.
  4. Maschinenimplementiertes Verfahren gemäß einem vorhergehenden Anspruch, wobei die Knoten Voxel sind, die gemäß einer Octree-Struktur bestimmt werden.
  5. Maschinenimplementiertes Verfahren gemäß einem vorhergehenden Anspruch, wobei das Identifizieren eines nächstgelegenen getroffenen Grundelements für einen Strahl umfasst: Speichern eines Abstandsverhältnisses des am nächsten kommenden Treffers für den Strahl; Absenken innerhalb der hierarchischen Beschleunigungsstruktur von einem aktuellen Niveau für ein Prüfgrundelement, das geprüft wird, wenn der aktuelle Knoten entsprechend dem Prüfgrundelement auf dem aktuellen Niveau ein Treffer für den Strahl ist, und wenn das Abstandsverhältnis für den aktuellen Knoten kleiner als das gespeicherte Abstandsverhältnis des am nächsten kommenden Treffers für den Strahl ist; und Aktualisieren des gespeicherten Abstandsverhältnisses des am nächsten kommenden Treffers für den Strahl in Reaktion auf das Absenken innerhalb der hierarchischen Beschleunigungsstruktur.
  6. Maschinenimplementiertes Verfahren gemäß Anspruch 5, wobei ein Knoten der hierarchischen Beschleunigungsstruktur mit einem relativ niedrigen Abstandsverhältnis vor einem Knoten der hierarchischen Beschleunigungsstruktur mit einem relativ hohen Abstandsverhältnis wahlweise abgesenkt wird.
  7. Maschinenimplementiertes Verfahren gemäß Anspruch 5 oder 6, wobei die hierarchische Beschleunigungsstruktur in einer Tiefe-zuerst-Weise durchquert wird.
  8. Maschinenimplementiertes Verfahren gemäß einem vorhergehenden Anspruch, wobei das Bestimmen eines Ausmaßes der Verdeckung von dem Licht für das dem Strahlenursprung entsprechende eine oder mehrere Pixel ferner auf das Licht bezogene Information verwenden kann.
  9. Maschinenimplementiertes Verfahren gemäß Anspruch 8, wobei die auf das Licht bezogene Information eines oder mehrere umfasst von: einer Position des Lichts in der Szene; einem Abstand des Lichts von dem Ursprung des Strahls; einem räumlichen Ausmaß des Lichts in der Szene; und einem räumlichen Ausmaß des Lichts wie entlang der Richtung des Strahls betrachtet.
  10. Maschinenimplementiertes Verfahren gemäß einem vorhergehenden Anspruch, wobei das Bestimmen eines Ausmaßes der Verdeckung von dem Licht für das dem Strahlenursprung entsprechende eine oder mehrere Pixel umfasst: Bestimmen eines Dämpfungswerts für das nächstgelegene getroffene Grundelement für den Strahl und Verwenden des bestimmten Dämpfungswerts, um das Ausmaß der Verdeckung zu bestimmen.
  11. Maschinenimplementiertes Verfahren gemäß einem vorhergehenden Anspruch, ferner umfassend: für jeden der Strahlen, die bestimmt werden, von dem Licht verdeckt zu sein: Aufzeichnen eines Abstands entlang des Strahls von der Oberfläche zu seiner jeweiligen Verdeckung; Bestimmen einer Mischregion für ein Mischfilter basierend auf dem aufgezeichneten Abstand für den Strahl; Transformieren dieser Mischregion in den Rahmen von Pixeln; Mischen von Schatteninformation für Pixel in den Rahmen von Pixeln, die innerhalb der transformierten Mischregion sind; und Verwenden der gemischten Schatteninformation, um eine Schattierung für das eine oder mehrere Pixel entsprechend dem Strahlenursprung zu bestimmen.
  12. Maschinenimplementiertes Verfahren gemäß einem vorhergehenden Anspruch, ferner umfassend: Bestimmen gerenderter Pixelwerte des Rahmens gemäß den bestimmten Ausmaßen der Verdeckung von dem Licht für die Pixel.
  13. Graphikverarbeitungseinheit, die ausgelegt ist, einen Rahmen zu rendern, der eine Szene darstellt, wobei Positionen von Grundelementen in der Szene durch Knoten einer hierarchischen Beschleunigungsstruktur dargestellt werden, wobei die Graphikverarbeitungseinheit umfasst: Oberflächen-Identifikationslogik, die ausgelegt ist, Oberflächen innerhalb der Szene zu identifizieren; und Verarbeitungslogik, die ausgelegt ist, Graphikdaten für identifizierte Oberflächen zu verarbeiten; wobei die Graphikverarbeitungseinheit ausgelegt ist, um: die hierarchische Beschleunigungsstruktur zu verwenden, um sichtbare Oberflächen einer Szene für Pixel eines Rahmens von Pixeln zu identifizieren; Ursprünge zum Werfen von Strahlen von den sichtbaren Oberflächen in Richtung eines Lichts zu bestimmen; zu bestimmen, ob jeder der Strahlen vom Erreichen des Lichts verdeckt ist; und für einen oder mehrere der Strahlen, die bestimmt werden, nicht von dem Licht verdeckt zu sein: Identifizieren eines nächstgelegenen getroffenen Grundelements durch Bestimmen, welcher der Knoten der hierarchischen Beschleunigungsstruktur, der von dem Strahl zu treffen ist, das kleinste Abstandsverhältnis aufweist, wobei ein Abstandsverhältnis für einen Knoten das Verhältnis einer Abmessung des Knotens und des Abstands entlang des Strahls ist, bei dem der Strahl den Knoten trifft; und Bestimmen eines Ausmaßes der Verdeckung von dem Licht für das dem Strahlenursprung entsprechende eine oder mehrere Pixel gemäß Daten bezogen auf den bestimmten Knoten, der das kleinste Abstandsverhältnis aufweist.
  14. Graphikverarbeitungseinheit gemäß Anspruch 13, wobei die Graphikverarbeitungseinheit ausgelegt ist, zu bestimmen: das Ausmaß der Verdeckung von dem Licht für das einem Strahlenursprung entsprechende eine oder mehreren Pixeln durch Bestimmen eines Winkels, der dem Abstandsverhältnis des bestimmten Knotens entspricht, und Verwenden des bestimmten Winkels, um das Ausmaß der Verdeckung von dem Licht zu bestimmen.
  15. Graphikverarbeitungseinheit gemäß Anspruch 13 oder 14, die ausgelegt ist, ein nächstgelegenes getroffenes Grundelement für einen Strahl zu identifizieren, durch: Speichern eines Abstandsverhältnisses des am nächsten kommenden Treffers für den Strahl; Absenken innerhalb der hierarchischen Beschleunigungsstruktur von einem aktuellen Niveau für ein Prüfgrundelement, das geprüft wird, falls der aktuelle Knoten, der dem Prüfgrundelement auf dem aktuellen Niveau entspricht, ein Treffer für den Strahl ist, und falls das Abstandsverhältnis für den aktuellen Knoten kleiner als das gespeicherte Abstandsverhältnis des am nächsten kommenden Treffers für den Strahl ist; und Aktualisieren des gespeicherten Abstandsverhältnisses des am nächsten kommenden Treffers für den Strahl in Reaktion auf das Absteigen innerhalb der hierarchischen Beschleunigungsstruktur.
  16. Graphikverarbeitungseinheit gemäß einem der Ansprüche 13 bis 15, wobei die Graphikverarbeitungseinheit ausgelegt ist, ein Ausmaß der Verdeckung von dem Licht für ein Pixel ferner unter Verwendung von auf das Licht bezogener Information zu bestimmen.
  17. Graphikverarbeitungseinheit gemäß einem der Ansprüche 13 bis 16, ferner umfassend einen Puffer, der ausgelegt ist, für jeden des einen oder der mehreren Strahlen ein Abstandsverhältnis des nächstgelegenen getroffenen Grundelements für den Strahl zu speichern.
  18. Graphikverarbeitungseinheit gemäß einem der Ansprüche 13 bis 17, wobei die Graphikverarbeitungseinheit ausgelegt ist, für jeden der Strahlen, die bestimmt werden, von dem Licht verdeckt zu sein: einen Abstand entlang des Strahls von der Oberfläche zu seiner jeweiligen Verdeckung aufzuzeichnen; eine Mischregion für ein Mischfilter basierend auf dem aufgezeichneten Abstand für den Strahl zu bestimmen; diese Mischregion in den Rahmen von Pixeln zu transformieren; Schatteninformation für Pixel in den Rahmen von Pixeln zu mischen, die innerhalb der transformierten Mischregion sind; und die gemischte Schatteninformation zu verwenden, um eine Schattierung für das eine oder mehrere Pixel entsprechend dem Strahlenursprung zu bestimmen.
  19. Nicht-transitorisches computerlesbares Speichermedium, das darauf gespeichert eine computerlesbare Beschreibung einer integrierten Schaltung aufweist, die, wenn in einem Herstellungssystem für integrierte Schaltungen verarbeitet, das Herstellungssystem für integrierte Schaltungen veranlasst, eine Graphikverarbeitungseinheit gemäß einem der Ansprüche 13 bis 18 herzustellen.
  20. Nicht-transitorisches computerlesbares Speichermedium, das darauf gespeichert Prozessor-ausführbare Anweisungen aufweist, die, wenn ausgeführt, wenigstens einen Prozessor veranlassen, das Verfahren gemäß einem der Ansprüche 1 bis 12 durchzuführen.
DE102016103874.1A 2015-03-03 2016-03-03 Systeme und Verfahren zur weichen Schattierung in 3D-Rendering Pending DE102016103874A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562127439P 2015-03-03 2015-03-03
US62/127,439 2015-03-03

Publications (1)

Publication Number Publication Date
DE102016103874A1 true DE102016103874A1 (de) 2016-09-08

Family

ID=55858967

Family Applications (3)

Application Number Title Priority Date Filing Date
DE102016103891.1A Pending DE102016103891A1 (de) 2015-03-03 2016-03-03 Systeme und Verfahren zur weichen Schattierung in 3D-Rendering
DE102016103874.1A Pending DE102016103874A1 (de) 2015-03-03 2016-03-03 Systeme und Verfahren zur weichen Schattierung in 3D-Rendering
DE102016103870.9A Pending DE102016103870A1 (de) 2015-03-03 2016-03-03 Systeme und Verfahren zur weichen Schattierung in 3D-Rendering

Family Applications Before (1)

Application Number Title Priority Date Filing Date
DE102016103891.1A Pending DE102016103891A1 (de) 2015-03-03 2016-03-03 Systeme und Verfahren zur weichen Schattierung in 3D-Rendering

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE102016103870.9A Pending DE102016103870A1 (de) 2015-03-03 2016-03-03 Systeme und Verfahren zur weichen Schattierung in 3D-Rendering

Country Status (3)

Country Link
US (7) US10049489B2 (de)
DE (3) DE102016103891A1 (de)
GB (3) GB2537973B (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9501700B2 (en) 2012-02-15 2016-11-22 Xactware Solutions, Inc. System and method for construction estimation using aerial images
US10169909B2 (en) * 2014-08-07 2019-01-01 Pixar Generating a volumetric projection for an object
DE102016103891A1 (de) * 2015-03-03 2016-09-08 Imagination Technologies Limited Systeme und Verfahren zur weichen Schattierung in 3D-Rendering
RU2623806C1 (ru) * 2016-06-07 2017-06-29 Акционерное общество Научно-производственный центр "Электронные вычислительно-информационные системы" (АО НПЦ "ЭЛВИС") Способ и устройство обработки стереоизображений
US10529119B2 (en) * 2016-12-25 2020-01-07 Biosense Webster (Israel) Ltd. Fast rendering of quadrics and marking of silhouettes thereof
US10600232B2 (en) * 2018-01-26 2020-03-24 Nvidia Corporation Creating a ray differential by accessing a G-buffer
WO2019182911A1 (en) * 2018-03-17 2019-09-26 Nvidia Corporation Reflection denoising in ray-tracing applications
US11113790B2 (en) * 2018-04-12 2021-09-07 Nvidia Corporation Adding greater realism to a computer-generated image by smoothing jagged edges
US10650578B2 (en) 2018-05-11 2020-05-12 Microsoft Technology Licensing, Llc Dynamic soft shadow
US10991079B2 (en) 2018-08-14 2021-04-27 Nvidia Corporation Using previously rendered scene frames to reduce pixel noise
US10699383B2 (en) * 2018-08-27 2020-06-30 Nvidia Corp. Computational blur for varifocal displays
US10943387B2 (en) 2018-08-30 2021-03-09 Nvidia Corporation Generating scenes containing shadows using pixel noise reduction techniques
CN109377552B (zh) * 2018-10-19 2023-06-13 珠海金山数字网络科技有限公司 图像遮挡计算方法、装置、计算设备及存储介质
US11138800B1 (en) 2018-10-31 2021-10-05 Facebook Technologies, Llc Optimizations to reduce multi-channel ray casting for color sampling
CN109493406B (zh) * 2018-11-02 2022-11-11 四川大学 快速百分比靠近软阴影绘制方法
US10825231B2 (en) * 2018-12-10 2020-11-03 Arm Limited Methods of and apparatus for rendering frames for display using ray tracing
WO2020191066A1 (en) * 2019-03-18 2020-09-24 Nvidia Corporation Adaptive ray tracing suitable for shadow rendering
US10853994B1 (en) 2019-05-23 2020-12-01 Nvidia Corporation Rendering scenes using a combination of raytracing and rasterization
US11004254B2 (en) * 2019-07-25 2021-05-11 Nvidia Corporation Performance of ray-traced shadow creation within a scene
US11094113B2 (en) * 2019-12-04 2021-08-17 Geomni, Inc. Systems and methods for modeling structures using point clouds derived from stereoscopic image pairs
CN112633372B (zh) * 2020-12-22 2023-03-24 三星电子(中国)研发中心 一种ar设备的光源估计方法和装置
CN112750191B (zh) * 2021-01-12 2023-11-10 华能新能源股份有限公司 一种实时渲染中软阴影的制作方法
CN112734900A (zh) * 2021-01-26 2021-04-30 腾讯科技(深圳)有限公司 阴影贴图的烘焙方法、装置、设备及计算机可读存储介质
US11928770B2 (en) * 2021-12-27 2024-03-12 Advanced Micro Devices, Inc. BVH node ordering for efficient ray tracing
CN115239869B (zh) * 2022-09-22 2023-03-24 广州简悦信息科技有限公司 阴影处理方法、阴影渲染方法及设备
CN116385614B (zh) * 2023-03-29 2024-03-01 深圳海拓时代科技有限公司 基于可视化的3d视觉模块渲染控制系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140063016A1 (en) 2012-07-31 2014-03-06 John W. Howson Unified rasterization and ray tracing rendering environments

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0459761A3 (en) * 1990-05-31 1993-07-14 Hewlett-Packard Company Three dimensional computer graphics employing ray tracking to compute form factors in radiosity
US5305430A (en) * 1990-12-26 1994-04-19 Xerox Corporation Object-local sampling histories for efficient path tracing
DE69233717T2 (de) * 1991-06-28 2008-10-30 Lim, Hong Lip, Darlington Verbesserungen in sichtbarkeit-berechnungen fuer 3d-rechner
US6970164B1 (en) * 2000-12-18 2005-11-29 Microsoft Corporation Determining regions that are occluded from an observation point
EP2339540B1 (de) * 2003-05-30 2012-07-18 Pacific Data Images LLC Wiedergabe weicher Schatten durch Tiefenkarten
US8150111B2 (en) * 2005-03-15 2012-04-03 The University Of North Carolina At Chapel Hill Methods, systems, and computer program products for processing three-dimensional image data to render an image from a viewpoint within or beyond an occluding region of the image data
US7969438B2 (en) * 2007-01-23 2011-06-28 Pacific Data Images Llc Soft shadows for cinematic lighting for computer graphics
US7817823B1 (en) 2007-04-27 2010-10-19 Adobe Systems Incorporated Calculating shadow from area light sources using a spatially varying blur radius
US7982734B2 (en) 2007-08-01 2011-07-19 Adobe Systems Incorporated Spatially-varying convolutions for rendering soft shadow effects
US20090102843A1 (en) * 2007-10-17 2009-04-23 Microsoft Corporation Image-based proxy accumulation for realtime soft global illumination
US8223148B1 (en) * 2007-11-12 2012-07-17 Adobe Systems Incorporated Method and apparatus for computing indirect lighting for global illumination rendering in 3-D computer graphics
PT104635A (pt) 2009-06-16 2010-12-16 Univ Nova De Lisboa Dispositivo electrocrómico e método para a sua produção
US9639975B1 (en) 2010-10-21 2017-05-02 Pixar System and method for generating shadows
FR2966623A1 (fr) * 2010-10-21 2012-04-27 Thomson Licensing Procede d’estimation de l’occultation dans un environnement virtuel
DE112012003243T5 (de) * 2011-08-05 2014-04-30 Caustic Graphics, Inc. Systeme und Verfahren für die Erzeugung und Aktualisierung für 3D-Szenenbeschleunigungsstrukturen
US9235921B2 (en) * 2011-11-08 2016-01-12 Imagination Technologies Limited Profiling ray tracing renderers
KR101907857B1 (ko) 2012-03-09 2018-10-15 한국전자통신연구원 무선 액세스 오버레이 방송망 구성 장치
FR2988891A1 (fr) * 2012-03-29 2013-10-04 Thomson Licensing Procede d'estimation de niveau d'opacite dans une scene et dispositif correspondant
US20140375640A1 (en) * 2012-12-26 2014-12-25 Reuven Bakalash Ray shadowing method utilizing geometrical stencils
KR102164541B1 (ko) * 2013-10-22 2020-10-12 삼성전자 주식회사 레이 트레이싱 시스템에서의 가속 구조 생성 장치 및 그 생성 방법
US9569885B2 (en) * 2014-01-02 2017-02-14 Nvidia Corporation Technique for pre-computing ambient obscurance
DE102016103891A1 (de) * 2015-03-03 2016-09-08 Imagination Technologies Limited Systeme und Verfahren zur weichen Schattierung in 3D-Rendering

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140063016A1 (en) 2012-07-31 2014-03-06 John W. Howson Unified rasterization and ray tracing rendering environments

Also Published As

Publication number Publication date
US20230334760A1 (en) 2023-10-19
GB2537973B (en) 2018-01-10
US11682159B2 (en) 2023-06-20
US10529120B2 (en) 2020-01-07
GB2537973A (en) 2016-11-02
US11037360B2 (en) 2021-06-15
US11030795B2 (en) 2021-06-08
US20160260245A1 (en) 2016-09-08
DE102016103870A1 (de) 2016-09-08
GB2537729A (en) 2016-10-26
US20210295590A1 (en) 2021-09-23
GB2537972A (en) 2016-11-02
DE102016103891A1 (de) 2016-09-08
GB2537729B (en) 2017-07-19
US10535183B2 (en) 2020-01-14
GB201603714D0 (en) 2016-04-20
US20200111249A1 (en) 2020-04-09
GB201603715D0 (en) 2016-04-20
US20180315235A1 (en) 2018-11-01
GB201603712D0 (en) 2016-04-20
US20180315234A1 (en) 2018-11-01
GB2537972B (en) 2017-07-19
US20200118326A1 (en) 2020-04-16
US10049489B2 (en) 2018-08-14

Similar Documents

Publication Publication Date Title
DE102016103874A1 (de) Systeme und Verfahren zur weichen Schattierung in 3D-Rendering
DE102019103059B4 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE102019101873A1 (de) Abfragespezifische Verhaltensmodifizierung von Baumtraversierung
DE102019103058A1 (de) Verfahren für fortgesetzte begrenzungsvolumenhierarchietraversierung auf schnittpunkte ohne shader-intervention
DE102016103854A1 (de) Graphikverarbeitung mit direktionalen Darstellungen der Beleuchtung an Sondenpositionen innerhalb einer Szene
DE102019103178A1 (de) Verfahren für vorankommen und programmierbare timeouts von baumtraversierungsmechanismen in hardware
DE102019103326A1 (de) Robuste, effiziente multiprozessor-koprozessor-schnittstelle
DE60033250T2 (de) System und Verfahren zur Darstellung mit Strahlverfolgung
DE102021205824A1 (de) Techniken zur traversierung von bei raytracing verwendeten daten
DE102019118838A1 (de) Virtuelle photogrammetrie
DE102019103336A1 (de) Verfahren zum effizienten gruppieren von cache-anforderungen für datenpfad-scheduling
DE102021205765A1 (de) Hardwarebasierte techniken der strahlverfolgung zur effizienten darstellung und verarbeitung eines beliebigen hüllkörpers
DE102018114286A1 (de) Durchführen einer Traversierungs-Stack-Komprimierung
DE102013114090A1 (de) Konservative Rasterung von Primitiven unter Benutzung eines Fehler-Terms
DE102015107869A1 (de) Vergabe von Primitiven an Primitiv-Blöcke
DE102013114373A1 (de) Konsistente Vertex-Einrastung für Rendering mit variabler Auflösung
DE102021114847A1 (de) Verbesserte techniken zum traversieren von strahlverfolgungs-beschleunigungsstrukturen
DE102009042328A1 (de) Effiziente Bestimmung von Lichteffekten beim Volume Rendering
DE102021205758A1 (de) Hardware-beschleunigung für strahlverfolgung mit transformationen in alternativen weltraum
DE102013114176A1 (de) Tessellieren von Oberflächendatensegmenten beim kachelbasierten Rendern von Computergrafik
DE102021115407A1 (de) Hardwarebeschleunigung zur strahlverfolgung von primitiven, die vertices teilen
DE102011011641A1 (de) System, Verfahren und Computerprogrammprodukt zum Wiedergeben von Pixeln mit zumindest einer halbtransparenten Oberfläche
DE102009042327A1 (de) Effiziente Visualisierung von Objekteigenschaften mittels Volume Rendering
DE102021206234A1 (de) Frühzeitige freigabe von ressourcen in strahlverfolgungs-hardware
DE102017109472A1 (de) Stereo-mehrfach-projektion implementiert unter verwendung einer graphikverarbeitungs-pipeline

Legal Events

Date Code Title Description
R082 Change of representative

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

Representative=s name: OLSWANG GERMANY LLP, DE

R082 Change of representative

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

R012 Request for examination validly filed