DE102016103891A1 - 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
DE102016103891A1
DE102016103891A1 DE102016103891.1A DE102016103891A DE102016103891A1 DE 102016103891 A1 DE102016103891 A1 DE 102016103891A1 DE 102016103891 A DE102016103891 A DE 102016103891A DE 102016103891 A1 DE102016103891 A1 DE 102016103891A1
Authority
DE
Germany
Prior art keywords
light
pixel
pixels
distance
occlusion
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
DE102016103891.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 DE102016103891A1 publication Critical patent/DE102016103891A1/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

Abstract

Graphikverarbeitungssysteme und Graphikverarbeitungsverfahren werden beschrieben, die 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 Bildrahmen 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 Bildrahmenrate. 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.
  • Kurzfassung
  • Diese Kurzfassung wird bereitgestellt, um eine Auswahl von Konzepten in einer vereinfachten Form vorzustellen, die nachstehend in der detaillierten Beschreibung weiter beschrieben werden. Diese Kurzfassung 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 Bildrahmens 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ächenidentifiziererinformation. 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 Bildrahmens) 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 ein 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 Bildrahmen 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 Bildrahmen sein kann, so dass es scheint, dass er lediglich einige Pixel abdeckt. Umgekehrt kann ein kleiner Welt-Raum-Bereich, wenn er nahe an dem Bildrahmen 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 dieses benachbarte Pixel vom Mischen ausgeschlossen werden. Hier bezieht sich die Tiefe auf ein Konzept, wie weit jedes der Pixel von dem Bildrahmen 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 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 versucht 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 gegeben, dass die Transformation/Projektion für den Bildrahmen 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 zum Rendering eines Bildrahmens bereitgestellt, der eine Szene darstellt, welche von einem oder mehreren Lichtern beleuchtet wird, umfassend:
    Identifizieren sichtbarer Oberflächen der Szene für Pixel des Bildrahmens;
    Bestimmen einer Position auf einer identifizierten sichtbaren Oberfläche innerhalb der Szene für jedes der Pixel;
    für jede der bestimmten Positionen für die Pixel, Bestimmen von Komponenten einer direktionalisierten Abstandsfunktion, welche einen Richtungsabhängigen Abstand zu einer oder mehreren Verdeckungen von Licht in der Szene für die Position angibt; und
    Verwenden der bestimmten Komponenten der direktionalisierten Abstandsfunktion und Information bezogen auf das eine oder mehrere Lichter, um Schatteninformation für Pixel in dem Bildrahmen zu bestimmen.
  • Das eine oder mehrere Lichter können eine Mehrzahl von Lichtern umfassen.
  • Die Komponenten der direktionalisierten Abstandsfunktion können sphärische harmonische Komponenten sein.
  • Die Komponenten der direktionalisierten Abstandsfunktion können mit Bezug auf ein dreidimensionales kartesisches Koordinatensystem definiert sein.
  • Wenn es eine Mehrzahl von Lichtern gibt, kann das Bestimmen von Komponenten der direktionalisierten Abstandsfunktion für eine bestimmte Position für ein Pixel umfassen:
    für jedes der Lichter:
    Werfen eines Strahls von der identifizierten sichtbaren Oberfläche in eine Richtung zu dem Licht;
    Bestimmen, ob jeder der Strahlen vom Erreichen des Lichts verdeckt ist; und
    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; und
    Kombinieren aufgezeichneter Abstände zu Verdeckungen für die Lichter, um dadurch die Komponenten der direktionalisierten Abstandsfunktion für die bestimmte Position zu bestimmen.
  • Das Bestimmen von Komponenten der direktionalisierten Abstandsfunktion kann ferner umfassen:
    für jedes der Lichter:
    für jeden der Strahlen, die bestimmt werden, nicht von dem Licht verdeckt zu sein, Suchen nach einem Pixel, für das ein Strahl bestimmt wird, von dem Licht verdeckt zu sein, und wenn ein Pixel in der Suche gefunden wird, Aufzeichnen des Abstands, der für den Strahl des gefundenen Pixels aufgezeichnet wurde.
  • Das Suchen nach einem Pixel kann ein Suchen, innerhalb einer Suchregion für die Pixel, nach einem am nächsten kommenden Pixel in dem Bildrahmen von Pixeln umfassen, für das ein Strahl bestimmt wird, von dem Licht verdeckt zu sein.
  • Das Bestimmen von Komponenten der direktionalisierten Abstandsfunktion für eine bestimmte Position für ein Pixel kann umfassen:
    für jede einer Mehrzahl von Abtastrichtungen:
    Werfen eines Strahl von der identifizierten sichtbaren Oberfläche in die Abtastrichtung;
    Bestimmen, 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, Aufzeichnen eines Abstands entlang des Strahls von der Oberfläche zu seiner jeweiligen Verdeckung; und
    Kombinieren aufgezeichneter Abstände zu Verdeckungen für die Abtastrichtungen, um dadurch die Komponenten der direktionalisierten Abstandsfunktion für die bestimmte Position zu bestimmen.
  • Die Abtastrichtungen können stochastisch oder gemäß einem vorbestimmten Muster ausgewählt werden.
  • Das Bestimmen von Schatteninformation für Pixel in dem Bildrahmen kann umfassen:
    für jedes der Lichter:
    Verwenden der bestimmten Komponenten der direktionalisierten Abstandsfunktion, um einen Abstand zu einer Verdeckung, wenn vorhanden, in der Richtung des Lichts für jedes der Pixel zu schätzen;
    für Pixel, für welche ein Abstand zu einer Verdeckung geschätzt wird:
    Bestimmen einer Mischregion für ein Mischfilter basierend auf dem geschätzten Abstand für das Pixel;
    Transformieren dieser Mischregion in den Bildrahmen von Pixeln; und
    Mischen von Schatteninformation für Pixel in den Bildrahmen von Pixeln, die innerhalb der transformierten Mischregion sind; und
    für jedes einer Mehrzahl von Pixeln in dem Bildrahmen, Kombinieren der gemischten Schatteninformation für das für die Lichter bestimmten Pixels, um dadurch eine Schattierung für das Pixel zu bestimmen.
  • Die Schatteninformation für ein Pixel für ein Licht kann darauf basieren, ob ein Strahl, der von der bestimmten Position für das Pixel geworfen wird, vom Erreichen des Lichts verdeckt ist.
  • Die Schatteninformation für ein Pixel, für das ein Strahl von dem Licht verdeckt ist, kann ferner auf einem Dämpfungswert für seine jeweilige Verdeckung basiert sein.
  • Das Verfahren kann ferner das Bestimmen eines Dämpfungswerts für eine Verdeckung durch Verarbeiten einer Textur für die Verdeckung umfassen, um ein Niveau zu bestimmen, auf das die Verdeckung Licht dämpft.
  • Das Bestimmen eines Dämpfungswerts für eine Verdeckung kann ferner das Werfen eines sekundären Strahls von der Verdeckung in Richtung des Lichts umfassen, um ein Ausmaß zu bestimmen, zu dem die Verdeckung selbst von dem Licht verdeckt ist.
  • Das Verfahren kann ferner umfassen: Bestimmen gerenderter Pixelwerte der Bildrahmen gemäß der bestimmten Schattierung für die Pixel.
  • Es wird eine Graphikverarbeitungseinheit bereitgestellt, die ausgelegt ist, um einen Bildrahmen zu rendern, der eine Szene darstellt, die einem oder mehreren Lichtern beleuchtet wird, 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:
    sichtbare Oberflächen der Szene für Pixel des Bildrahmens zu identifizieren;
    eine Position auf einer identifizierten sichtbaren Oberfläche innerhalb der Szene für jedes der Pixel zu bestimmen;
    für jede der bestimmten Positionen für die Pixel, Komponenten einer direktionalisierten Abstandsfunktion zu bestimmen, welche einen Richtungs-abhängigen Abstand zu einer oder mehreren Verdeckungen von Licht in der Szene für die Position angibt; und
    Verwenden der bestimmten Komponenten der direktionalisierten Abstandsfunktion und Information bezogen auf das eine oder mehrere Lichter, um Schatteninformation für Pixel in dem Bildrahmen zu bestimmen.
  • Die Graphikverarbeitungseinheit kann ferner einen Puffer umfassen, der ausgelegt ist, um die Schatteninformation und die Komponenten der direktionalisierten Abstandsfunktion für die Pixel zu speichern.
  • Die Oberflächen-Identifikationslogik kann Rasterisierungsoberflächen-Identifikationslogik und Strahlenverfolgungsoberflächen-Identifikationslogik umfassen, und wobei die Graphikverarbeitungseinheit ferner einen Normierer umfassen kann, der mit der Rasterisierungsoberflächen-Identifikationslogik und der Strahlenverfolgungsoberflächen-Identifikationslogik gekoppelt ist, wobei der Normierer ausgelegt wird, um: einen normierten Satz von Schattierereingaben zu bilden, welche der Verarbeitungslogik ungeachtet dessen bereitzustellen sind, ob Oberflächen von der Rasterisierungsoberflächen-Identifikationslogik oder der Strahlenverfolgungsoberflächen-Identifikationslogik identifiziert sind.
  • Die Graphikverarbeitungseinheit kann ferner einen Puffer umfassen, der ausgelegt ist, um die Schatteninformation und die aufgezeichneten Abstände für die Pixel zu speichern.
  • Die Oberflächen-Identifikationslogik kann Rasterisierungsoberflächen-Identifikationslogik und Strahlenverfolgungsoberflächen-Identifikationslogik umfassen, wobei die Graphikverarbeitungseinheit ferner einen Normierer umfassen kann, der mit der Rasterisierungsoberflächen-Identifikationslogik und der Strahlenverfolgungsoberflächen-Identifikationslogik gekoppelt ist, wobei der Normierer ausgelegt ist, um einen normierten Satz von Schattierereingaben zu bilden, die der Verarbeitungslogik ungeachtet dessen bereitgestellt werden, ob Oberflächen von der Rasterisierungsoberflächen-Identifikationslogik oder der Strahlenverfolgungsoberflächen-Identifikationslogik identifiziert sind.
  • In einer anderen Vorgehensweise kann eine Schätzung dessen, wie nahe ein nächster Verdecker zu dem Strahl ist, bestimmt werden. Von dieser Schätzung kann ein Kegelschnitt identifiziert werden, und darauf abgebildet werden, wie viel von dem Licht außerhalb dieses Kegelschnitts fallen würde. Mit anderen Worten ist der Kegelschnitt begrenzt, wie weit der Kegelwinkel sein kann, bevor der Kegel beginnt, durch den Verdecker verdeckt zu werden. Dann kann die Fläche dieses Kegels als unverdeckt angesehen werden und eine Lichtintensität kann demgemäß verdeckt werden.
  • 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 auslegt, um eine Graphikverarbeitungseinheit herzustellen, wie hier beschrieben. Es kann ein nicht vorübergehendes 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 vorübergehendes 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, um 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, um 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 vorübergehendes computerlesbares Speichermedium bereitgestellt werden, das darauf gespeichert computerlesbare Anweisungen aufweist, die, wenn an einem Computersystem ausgeführt, das Computersystem veranlassen, irgendeines 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 Bildrahmen 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. Regionen der Oberfläche 104, welche im Blick des gesamten Flächenlichts 102 sind, werden vollständig beleuchtet, und Regionen 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). Die Region, wo ein Schatten zwischen vollständig beleuchtet und vollständig im Schatten übergeht, wird der “Halbschatten (Penumbra)” genannt. Regionen der Oberfläche 104, die im Halbschatten ist, verdeckt sind, 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 Bildrahmens. Mit anderen Worten ist ein Bildrahmen zu rendern, um eine Ansicht der Szene von einem bestimmten Blickpunkt darzustellen, und der Bildrahmen umfasst eine Anordnung von Pixelpositionen. Für jede Pixelposition des Bildrahmens 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 aus 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, von dem die Szene betrachtet wird, wird bei 408 gezeigt, und die Betrachtungsebene des zu rendernden Bildrahmens 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 Bildrahmens 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 bemerkt, 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 Bildrahmens 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 Bildrahmens aufzeichnen. Es sei bemerkt, 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 selektiv 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 punchthrough 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 ein 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 Bildrahmen von Pixeln suchen, für das ein Strahl bestimmt wird, von dem Licht verdeckt zu sein. Die Suchregion kann in dem Raum der Bildrahmenpixel definiert sein, in dem Pixel gerendert werden, wobei sie beispielsweise ein 5 × 5 Block von Pixeln des Bildrahmens 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 Bildrahmen von Pixel transformiert. 6 zeigt ein Beispiel eines Bildrahmens von Pixeln 602. Jedes Pixel in dem Bildrahmen 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 Bildrahmen 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 Bildrahmen dar. Diese Transformation zurück in den Bildschirm-Raum ist einer der Parameter für einen Filterkernel. Der Mischkernel 504 1 für die Position 412 1 wird in den Bildrahmen transformiert, wie als 604 1 gezeigt; der Mischkernel 504 2 für die Position 412 2 wird in den Bildrahmen transformiert, wie als 604 2 gezeigt; und der Mischkernel 504 3 für die Position 412 3 wird in den Bildrahmen 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 Bildrahmen 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 welches 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 welches 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 Bildschirm-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 unterschiedliches 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 Bildrahmens 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 Bildrahmen transformiert. Beispielsweise werden die Mischkernel 504 1 und 504 2 transformiert, um die Mischkernel 604 1 und 604 2 in dem Bildrahmen 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 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 Bildrahmens. 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 Tiefezuerst-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, irgendein anderes Geometrieelement in der Szene zu treffen.
  • Ähnlich den oben beschriebenen Verfahren können sichtbare Oberflächen der Szene für Pixel eines Bildrahmens 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 bemerkt, 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 Bildrahmen 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 Bildrahmens (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 Bildrahmens 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 richtungsabhä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 Bildrahmen 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 Bildrahmen 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 Bildrahmen von Pixeln transformiert werden kann und Schatteninformation für Pixel in dem Bildrahmen von Pixeln, die innerhalb der transformierten Basisfläche sind, gemischt werden kann. Dann kann für jedes einer Mehrzahl von Pixeln in dem Bildrahmen 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 Bildrahmens 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 ein 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 Bildrahmen 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 bemerkt, dass die obigen Beispiele mit Bezug auf das Anwenden von Schattierungseffekte auf einen gerenderten Bildrahmen 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 Bildschirm-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 eines 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 eine 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 eine Art von Vorrichtung, Maschine oder dedizierte Schaltung, oder Sammlung oder Teil davon mit Verarbeitungsfähigkeit sein, so dass er/sie Anweisungen ausführen kann. Ein Prozessor kann eine Art von Allzweck- oder dedizierter 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 Array (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 einem 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 einem 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 photolithographischen 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 konfigurieren, 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 konfigurieren, 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 [0135]

Claims (20)

  1. Maschinenimplementiertes Verfahren zur Graphikverarbeitung zum Rendering eines Bildrahmens, der eine Szene darstellt, welche von einem oder mehreren Lichtern beleuchtet wird, umfassend: Identifizieren sichtbarer Oberflächen der Szene für Pixel des Bildrahmens; Bestimmen einer Position auf einer identifizierten sichtbaren Oberfläche innerhalb der Szene für jedes der Pixel; für jede der bestimmten Positionen für die Pixel, Bestimmen von Komponenten einer direktionalisierten Abstandsfunktion, welche einen richtungsabhängigen Abstand zu einer oder mehreren Verdeckungen von Licht in der Szene für die Position angibt; und Verwenden der bestimmten Komponenten der direktionalisierten Abstandsfunktion und Information bezogen auf das eine oder mehrere Lichter, um Schatteninformation für Pixel im Bildrahmen zu bestimmen.
  2. Maschinenimplementiertes Verfahren gemäß Anspruch 1, wobei das eine oder mehrere Lichter eine Mehrzahl von Lichtern umfasst.
  3. Maschinenimplementiertes Verfahren gemäß Anspruch 1 oder 2, wobei die Komponenten der direktionalisierten Abstandsfunktion sphärische harmonische Komponenten sind.
  4. Maschinenimplementiertes Verfahren gemäß Anspruch 1 oder 2, wobei die Komponenten der direktionalisierten Abstandsfunktion mit Bezug auf ein dreidimensionales kartesisches Koordinatensystem definiert sind.
  5. Maschinenimplementiertes Verfahren gemäß Anspruch 2, wobei das Bestimmen von Komponenten der direktionalisierten Abstandsfunktion für eine bestimmte Position für ein Pixel umfasst: für jedes der Lichter: Werfen eines Strahls von der identifizierten sichtbaren Oberfläche für das Pixel in eine Richtung zu dem Licht; Bestimmen, ob jeder der Strahlen vom Erreichen des Lichts verdeckt ist; und 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; und Kombinieren aufgezeichneter Abstände zu Verdeckungen für die Lichter, um dadurch die Komponenten der direktionalisierten Abstandsfunktion für die bestimmte Position zu bestimmen.
  6. Maschinenimplementiertes Verfahren gemäß Anspruch 5, wobei das Bestimmen von Komponenten der direktionalisierten Abstandsfunktion ferner umfasst: für jedes der Lichter: für jeden der Strahlen, die bestimmt werden, nicht von dem Licht verdeckt zu sein, Suchen nach einem Pixel, für das ein Strahl bestimmt wird, von dem Licht verdeckt zu sein, und wenn ein Pixel in der Suche gefunden wird, Aufzeichnen des Abstands, der für den Strahl des gefundenen Pixels aufgezeichnet wurde.
  7. Maschinenimplementiertes Verfahren gemäß Anspruch 6, wobei das Suchen nach einem Pixel ein Suchen, innerhalb einer Suchregion für das Pixel, nach einem am nächsten kommenden Pixel in dem Bildrahmen von Pixel umfasst, für welches ein Strahl bestimmt wird, von dem Licht verdeckt zu sein.
  8. Maschinenimplementiertes Verfahren gemäß einem der Ansprüche 1 bis 4, wobei das Bestimmen von Komponenten der direktionalisierten Abstandsfunktion für eine bestimmte Position für ein Pixel umfasst: für jede einer Mehrzahl von Abtastrichtungen: Werfen eines Strahls von der identifizierten sichtbaren Oberfläche in die Abtastrichtung; Bestimmen, ob jeder der Strahlen vom Erreichen eines Licht in der Abtastrichtung verdeckt ist; und für jeden der Strahlen, die bestimmt werden, von einem Licht in der Abtastrichtung verdeckt zu sein, Aufzeichnen eines Abstands entlang des Strahls von der Oberfläche zu seiner jeweiligen Verdeckung; und Kombinieren aufgezeichneter Abstände zu Verdeckungen für die Abtastrichtungen, um dadurch die Komponenten der direktionalisierten Abstandsfunktion für die bestimmte Position zu bestimmen.
  9. Maschinenimplementiertes Verfahren gemäß Anspruch 8, wobei die Abtastrichtungen stochastisch oder gemäß einem vorbestimmten Muster ausgewählt werden.
  10. Maschinenimplementiertes Verfahren gemäß Anspruch 1, wobei das Bestimmen von Schatteninformation für Pixel in dem Bildrahmen umfasst: für jedes der Lichter: Verwenden der bestimmten Komponenten der direktionalisierten Abstandsfunktion, um einen Abstand zu einer Verdeckung, wenn vorhanden, in der Richtung des Lichts für jedes der Pixel zu schätzen; für Pixel, für welche ein Abstand zu einer Verdeckung geschätzt wird: Bestimmen einer Mischregion für ein Mischfilter basierend auf dem geschätzten Abstand für das Pixel; Transformieren dieser Mischregion in den Bildrahmen von Pixeln; und Mischen der Schatteninformation für Pixel in den Bildrahmen von Pixeln, die innerhalb der transformierten Mischregion sind; und für jedes einer Mehrzahl von Pixeln im Bildrahmen, Kombinieren der gemischten Schatteninformation für das für die Lichter bestimmten Pixel, um dadurch Schattierung für das Pixel zu bestimmen.
  11. Maschinenimplementiertes Verfahren gemäß Anspruch 10, wobei die Schatteninformation für ein Pixel für ein Licht darauf basiert, ob ein Strahl, der von der bestimmten Position für das Pixel geworfen wird, vom Erreichen des Lichts verdeckt ist.
  12. Maschinenimplementiertes Verfahren gemäß Anspruch 11, wobei die Schatteninformation für ein Pixel, für welches ein Strahl von dem Licht verdeckt ist, ferner auf einem Dämpfungswert für seine jeweilige Verdeckung basiert.
  13. Maschinenimplementiertes Verfahren gemäß Anspruch 12, ferner umfassend: Bestimmen eines Dämpfungswerts für eine Verdeckung durch Verarbeiten einer Textur für die Verdeckung, um ein Niveau zu bestimmen, auf das die Verdeckung Licht dämpft.
  14. Maschinenimplementiertes Verfahren gemäß Anspruch 13, wobei das Bestimmen eines Dämpfungswerts für eine Verdeckung ferner das Werfen eines sekundären Strahls von der Verdeckung in Richtung des Lichts umfasst, um ein Ausmaß zu bestimmen, in dem die Verdeckung selbst von dem Licht verdeckt ist.
  15. Maschinenimplementiertes Verfahren gemäß einem vorhergehenden Anspruch, ferner umfassend: Bestimmen gerenderter Pixelwerte des Bildrahmens gemäß der bestimmten Schattierung für die Pixel.
  16. Graphikverarbeitungseinheit, die ausgelegt ist, um einen Bildrahmen zu rendern, der eine Szene darstellt, die von einem oder mehreren Lichtern beleuchtet wird, 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: sichtbare Oberflächen der Szene für Pixel des Bildrahmens zu identifizieren; eine Position auf einer identifizierten sichtbaren Oberfläche innerhalb der Szene für jedes der Pixel zu bestimmen; für jede der bestimmten Positionen für die Pixel, Komponenten einer direktionalisierten Abstandsfunktion zu bestimmen, welche einen richtungsabhängigen Abstand zu einer oder mehreren Verdeckungen von Licht in der Szene für die Position angibt; und Verwenden der bestimmten Komponenten der direktionalisierten Abstandsfunktion und Information bezogen auf das eine oder mehrere Lichter, um Schatteninformation für Pixel im Bildrahmen zu bestimmen.
  17. Graphikverarbeitungseinheit gemäß Anspruch 16, ferner umfassend einen Puffer, der ausgelegt ist, um die Schatteninformation und die Komponenten der direktionalisierten Abstandsfunktion für die Pixel zu speichern.
  18. Graphikverarbeitungseinheit gemäß Anspruch 16 oder 17, wobei die Oberflächen-Identifikationslogik Rasterisierungsoberflächen-Identifikationslogik und Strahlenverfolgungsoberflächen-Identifikationslogik umfasst, und wobei die Graphikverarbeitungseinheit ferner einen Normierer umfasst, der mit der Rasterisierungsoberflächen-Identifikationslogik und der Strahlenverfolgungsoberflächen-Identifikationslogik gekoppelt ist, wobei der Normierer ausgelegt ist, um: einen normierten Satz von Schattierereingaben zu bilden, die der Verarbeitungslogik ungeachtet dessen bereitzustellen sind, ob Oberflächen durch die Rasterisierungsoberflächen-Identifikationslogik oder die Strahlenverfolgungsoberflächen-Identifikationslogik identifiziert sind.
  19. Nicht-transitorisches computerlesbares Speichermedium, das darauf gespeichert eine computerlesbare Beschreibung einer integrierten Schaltung aufweist, die, wenn in einem Herstellungssystem für eine integrierte Schaltung verarbeitet, das Herstellungssystem für eine integrierte Schaltung veranlasst, eine Graphikverarbeitungseinheit gemäß einem der Ansprüche 16 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 15 durchzuführen.
DE102016103891.1A 2015-03-03 2016-03-03 Systeme und Verfahren zur weichen Schattierung in 3D-Rendering Pending DE102016103891A1 (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
DE102016103891A1 true DE102016103891A1 (de) 2016-09-08

Family

ID=55858967

Family Applications (3)

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

Family Applications Before (2)

Application Number Title Priority Date Filing Date
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

Country Status (3)

Country Link
US (7) US10049489B2 (de)
DE (3) DE102016103874A1 (de)
GB (3) GB2537729B (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112734900A (zh) * 2021-01-26 2021-04-30 腾讯科技(深圳)有限公司 阴影贴图的烘焙方法、装置、设备及计算机可读存储介质

Families Citing this family (25)

* 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
DE102016103874A1 (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
US10740954B2 (en) 2018-03-17 2020-08-11 Nvidia Corporation Shadow denoising in ray-tracing applications
US20190318455A1 (en) * 2018-04-12 2019-10-17 Nvidia Corporation Adding greater realism to a computer-generated image by smoothing jagged edges within the image in an efficient manner
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 珠海金山数字网络科技有限公司 图像遮挡计算方法、装置、计算设备及存储介质
US11195319B1 (en) * 2018-10-31 2021-12-07 Facebook Technologies, Llc. Computing ray trajectories for pixels and color sampling using interpolation
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
US11145110B2 (en) * 2019-03-18 2021-10-12 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 华能新能源股份有限公司 一种实时渲染中软阴影的制作方法
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
AU2003247441A1 (en) * 2003-05-30 2005-01-04 Dreamworks Rendering of soft shadows using depth maps
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
FR2966623A1 (fr) 2010-10-21 2012-04-27 Thomson Licensing Procede d’estimation de l’occultation dans un environnement virtuel
US9639975B1 (en) * 2010-10-21 2017-05-02 Pixar System and method for generating shadows
CN105957134B (zh) * 2011-08-05 2019-11-08 想象技术有限公司 用于3-d场景加速结构创建和更新的方法和装置
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
DE102016103874A1 (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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112734900A (zh) * 2021-01-26 2021-04-30 腾讯科技(深圳)有限公司 阴影贴图的烘焙方法、装置、设备及计算机可读存储介质

Also Published As

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

Similar Documents

Publication Publication Date Title
DE102016103891A1 (de) Systeme und Verfahren zur weichen Schattierung in 3D-Rendering
DE102019103059B4 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE102016103854A1 (de) Graphikverarbeitung mit direktionalen Darstellungen der Beleuchtung an Sondenpositionen innerhalb einer Szene
DE102019103058A1 (de) Verfahren für fortgesetzte begrenzungsvolumenhierarchietraversierung auf schnittpunkte ohne shader-intervention
DE102019101873A1 (de) Abfragespezifische Verhaltensmodifizierung von Baumtraversierung
DE102019103178A1 (de) Verfahren für vorankommen und programmierbare timeouts von baumtraversierungsmechanismen in hardware
DE60033250T2 (de) System und Verfahren zur Darstellung mit Strahlverfolgung
DE102019103326A1 (de) Robuste, effiziente multiprozessor-koprozessor-schnittstelle
US10249026B2 (en) Denoising filter
DE60107130T2 (de) Sichtbarkeitsprojektion und Bildrekonstruktion für Oberflächenelemente
US7737974B2 (en) Reallocation of spatial index traversal between processing elements in response to changes in ray tracing graphics workload
DE102019103336A1 (de) Verfahren zum effizienten gruppieren von cache-anforderungen für datenpfad-scheduling
DE102021205824A1 (de) Techniken zur traversierung von bei raytracing verwendeten daten
DE102019118838A1 (de) Virtuelle photogrammetrie
DE102013114090A1 (de) Konservative Rasterung von Primitiven unter Benutzung eines Fehler-Terms
DE102015113240A1 (de) System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters
DE102009042328A1 (de) Effiziente Bestimmung von Lichteffekten beim Volume Rendering
DE102013114176A1 (de) Tessellieren von Oberflächendatensegmenten beim kachelbasierten Rendern von Computergrafik
DE102021114847A1 (de) Verbesserte techniken zum traversieren von strahlverfolgungs-beschleunigungsstrukturen
DE102008050449A1 (de) Clipping Geometrien beim Raycasting
DE102011011641A1 (de) System, Verfahren und Computerprogrammprodukt zum Wiedergeben von Pixeln mit zumindest einer halbtransparenten Oberfläche
DE102021115407A1 (de) Hardwarebeschleunigung zur strahlverfolgung von primitiven, die vertices teilen
DE102021115353A1 (de) Strahlverfolgung-hardwarebeschleunigung zur unterstützung von bewegungsunschärfe und sich bewegender/verformender geometrie
DE102021206234A1 (de) Frühzeitige freigabe von ressourcen in strahlverfolgungs-hardware
DE102018128699A1 (de) Einstellen einer Winkelabtastrate während eines Renderings unter Verwendung von Blickinformationen

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