DE102013113714A1 - Method for performing tiled shading of scene in association with graphics processing application, involves selecting subset of photons of determined screen space tiles belonging to scene - Google Patents

Method for performing tiled shading of scene in association with graphics processing application, involves selecting subset of photons of determined screen space tiles belonging to scene Download PDF

Info

Publication number
DE102013113714A1
DE102013113714A1 DE201310113714 DE102013113714A DE102013113714A1 DE 102013113714 A1 DE102013113714 A1 DE 102013113714A1 DE 201310113714 DE201310113714 DE 201310113714 DE 102013113714 A DE102013113714 A DE 102013113714A DE 102013113714 A1 DE102013113714 A1 DE 102013113714A1
Authority
DE
Germany
Prior art keywords
photons
screen space
scene
shading
subset
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
DE201310113714
Other languages
German (de)
Inventor
Morgan McGuire
Michael Thomas Mara
David Patrick Luebke
Jacopo Pantaleoni
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US14/015,955 external-priority patent/US9305324B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102013113714A1 publication Critical patent/DE102013113714A1/en
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/506Illumination models

Abstract

The method (100) involves determining (110) the number of photons belonging to a scene. The screen space tiles belonging to the scene, are determined (120). The screen space tiles which are influenced by projection of an effective ball for each of photons are determined (130). A subset of photons of each one of the screen space tiles is selected (140). A shading parameter for shading the scene is computed (150) using the selected subset of photons. Independent claims are included for the following: (1) non-volatile machine readable memory medium storing program for performing tiled shading of scene in association with graphics processing application; and (2) system for performing tiled shading of scene in association with graphics processing application.

Description

BEANSPRUCHUNG DER PRIORITÄTCLAIM OF PRIORITY

Diese Anmeldung beansprucht die Priorität der vorläufigen US-Anmeldung mit der Nummer 61/745264, die am 21. Dezember 2012 eingereicht wurde und deren vollständiger Inhalt hiermit durch Bezugnahme mit eingeschlossen ist.This application claims the benefit of US Provisional Application No. 61 / 745,264, filed on Dec. 21, 2012, the entire contents of which are hereby incorporated by reference.

GEBIET DER ERFINDUNGFIELD OF THE INVENTION

Die vorliegende Erfindung betrifft die grafische Verarbeitung und insbesondere die Schattierung im Zusammenhang mit der grafischen Verarbeitung.The present invention relates to graphic processing, and more particularly to shading associated with graphical processing.

HINTERGRUNDBACKGROUND

In der Grafikverarbeitung ist die effiziente Bilderzeugung von Licht, das von mehreren Oberflächen gestreut ist, im Zusammenhang einer Echtzeit-Anwendung, etwa in einem Videospiel, äußerst wünschenswert. Die Photonenabbildung bzw. Photonenzuordnung ist als ein konsistenter Abschätzungsmechanismus für indirekte Beleuchtung bei der Bilderzeugung in Nicht-Echtzeit bekannt. Die Photonenabbildung zeichnet sich nicht nur durch die Abtastung scharfer Pfade aus, die in vielen anderen Bilderzeugungsverfahren langsam konvergieren, sondern schätzt auch Zwischenreflexionen mit niederfrequenten Glanzeffekten und diffusen Anteilen gut ab, und ist überraschend einfach zu realisieren.In graphics processing, the efficient imaging of light scattered from multiple surfaces is highly desirable in the context of a real-time application, such as in a video game. Photon mapping is known as a consistent indirect illumination estimation mechanism in non-real-time imaging. Photon imaging not only excels in scanning sharp paths that slowly converge in many other imaging processes, but also estimates intermediate reflections with low-frequency gloss effects and diffuse proportions well, and is surprisingly easy to realize.

Es wurden viele Variationen im Hinblick auf die Photonenabbildung vorgeschlagen, die letztlich für eine Echtzeit-Bilderzeugung komplexer Szenen gedacht sind, und die auch an begrenzten Szenen bei interaktiven Geschwindigkeiten demonstriert worden sind. In Verbindung mit diesem Fortschritt der Algorithmen sind nunmehr GPUs leistungsfähig genug, so dass die Photonenabbildung in Echtzeit-Bilderzeugungssystemen realisiert werden kann. Eine aktuelle Herausforderung besteht jedoch darin, dass die Qualität beibehalten wird, während in effizienter Weise in einer modernen GPU skaliert wird.Many variations have been proposed with respect to photon mapping, which are ultimately intended for real-time imaging of complex scenes, and have also been demonstrated on limited scenes at interactive speeds. In conjunction with this advancement of algorithms, GPUs are now powerful enough that photon mapping can be realized in real-time imaging systems. However, a current challenge is maintaining quality while efficiently scaling in a modern GPU.

Die Photonenabbildung umfasst zwei Schritte: Verfolgen bzw. Zeichnen von Photonen entlang von Strahlen aus Lichtquellen und Abschätzung des Glanzes bzw. der Helligkeit aufgrund dessen, dass diese Photonen von sichtbaren Oberflächen gestreut werden (das heißt „Schattierung”). Effiziente Hardware- und Softwaresysteme für parallele Strahlenverfolgung sind in der Lage, Hunderte von Millionen von Strahlen pro Sekunde zu verfolgen bzw. zu zeichnen, und der Vorgang kann sich über viele Bildblöcke hinweg amortisieren. Daher haben bestehende Systeme die Leistungsfähigkeit, die für eine Photonenverfolgung erforderlich ist. Die Nettoleistung dieser Systeme hängt typischerweise von einer effizienten Photonenschattierung ab.Photon imaging involves two steps: tracking photons along rays of light sources and estimating the brightness due to these photons being scattered from visible surfaces (ie, "shading"). Efficient hardware and software systems for parallel ray tracing are capable of tracking hundreds of millions of rays per second, and the process can pay for itself over many blocks of images. Therefore, existing systems have the performance required for photon tracking. The net power of these systems typically depends on efficient photon shading.

Es gibt daher einen Bedarf, diese Problematik und/oder andere Probleme, die mit dem Stand der Technik einhergehen, zu lösen.There is therefore a need to solve this problem and / or other problems associated with the prior art.

ÜBERBLICKOVERVIEW

Es werden ein System, ein Verfahren und ein Computerprogrammprodukt für eine gekachelte verzögerte Schattierung („shading”) bereitgestellt. Während des Betriebs werden mehrere Photonen, die zu mindestens einer Szene gehören, ermittelt. Ferner werden mehrere Bildschirm-Raum-Kacheln („screen-space tiles”), die zu der mindestens einen Szene gehören, ermittelt. Ferner wird jede der mehreren Bildschirm-Raum-Kacheln, die von einer Projektion einer wirksamen Kugel („effect sphere”) für jedes der mehreren Photonen beeinflusst werden kann, ermittelt. Des Weiteren wird zumindest eine Teilgruppe der Photonen, die zugehörig ist zu jeder der Bildschirm-Raum-Kacheln, aus der eine Schattierung zu berechnen ist, ausgewählt. Ferner wird eine Schattierung für die mindestens eine Szene berechnet unter Verwendung der ausgewählten mindestens einen Teilgruppe aus Photonen.There is provided a system, method and computer program product for tiled delayed shading. During operation, several photons belonging to at least one scene are detected. Further, a plurality of screen-space tiles belonging to the at least one scene are detected. Further, each of the plurality of screen space tiles that can be influenced by an effective sphere projection for each of the plurality of photons is determined. Furthermore, at least a subset of the photons associated with each of the screen space tiles from which shading is to be calculated are selected. Furthermore, shading is calculated for the at least one scene using the selected at least one subset of photons.

KURZER BESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS

1 zeigt ein Flussdiagramm eines Verfahrens für eine gekachelte verzögerte Schattierung gemäß einer Ausführungsform. 1 FIG. 12 is a flowchart of a tiled delayed shading method according to one embodiment. FIG.

2 zeigt eine Parallelverarbeitungseinheit (PPU) gemäß einer Ausführungsform. 2 shows a parallel processing unit (PPU) according to an embodiment.

3 zeigt den Datenstrom-Multiprozessor aus 2 gemäß einer Ausführungsform. 3 shows the streaming multiprocessor 2 according to one embodiment.

4A zeigt ein Flussdiagramm eines Verfahrens für eine gekachelte verzögerte Schattierung gemäß einer weiteren Ausführungsform. 4A FIG. 12 is a flowchart of a tiled delayed shading method according to another embodiment. FIG.

4B zeigt ein Flussdiagramm eines Verfahrens für eine gekachelte verzögerte Schattierung gemäß einer weiteren Ausführungsform. 4B FIG. 12 is a flowchart of a tiled delayed shading method according to another embodiment. FIG.

5 zeigt ein Bild, das unter Anwendung einer Realisierung mit gekachelter verzögerter Schattierung erzeugt wurde, gemäß einer Ausführungsform. 5 FIG. 12 shows an image created using a tiled delayed shading implementation, according to one embodiment.

6 zeigt ein anschauliches System, in welchem die diversen Architekturen und/oder Funktionen der diversen vorhergehenden Ausführungsformen realisiert werden können. 6 FIG. 12 shows a vivid system in which the various architectures and / or functions of the various preceding embodiments can be realized.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

1 zeigt ein Flussdiagramm eines Verfahrens 100 für eine gekachelte verzögerte Schattierung gemäß einer Ausführungsform. Wie gezeigt, werden in der Operation 110 mehrere Photonen, die zu mindestens einer Szene gehören, ermittelt. In einer Ausführungsform sind die mehreren Photonen, die zu der mindestens einen Szene gehören, mit einem Photonenabbildungsprozess verknüpft. Beispielsweise können die Photonen ein Teil eines Prozesses sein, der die Zeichnung bzw. Verfolgung von Photonen entlang von Strahlen aus einer oder mehreren Lichtquellen und die Abschätzung des Glanzes aufgrund dessen, dass diese Photonen von sichtbaren Oberflächen gestreut werden, beinhaltet. 1 shows a flowchart of a method 100 for a tiled delayed shading according to one embodiment. As shown, in the operation 110 detects several photons belonging to at least one scene. In an embodiment, the plurality of photons associated with the at least one scene are associated with a photon mapping process. For example, the photons may be part of a process that involves the tracking of photons along rays from one or more light sources and the estimation of the luster due to scattering these photons from visible surfaces.

Ferner werden in der Operation 120 mehrere Bildschirm-Raum-Kacheln, die zu der mindestens einen Szene gehören, ermittelt. In einer Ausführungsform können die mehreren Bildschirm-Raum-Kacheln, die mit der mindestens einen Szene verknüpft sind, mehrere Pixel enthalten, die zu der Szene gehören. Beispielsweise kann die Bildschirm-Raum-Kachel ein n×n-Array aus Pixel enthalten, wobei n eine ganze Zahl größer als eins ist.Further, in the operation 120 determines several screen space tiles belonging to the at least one scene. In an embodiment, the plurality of screen space tiles associated with the at least one scene may include a plurality of pixels associated with the scene. For example, the screen space tile may include an n × n array of pixels, where n is an integer greater than one.

Wie gezeigt, wird in der Operation 130 jede der mehreren Bildschirm-Raum-Kacheln, die von einer Projektion einer wirksamen Kugel beeinflussbar ist, für jedes der mehreren Photonen ermittelt. Im Zusammenhang der vorliegenden Beschreibung bezeichnet eine effektive bzw. wirksame Kugel bzw. Wirkkugel eines Photons die Einflusskugel, die in der Lage ist, Pixel und/oder Kacheln, die dazu gehören, zu beeinflussen. In einer Ausführungsform kann eine Kopie jedes Photons in jede Bildschirm-Raum-Kachel eingefügt (oder damit verknüpft, usw.) werden, die eine Projektion einer wirksamen Kugel dieses Photons enthalten würde. In einer weiteren Ausführungsform kann eine Kopie jedes Photons in Eimern angeordnet werden, die den mehreren Bildschirm-Raum-Kacheln entsprechen, die das Photonen beeinflussen kann. In einer weiteren Ausführungsform kann ein Zeiger auf jedes Photonen in jede Bildschirm-Raum-Kachel eingefügt werden (oder mit dieser verknüpft werden, usw.), die in der Lage ist, eine Projektion einer wirksamen Kugel dieses Photons zu enthalten. In noch einer weiteren Ausführungsform kann entweder eine Kopie des Photons oder ein Zeiger auf das Photonen in jede Bildschirm-Raum-Kachel eingefügt werden, die in der Lage ist, eine Projektion einer wirksamen Kugel des Photons zu enthalten.As shown, in the operation 130 each of the plurality of screen-space tiles, which is influenced by a projection of an effective sphere, determined for each of the plurality of photons. In the context of the present description, an effective sphere of a photon refers to the sphere of influence which is capable of affecting pixels and / or tiles belonging thereto. In one embodiment, a copy of each photon may be inserted (or linked, etc.) into each screen space tile that would contain a projection of an effective sphere of that photon. In another embodiment, a copy of each photon may be placed in buckets that correspond to the plurality of screen space tiles that may affect the photon. In another embodiment, a pointer to each photon may be inserted (or linked to) any screen space tile that is capable of containing a projection of an effective sphere of that photon. In yet another embodiment, either a copy of the photon or a pointer to the photon may be inserted into each screen space tile capable of containing a projection of an effective sphere of the photon.

Ferner können in einer Ausführungsform eine oder mehrere Segmente („chunks”) aus Photonen, die mit den Bildschirm-Raum-Kacheln verknüpft sind, für die Verarbeitung ermittelt werden. Beispielsweise können in dem Falle, dass mehr Photonen in einer Kachel vorhanden sind, als in den Speicher passen, mehrere Durchläufe für eine Kachel realisiert werden, wobei Segmente aus Photonen der Kachel in jedem Durchlauf verarbeitet werden. Ferner können in einer Ausführungsform Photonen, die zu den mehreren Bildschirm-Raum-Kacheln gehören, die einen vordefinierten Tiefenbereich nicht schneiden, der mit den mehreren Bildschirm-Raum-Kacheln verknüpft ist, ausgesucht werden. Beispielsweise kann in einer Ausführungsform während des Prozesses zur Einteilung der Photonen in Kacheln ein Kachel-Algorithmus so arbeiten, dass Photonen ausgewählt werden, die den Tiefenbereich der Szene innerhalb einer Kachel nicht schneiden.Further, in one embodiment, one or more segments ("chunks") of photons associated with the screen space tiles may be determined for processing. For example, in the event that there are more photons in a tile than can fit in the memory, multiple passes may be made for a tile, processing segments of photons of the tile in each pass. Further, in one embodiment, photons associated with the plurality of screen space tiles that do not intersect a predefined depth area associated with the plurality of screen space tiles may be selected. For example, in one embodiment, during the process of partitioning the photons into tiles, a tile algorithm may operate to select photons that do not intersect the depth range of the scene within a tile.

Wie ferner gezeigt ist, kann in der Operation 140 zumindest eine Teilgruppe an Photonen, die zu jeder der Bildschirm-Raum-Kacheln gehören, ausgewählt werden, aus der eine Schattierung zu berechnen ist. In einer Ausführungsform kann die Auswahl der Teilgruppe an Photonen, die mit jeder der Bildschirm-Raum-Kacheln verknüpft ist, aus der eine Schattierung zu berechnen ist, eine Iteration über alle Pixel in jeder der mehreren Bildschirm-Raum-Kacheln umfassen. In einer weiteren Ausführungsform kann die Auswahl der Teilgruppe an Photonen, die mit jeder der Bildschirm-Raum-Kacheln verknüpft ist, aus denen eine Schattierung zu berechnen ist, eine Iteration über alle Pixel in jeder der mehreren Bildschirm-Raum-Kacheln und die Auswahl einer Teilgruppe an Photonen in jeder der Bildschirm-Raum-Kacheln, aus der eine Schattierung zu berechnen ist, umfassen.As further shown, in the operation 140 at least one subset of photons belonging to each of the screen space tiles are selected, from which a shading is to be calculated. In one embodiment, the selection of the subset of photons associated with each of the screen space tiles may be from one shade is calculated to include an iteration over all the pixels in each of the multiple screen room tiles. In a further embodiment, the selection of the subset of photons associated with each of the screen space tiles from which shading is to be calculated may include an iteration over all the pixels in each of the plurality of screen space tiles and the selection of one Subset of photons in each of the screen space tiles, from which a shading is calculated to include.

Ferner kann in einer Ausführungsform die Auswahl mindestens einer Teilgruppe an Photonen, die mit jeder der Bildschirm-Raum-Kacheln verknüpft sind, aus denen eine Schattierung zu berechnen ist, eine Auswahl aller Photonen beinhalten, die mit jeder der Bildschirm-Raum-Kacheln verknüpft sind (d. h. nicht nur eine Teilgruppe, usw.). Ferner kann in einer Ausführungsform ein stochastischer Prozess angewendet werden, um die Teilgruppe an Photonen auszuwählen, die mit jeder der Bildschirm-Raum-Kacheln verknüpft sind, aus denen eine Schattierung zu berechnen ist. Beispielsweise kann in einer Ausführungsform eine Teilgruppe an Photonen stochastisch unabhängig an jedem Pixel ausgewählt werden. In einer noch weiteren Ausführungsform kann ein Verzahnungs- bzw. ein Verschachtelungsprozess angewendet werden, um die Teilgruppe an Photonen auszuwählen, die mit jeder der Bildschirm-Raum-Kacheln, aus denen eine Schattierung zu berechnen ist, verknüpft sind.Further, in one embodiment, the selection of at least one subset of photons associated with each of the screen space tiles from which shading is to be calculated may include a selection of all the photons associated with each of the screen space tiles (ie not just a subgroup, etc.). Further, in one embodiment, a stochastic process may be applied to select the subset of photons associated with each of the screen space tiles from which shading is to be calculated. For example, in one embodiment, a subset of photons may be stochastically selected independently at each pixel. In yet another embodiment, a gating process may be applied to select the subset of photons associated with each of the screen space tiles from which shading is to be calculated.

Wie gezeigt, wird in der Operation 150 eine Schattierung für die mindestens eine Szene berechnet unter Verwendung der ausgewählten Teilgruppe an Photonen. In einer Ausführungsform kann die Berechnung der Schattierung eine Rekonstruktion einer glatten Schattierung an jedem Pixel umfassen, das mit der mindestens einen Szene verknüpft ist. Ferner kann in einer Ausführungsform die Berechnung der Schattierung die Rekonstruktion einer glatten Schattierung an jedem Pixel, das mit der mindestens einen Szene verknüpft ist, aus benachbarten Pixelwerten umfassen.As shown, in the operation 150 calculates a shade for the at least one scene using the selected subset of photons. In one embodiment, the calculation of the shading may include a smooth shading reconstruction at each pixel associated with the at least one scene. Further, in one embodiment, the calculation of the shading may include reconstructing a smooth shading at each pixel associated with the at least one scene from adjacent pixel values.

Ferner kann in einer Ausführungsform die Berechnung der Schattierung die Verwendung eines lateralen Filters beinhalten. Selbstverständlich können in diversen Ausführungsformen eine beliebige Anzahl an Filter, die Kanten erkennen, angewendet werden, um die Schattierung zu berechnen. Ferner kann in einer Ausführungsform das Verfahren 100 die Bilderzeugung der mindestens einen Szene beinhalten.Further, in one embodiment, the calculation of the shading may involve the use of a lateral filter. Of course, in various embodiments, any number of filters that detect edges may be applied to calculate the shading. Furthermore, in one embodiment, the method 100 include the imaging of the at least one scene.

Es wird nun anschauliche Information im Hinblick auf diverse optionale Architekturen und Merkmale angegeben, mit denen die vorhergehenden Mechanismen realisiert werden können oder auch nicht, wobei dies von den Bedürfnissen des Anwenders abhängt. Es sollte jedoch dringend beachtet werden, dass die folgende Information nur für anschauliche Zwecke angegeben ist und nicht dafür gedacht ist, in irgendeiner Weise einschränkend zu sein. Jedes der folgenden Merkmale kann optional mit oder ohne Ausschluss anderer Merkmale, die beschrieben sind, integriert werden.Illustrative information will now be provided in terms of various optional architectures and features that may or may not implement the foregoing mechanisms, depending on the needs of the user. It should be noted, however, that the following information is given for illustrative purposes only and is not intended to be in any way limiting. Each of the following features may optionally be integrated with or without the exclusion of other features that are described.

2 zeigt eine Parallelverarbeitungseinheit (PPU) 200 gemäß einer Ausführungsform. Obwohl ein paralleler Prozessor hierin als ein Beispiel der PPU 200 bereitgestellt ist, sollte dringend beachtet werden, dass ein derartiger Prozessor nur aus anschaulichen Zwecken angegeben ist und dass ein beliebiger Prozessor verwendbar ist, um diesen zu ergänzen und/oder zu ersetzen. In einer Ausführungsform umfasst die PPU 200 X Datenstrom-Multiprozessoren (SM) 250 und ist ausgebildet, mehrere Stränge gleichzeitig in zwei oder mehr der SM 250(X) auszuführen. Ein Strang (das heißt ein Ausführungsstrang) ist eine Instantiierung einer Gruppe aus Befehlen, die in einem speziellen SM 250 ausgeführt werden. Jeder SM 250, der nachfolgend detaillierter in Verbindung mit der 3 beschrieben ist, kann, ohne einschränkend zu sein, einen oder mehrere Verarbeitungskerne („processing cores”), eine oder mehrere Lade/Speichereinheiten (LSU), einen Cache-Speicher der Ebene eins (L1), einen gemeinsam benutzten Speicher und dergleichen umfassen. 2 shows a parallel processing unit (PPU) 200 according to one embodiment. Although a parallel processor is described herein as an example of the PPU 200 It should be noted that such a processor is given for illustrative purposes only and that any processor may be used to supplement and / or replace it. In one embodiment, the PPU includes 200 X data stream multiprocessors (SM) 250 and is configured to process multiple strands simultaneously into two or more of the SM 250 (X) perform. A thread (that is, an execution thread) is an instantiation of a set of commands written in a special SM 250 be executed. Every SM 250 , which will be described in more detail below in connection with the 3 but not limited to, may include one or more processing cores, one or more load / store units (LSU), a level one cache (L1), a shared memory, and the like.

In einer Ausführungsform umfasst die PPU 200 eine Eingabe/Ausgabe-(I/O-)Einheit 205, die ausgebildet ist, Kommunikationsereignisse (beispielsweise Befehle, Daten, usw.) von einer zentralen Recheneinheit (CPU) (nicht gezeigt) über den Systembus 202 zu senden und zu empfangen. Die I/O-Einheit 205 kann eine periphere Komponenten-Verbindung-Express (PCIe) Schnittstelle für die Kommunikation über einen PCIe-Bus realisieren. In alternativen Ausführungsformen kann die I/O-Einheit 205 andere Arten gut bekannter Busschnittstellen realisieren.In one embodiment, the PPU includes 200 an input / output (I / O) unit 205 configured to communicate communication events (eg, commands, data, etc.) from a central processing unit (CPU) (not shown) over the system bus 202 to send and receive. The I / O unit 205 Can implement a Peripheral Component Connection Express (PCIe) interface for communication over a PCIe bus. In alternative embodiments, the I / O unit 205 realize other types of well-known bus interfaces.

Die PPU 200 enthält ferner eine übergeordnete bzw. Hauptschnittstelleneinheit 210, die die Befehle dekodiert und die Befehle zu der Aufgabenverwaltungseinheit 215 oder anderen Einheiten der PPU 200 (eine Speicherschnittstelle 280) entsprechend der Angabe der Befehle sendet. In einer Ausführungsform umfasst die PPU 200U Speicherschnittstellen 280(U), wobei jede Speicherschnittstelle 280(U) mit einer entsprechenden Speichereinrichtung 204(U) verbunden ist. Die Hauptschnittstelleneinheit 210 ist ausgebildet, Kommunikationsereignisse zwischen und unter den diversen Logikeinheiten der PPU 200 zu verteilen.The PPU 200 also includes a parent interface unit 210 which decodes the commands and the commands to the task management unit 215 or other units of the PPU 200 (a memory interface 280 ) according to the specification of the commands. In one embodiment, the PPU includes 200U Storage Interfaces 280 (U) where each memory interface 280 (U) with a corresponding memory device 204 (U) connected is. The main interface unit 210 is trained to communicate events between and among the various logical units of the PPU 200 to distribute.

In einer Ausführungsform wird ein Programm, das als ein Befehlsstrom kodiert ist, von der CPU in einen Puffer geschrieben. Der Puffer ist ein Gebiet in einem Speicher, beispielsweise der Speicher 204 oder der Systemspeicher, auf den sowohl die CPU als auch die PPU 200 zugreifen kann (d. h. lesen/schreiben). Die CPU schreibt den Befehlsstrom in den Puffer und sendet dann einen Zeiger auf den Beginn des Befehlsstroms an die PPU 200. Die Hauptschnittstelleneinheit 210 leitet der Aufgabenverwaltungseinheit (TMU) 215 die Zeiger auf einen oder mehrere Ströme zu. Die TMU 215 wählt einen oder mehrere Ströme aus und ist ausgebildet, die ausgewählten Ströme als eine Gruppe aus anhängigen Gittern zu verwalten. In einer Ausführungsform umfasst ein Strangblock 32 zugehörige Stränge und ein Gitter ist ein Array aus einem oder mehreren Strangblöcken, die den gleichen Strang ausführen, und die unterschiedlichen Strangblöcke können Daten über den globalen Speicher austauschen. Die Gruppe aus anhängigen Gittern kann neue Gitter enthalten, die noch nicht für die Ausführung ausgewählt sind, und kann Gitter enthalten, die teilweise ausgeführt und unterbrochen worden sind. In one embodiment, a program encoded as a command stream is written to a buffer by the CPU. The buffer is an area in a memory, such as the memory 204 or the system memory to which both the CPU and the PPU 200 can access (ie read / write). The CPU writes the instruction stream to the buffer and then sends a pointer to the beginning of the instruction stream to the PPU 200 , The main interface unit 210 leads the task management unit (TMU) 215 the pointers to one or more streams too. The TMU 215 selects one or more streams and is configured to manage the selected streams as a group of pending grids. In one embodiment, a strand block comprises 32 associated strands and a grid is an array of one or more strand blocks that execute the same thread, and the different thread blocks can exchange data about the global memory. The pending grid group may contain new meshes that are not yet selected for execution, and may contain meshes that have been partially executed and broken.

Eine Arbeitsverteilungseinheit 220, die zwischen der TMU 215 und den SM 250 angeordnet ist, verwaltet eine Gruppe aus aktiven Gittern, wählt aktive Gitter aus und gibt diese für die Ausführung in den SM 250 aus. Anhängige Gitter werden durch die TMU 215 an die Gruppe aktiver Gitter übergeben, wenn ein anhängiges Gitter für die Ausführung bereit ist, d. h. keine unaufgelösten Datenabhängigkeiten besitzt. Ein aktives Gitter wird an die anhängige Gruppe übergeben, wenn die Ausführung des aktiven Gitters durch eine Abhängigkeit blockiert ist. Wenn die Ausführung eines Gitters abgeschlossen ist, wird das Gitter aus der Gruppe aktive Gitter durch die Arbeitsverteilungseinheit 220 entfernt. Zusätzlich zu dem Empfang von Gittern aus der Hauptschnittstelleneinheit 210 und der Arbeitsverteilungseinheit 220 empfängt die TMU 215 auch Gitter, die dynamisch von den SM 250 während der Ausführung eines Gitters erzeugt werden. Diese dynamisch erzeugten Gitter schließen sich den anderen anhängigen Gittern in der Gruppe aus anhängigen Gittern an.A work distribution unit 220 that between the TMU 215 and the SM 250 is arranged, manages a group of active lattices, selects active lattices, and passes them to the SM for execution 250 out. Pending lattices are made by the TMU 215 passed to the group of active grids if a pending grid is ready for execution, ie has no unresolved data dependencies. An active grid is passed to the pending group if the execution of the active grid is blocked by a dependency. When the execution of a grid is completed, the grid becomes active grid group by the work distribution unit 220 away. In addition to receiving grids from the main interface unit 210 and the work distribution unit 220 receives the TMU 215 also grids that are dynamically from the SM 250 generated during the execution of a grid. These dynamically generated grids join the other pending grids in the group of pending grids.

In einer Ausführungsform führt die CPU einen Treiber-Kernel aus, der eine Anwendungsprogrammierschnittstelle (API) realisiert, die es einer oder mehreren Anwendungen, die in der CPU ausgeführt werden, ermöglicht, Operationen für die Ausführung in der PPU 200 zu disponieren. Eine Anwendung kann Befehle (d. h. API-Aufrufe) enthalten, die den Treiber-Kernel veranlassen, ein oder mehrere Gitter für die Ausführung zu erzeugen. In einer Ausführungsform realisiert die PPU 200 eine SIMT-(Einzelbefehl-Multi-Strang-)Architektur, wobei jeder Strangblock (das heißt Kette) in einem Gitter gleichzeitig an einem anderen Datensatz durch unterschiedliche Stränge in dem Strangblock ausgeführt wird. Der Treiber-Kernel definiert Strangblöcke, die aus k zusammengehörenden Strängen aufgebaut sind, so dass Stränge in dem gleichen Strangblock Daten über den gemeinsam benutzten Speicher austauschen können.In one embodiment, the CPU executes a driver kernel that implements an application programming interface (API) that enables one or more applications executing in the CPU to perform operations in the PPU 200 to dispose of. An application may contain instructions (ie, API calls) that cause the driver kernel to generate one or more lattices for execution. In one embodiment, the PPU realizes 200 a SIMT (single-instruction multi-strand) architecture, where each thread block (ie, string) in a lattice is simultaneously executed on a different set of data by different strands in the thread block. The driver kernel defines thread blocks made up of k contiguous strands so that strands in the same thread block can exchange data about the shared memory.

In einer Ausführungsform kann die PPU 200 15 einzelne SM 250 enthalten. Jeder SM 250 ist mehrsträngig und ausgebildet, mehrere Stränge (beispielsweise 32 Stränge) aus einem speziellen Strangblock gleichzeitig auszuführen. Jeder der SM 250 ist mit einem Cache-Speicher der Ebene zwei (L2) 265 über eine Kreuzungseinheit 260 (oder eine andere Art an Verbindungsnetzwerk) verbunden. Der L2-Cache-Speicherzelle 265 ist mit einer oder mehreren Speicherschnittstellen 280 verbunden. Die Speicherschnittstellen 280 realisieren Datenbusse mit 16, 32, 64, 128 Bits oder dergleichen für eine Hochgeschwindigkeitsdatenübertragung. In einer Ausführungsform kann die PPU 200 mit bis zu 6 Speichereinrichtungen verbunden sein, etwa synchronisierte dynamische Speicher mit wahlfreiem Zugriff als Grafikspeicher mit doppelter Datenrate der Version 5 (GDDR5 SDRAM).In one embodiment, the PPU 200 15 individual SM 250 contain. Every SM 250 is multi-stranded and designed to execute multiple strands (for example 32 strands) from a particular strand block simultaneously. Each of the SM 250 is with a level two cache (L2) 265 via an intersection unit 260 (or another type of connection network). The L2 cache memory cell 265 is with one or more storage interfaces 280 connected. The storage interfaces 280 realize data buses of 16, 32, 64, 128 bits or the like for high-speed data transmission. In one embodiment, the PPU 200 with up to 6 storage devices, such as synchronized dynamic random access memory as a double data rate version 5 graphics memory (GDDR5 SDRAM).

In einer Ausführungsform repräsentiert die PPU 200 eine Mehrebenen-Speicherhierarchie. Der Speicher 204 ist außerhalb des Chips in dem SDRAM angeordnet, der mit der PPU 200 gekoppelt ist. Daten aus dem Speicher 204 können abgeholt und in den L2-Cache-Speicher 265 gespeichert werden, der auf dem Chip angeordnet ist und der gemeinsam von den diversen SM 250 benutzt wird. In einer Ausführungsform realisiert jeder der SM 250 auch einen L1-Cache-Speicher. Der L1-Cache gespeichert ist ein privater Speicher, der einem speziellen SM 250 zugewiesen ist. Jeder der L1-Cache-Speicher ist mit dem gemeinsam benutzten L2-Cache-Speicher 265 verbunden. Daten aus dem L2-Cache-Speicher 265 werden abgeholt und in jedem der L1-Cache-Speicher zur Verarbeitung in den Funktionseinheiten der SM 250 gespeichert.In one embodiment, the PPU represents 200 a multilevel storage hierarchy. The memory 204 is located outside the chip in the SDRAM, which is connected to the PPU 200 is coupled. Data from the memory 204 can be picked up and put into the L2 cache 265 stored on the chip and shared by the various SM 250 is used. In one embodiment, each of the SMs implements 250 also an L1 cache memory. The L1 cache stored is a private memory that is a special SM 250 is assigned. Each of the L1 caches is shared with the L2 cache 265 connected. Data from the L2 cache 265 are fetched and in each of the L1 caches for processing in the functional units of the SM 250 saved.

In einer Ausführungsform umfasst die PPU 200 eine grafische Verarbeitungseinheit (GPU). Die PPU 200 ist ausgebildet, Befehle zu empfangen, die Schattierungsprogramme zur Verarbeitung grafischer Daten angeben. Grafikdaten können als eine Gruppe aus Grundelementen, etwa Punkte, Linien, Dreiecke, Quadrate, Dreiecksstreifen und dergleichen definiert sein. Typischerweise umfasst ein Grundelement Daten, die eine Anzahl von Vertices bzw. Eckpunkten für das Grundelement (beispielsweise in einem Modellraum-Koordinatensystem) angeben, sowie auch Attribute aufweisen, die mit jedem Vertex des Grundelements verknüpft sind. Die PPU 200 kann ausgebildet sein, die grafischen Grundelemente zu verarbeiten, um einen Blockpuffer bzw. Bildpuffer (das heißt Pixeldaten für jedes der Pixel der Anzeige) zu erzeugen. Der Treiber-Kernel realisiert eine Grafikverarbeitungs-Pipeline, etwa die durch die OpenGL API definierte Grafikverarbeitungs-Pipeline.In one embodiment, the PPU includes 200 a graphical processing unit (GPU). The PPU 200 is configured to receive commands indicating shading programs for processing graphical data. Graphics data may be defined as a group of primitives, such as dots, lines, triangles, squares, triangular stripes, and the like. Typically, a primitive includes data indicating a number of vertices for the primitive (eg, in a model space coordinate system) as well as attributes associated with each vertex of the primitive. The PPU 200 can be configured to process the graphic primitives to form a block buffer or Image buffer (ie pixel data for each of the pixels of the display). The driver kernel implements a graphics processing pipeline, such as the graphics processing pipeline defined by the OpenGL API.

Eine Anwendung schreibt Modelldaten für eine Szene (das heißt eine Ansammlung aus Vertices und Attributen) in den Speicher. Die Modelldaten definierten jedes der Objekte, das auf einer Anzeige sichtbar sein kann. Die Anwendung führt dann einen API-Aufruf in den Treiber-Kernel aus, der anfordert, dass die Modelldaten einer Bilderzeugung unterzogen und angezeigt werden. Der Treiber-Kernel liest die Modelldaten aus und schreibt Befehle in den Puffer, um eine oder mehrere Operationen zur Verarbeitung der Modelldaten auszuführen. Die Befehle können unterschiedliche Schattierungsprogramme kodieren, wozu eine Vertex-Schattierung, eine Hüllen-Schattierung, eine Geometrie-Schattierung, eine Pixel-Schattierung, usw. gehören. Beispielsweise kann die TMU 215 einen oder mehrere SM 250 konfigurieren, so dass diese ein Vertex-Schattierungsprogramm ausführen, das eine Anzahl von Vertices, die von den Modelldaten definiert sind, verarbeitet. In einer Ausführungsform kann die TMU 215 unterschiedliche SM 250 konfigurieren, so dass sie gleichzeitig unterschiedliche Schattierungsprogramme ausführen. Beispielsweise kann eine erste Teilgruppe an SM 250 konfiguriert werden, um ein Vertex-Schattierungsprogramm auszuführen, während sie eine zweite Teilgruppe an SM 250 konfigurieren kann, um ein Pixel-Schattierungsprogramm auszuführen. Die erste Teilgruppe an SM 250 verarbeitet Vertex-Daten, um verarbeitete Vertex-Daten zu erzeugen, und schreibt die verarbeiteten Vertex-Daten in den L2-Cache-Speicher 265 und/oder in den Speicher 204. Nachdem die verarbeiteten Vertex-Daten in Raster eingeteilt sind (d. h. von dreidimensionalen Daten in zweidimensionale Daten in einem Bildschirm-Raum transformiert worden sind), um Fragmentdaten-Daten zu erzeugen, führt die zweite Teilgruppe an SM 250 eine Pixel-Schattierung aus, um verarbeitete Fragmentdaten zu erzeugen, die dann mit anderen verarbeiteten Fragmentdaten zusammengeführt und in den Blockpuffer im Speicher 204 geschrieben werden. Das Vertex-Schattierungsprogramm und das Pixel-Schattierungsprogramm können gleichzeitig ablaufen, wodurch unterschiedliche Daten aus der gleichen Szene in der Art einer Pipeline verarbeitet werden, bis alle Modelldaten für die Szene als Bild in den Blockpuffer eingelesen sind. Danach wird der Inhalt des Blockpuffers an eine Anzeigesteuerung zur Anzeige in einer Anzeigeeinrichtung übertragen.An application writes model data for a scene (that is, a collection of vertices and attributes) to memory. The model data defines each of the objects that may be visible on a display. The application then executes an API call to the driver kernel requesting that the model data be image-formed and displayed. The driver kernel reads the model data and writes commands to the buffer to perform one or more operations to process the model data. The instructions may encode different shader programs, including vertex shading, shell shading, geometry shading, pixel shading, and so forth. For example, the TMU 215 one or more SM 250 so that they execute a vertex shader that processes a number of vertices defined by the model data. In one embodiment, the TMU 215 different SM 250 configure them to run different shader programs simultaneously. For example, a first subset of SM 250 be configured to execute a vertex shader while holding a second subset of SM 250 can configure to run a pixel shader. The first subgroup at SM 250 Processes vertex data to produce processed vertex data and writes the processed vertex data into the L2 cache 265 and / or in the store 204 , After the processed vertex data is divided into rasters (ie transformed from three-dimensional data into two-dimensional data in a screen space) to generate fragment data data, the second subset leads to SM 250 pixel shading to produce processed fragment data which is then merged with other processed fragment data and stored in the block buffer in memory 204 to be written. The vertex shader and pixel shader may run concurrently, processing different data from the same scene in the manner of a pipeline until all the model data for the scene has been read into the block buffer as an image. Thereafter, the content of the block buffer is transmitted to a display controller for display in a display device.

Die PPU 200 kann in einem Tischrechner, einem tragbaren Rechner, einem Tablett-Rechner, einem intelligenten Telefon (beispielsweise einem drahtlosen Handgerät), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einem elektronischen Handgerät, und dergleichen enthalten sein. In einer Ausführungsform ist die PPU 200 als ein einzelnes Halbleitersubstrat ausgebildet. In einer weiteren Ausführungsform ist die PPU 200 in einem System-auf-einem-Chip (SoC) zusammen mit einer oder mehreren Logikeinheiten, etwa einer CPU in einem reduziertem Befehlssatz-Computer (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-Analog-Wandler (DAC) und dergleichen enthalten.The PPU 200 may be included in a desktop computer, a portable computer, a tablet computer, a smart phone (eg, a wireless handset), a personal digital assistant (PDA), a digital camera, an electronic handset, and the like. In one embodiment, the PPU 200 formed as a single semiconductor substrate. In another embodiment, the PPU 200 in a system-on-a-chip (SoC) together with one or more logic units, such as a CPU in a reduced instruction set computer (RISC), a memory management unit (MMU), a digital-to-analog converter (DAC), and the like ,

In einer Ausführungsform kann die PPU 200 in einer Grafikkarte enthalten sein, die eine oder mehrere Speichereinrichtungen 204, etwa GDDR5 SDRAM, umfasst. Die Grafikkarte kann so gestaltet sein, dass sie mit einem PCIe-Steckplatz auf einer Hautplatine eines Tischrechners kommuniziert, die beispielsweise einen Nordbrücken-Chipsatz und einen Südbrücken-Chipsatz enthält. In einer noch weiteren Ausführungsform kann die PPU 200 eine integrierte grafische Verarbeitungseinheit (iGPU) sein, die in dem Chipsatz (d. h. Nordbrücke) der Hauptplatine enthalten ist.In one embodiment, the PPU 200 to be included in a video card containing one or more memory devices 204 , such as GDDR5 SDRAM. The graphics card may be designed to communicate with a PCIe slot on a desktop computer motherboard including, for example, a northbridge chipset and a southbridge chipset. In yet another embodiment, the PPU 200 an integrated graphical processing unit (iGPU) included in the chipset (ie, north bridge) of the motherboard.

3 zeigt den Datenstrom-Multiprozessor 250 aus 2 gemäß einer Ausführungsform. Wie in 3 gezeigt ist, enthält der SM 250 einen Befehls-Cache-Speicher 305, eine oder mehrere Disponiereinheiten 310, eine Registerdatei 320, einen oder mehrere Verarbeitungskerne 350, eine oder mehrere Einheiten mit doppelter Genauigkeit (DPU) 351, eine oder mehrere Spezialfunktionseinheiten (SFU) 352, eine oder mehrere Lade/Speichereinheiten (LSU) 353, ein Verbindungsnetzwerk 380, einen gemeinsam benutzten Speicher 370 und eine oder mehrere Textureinheiten/1-Cache-Speicher 390. 3 shows the data stream multiprocessor 250 out 2 according to one embodiment. As in 3 is shown, the SM contains 250 an instruction cache 305 , one or more scheduler units 310 , a register file 320 , one or more processing cores 350 , one or more double precision units (DPU) 351 , one or more special function units (SFU) 352 , one or more load / store units (LSU) 353 , a connection network 380 , a shared memory 370 and one or more texture units / 1 cache memory 390 ,

Wie zuvor beschrieben ist, gibt die Arbeitsverteilungseinheit 220 aktive Gitter für die Ausführung in einem oder mehreren SM 250 der PPU 200 aus. Die Disponiereinheit 310 empfängt die Gitter aus der Arbeitsverteilungseinheit 220 und verwaltet eine Befehlsdisponierung für einen oder mehrere Strangblöcke jedes aktiven Gitters. Die Disponiereinheit 310 disponiert Stränge für die Ausführung in Gruppen aus parallelen Strängen, wobei jede Gruppe als eine Kette bezeichnet wird. In einer Ausführungsform enthält jede Kette 32 Stränge. Die Disponiereinheit 310 kann mehrere unterschiedliche Strangblöcke verwalten, wobei die Strangblöcke in Ketten für die Ausführung zugewiesen werden, und wobei dann Befehle aus den mehreren unterschiedlichen Ketten in den diversen Funktionseinheiten (d. h. Kerne 350, DPU 351, SFU 352 und LSU 353) während jedes Taktzyklus disponiert werden.As described above, the work distribution unit indicates 220 active grids for execution in one or more SM 250 the PPU 200 out. The scheduler 310 receives the grids from the work distribution unit 220 and manages command scheduling for one or more thread blocks of each active lattice. The scheduler 310 schedules strands for execution in groups of parallel strands, each group being called a chain. In one embodiment, each chain contains 32 Strands. The scheduler 310 can manage several different thread blocks, with the thread blocks assigned in chains for execution, and then commands from the several different chains in the various functional units (ie, cores 350 , DPU 351 , SFU 352 and LSU 353 ) are scheduled during each clock cycle.

In einer Ausführungsform enthält jede Disponiereinheit 310 eine oder mehrere Befehlsausgabeeinheiten 315. Jede Ausgabeeinheit 315 ist ausgebildet, Befehle zu einer oder mehreren der Funktionseinheiten zu übertragen. In der in 3 gezeigten Ausführungsform enthält die Disponiereinheit 310 zwei Ausgabeeinheiten 315, die es möglich machen, dass zwei unterschiedliche Befehle aus der gleichen Kette während jedes Taktzyklus ausgegeben werden. In alternativen Ausführungsformen kann jede Disponiereinheit 310 eine einzelne Ausgabeeinheit 315 oder zusätzliche Ausgabeeinheiten 315 enthalten. In one embodiment, each scheduler includes 310 one or more command output units 315 , Each output unit 315 is configured to transmit commands to one or more of the functional units. In the in 3 the embodiment shown contains the scheduler 310 two output units 315 that allow two different instructions to be issued from the same chain during each clock cycle. In alternative embodiments, each scheduler may 310 a single output unit 315 or additional output units 315 contain.

Jeder SM 350 enthält eine Registerdatei 320, die eine Gruppe aus Registern für die Funktionseinheiten des SM 350 bereitstellt. In einer Ausführungsform ist die Registerdatei 320 auf jeweils die Funktionseinheiten derart aufgeteilt, dass jeder Funktionseinheit ein spezieller Teil der Registerdatei 320 zugewiesen ist. In einer weiteren Ausführungsform ist die Registerdatei 320 auf die unterschiedlichen Ketten, die von den SM 250 ausgeführt werden, aufgeteilt. Die Registerdatei 320 stellt temporären Speicherplatz für Operanden bereit, die mit den Datenpfaden der Funktionseinheiten verbunden sind.Every SM 350 contains a register file 320 containing a group of registers for the functional units of the SM 350 provides. In one embodiment, the register file is 320 each divided into the functional units such that each functional unit is a special part of the register file 320 is assigned. In another embodiment, the register file is 320 on the different chains used by the SM 250 be executed, split. The register file 320 provides temporary storage for operands associated with the data paths of the functional units.

Jeder SM 250 umfasst L Verarbeitungskerne 350. In einer Ausführungsform enthält der SM 250 eine große Anzahl (beispielsweise 192 usw.) an einzelnen Verarbeitungskernen 350. Jeder Kern 350 ist eine vollständig als Pipeline ausgeführte Verarbeitungseinheit mit einfacher Genauigkeit, die eine Gleitkommaarithmetik-Logikeinheit und eine Ganzzahlarithmetik-Logikeinheit enthält. In einer Ausführungsform realisieren die Gleitkommaarithmetik-Logikeinheiten den IEEE 754-2008 Standard für eine Gleitkommaarithmetik. Jeder SM 250 umfasst ferner M DPU 351, die eine Gleitkommaarithmetik mit doppelter Genauigkeit realisieren, N SFU 352, die spezielle Funktionen ausführen (beispielsweise ein Rechteck kopieren, Pixel-Mischoperationen und dergleichen Ausführung), und P LSU 353, die Lade- und Speicheroperationen zwischen dem gemeinsam benutzten Speicher 370 und der Registerdatei 320 über die J Textureinheiten/L1-Cache-Speicher 390 und das Verbindungsnetzwerk 380 realisieren. Die J Textureinheiten/L1-Cache-Speicher 390 sind zwischen dem Verbindungsnetzwerk 380 und dem gemeinsam benutzten Speicher 370 angeordnet und sind ferner mit der Kreuzungseinheit 260 verbunden. In einer Ausführungsform enthält der SM 250 64 DPU 351, 32 SFU 352 und 32 LSU 353. In einer weiteren Ausführungsform ist der L1-Cache-Speicher nicht in der Textureinheit enthalten und ist stattdessen in dem gemeinsam benutzten Speicher 370 mit einer separaten direkten Verbindung zu der Kreuzungseinheit 260 enthalten.Every SM 250 includes L processing cores 350 , In one embodiment, the SM includes 250 a large number (for example 192 etc.) on individual processing cores 350 , Every core 350 is a full pipelined single precision processing unit that includes a floating point arithmetic logic unit and an integer arithmetic logic unit. In one embodiment, the floating point arithmetic logic units implement the IEEE 754-2008 Standard for a floating-point arithmetic. Every SM 250 further comprises M DPU 351 implementing double precision floating point arithmetic, N SFU 352 performing special functions (for example, copying a rectangle, pixel blending operations, and the like), and P LSU 353 , the load and store operations between the shared memory 370 and the register file 320 via the J texture units / L1 cache 390 and the connection network 380 realize. The J texture units / L1 cache 390 are between the connection network 380 and the shared memory 370 are arranged and are further with the crossing unit 260 connected. In one embodiment, the SM includes 250 64 DPU 351 , 32 SFU 352 and 32 LSU 353 , In another embodiment, the L1 cache is not included in the texture unit and instead is in the shared memory 370 with a separate direct connection to the intersection unit 260 contain.

Jeder SM 250 enthält ein Verbindungsnetzwerk 380, das jede der Funktionseinheiten mit der Registerdatei 320 und dem gemeinsam benutzten Speicher 370 über das Verbindungsnetzwerk 380 verbindet. In einer Ausführungsform ist das Verbindungsnetzwerk 380 eine Kreuzungseinheit, die ausgebildet sein kann, jede der Funktionseinheiten mit einem beliebigen der Register in der Registerdatei 320, mit einer der J Textureinheiten/L1-Cache-Speicher 390 oder den Speicherstellen in dem gemeinsam benutzten Speicher 370 zu verbinden.Every SM 250 contains a connection network 380 containing each of the functional units with the register file 320 and the shared memory 370 over the connection network 380 combines. In one embodiment, the interconnect network is 380 an intersection unit, which may be configured, each of the functional units with any one of the registers in the register file 320 , with one of the J texture units / L1 cache 390 or the memory locations in the shared memory 370 connect to.

In einer Ausführungsform ist der SM 250 in einer GPU realisiert. In einer derartigen Ausführungsform umfasst der SM 250 J Textureinheiten/L1-Cache-Speicher 390. Die Textureinheiten/L1-Cache-Speicher 390 sind ausgebildet, auf Texturzuordnungen (das heißt ein 2D-Array aus Textelementen) in dem Speicher 204 zu zugreifen und die Texturzuordnungen abzutasten, um abgetastete Texturwerte zur Verwendung in Schattierungsprogrammen zu erzeugen. Die Textureinheiten/L1-Cache-Speicher 390 realisieren Textur-Operationen, etwa Fehlerbehebungsoperationen unter Anwendung von mip-Zuordnungen (das heißt Texturzuordnungen mit einem variierenden Grad an Detail). In einer Ausführungsform enthält der SM 250 16 Textureinheiten/L1-Cache-Speicher 390. In einer Ausführungsform können die Textureinheiten/L1-Cache-Speicher 390 ausgebildet sein, Lade- und Speicheranforderungen aus den LSU 353 zu empfangen und die Texturzugriffe und die Lade- und Speicheranforderungen zusammenzuführen, um vereinigten Speicheroperationen zu erzeugen, die an ein Speichersystem ausgegeben werden, das den gemeinsam benutzten Speicher 370 enthält. Das Speichersystem kann ferner den L2-Cache-Speicher 265, den Speicher 204 und einen Systemspeicher (nicht gezeigt) umfassen.In one embodiment, the SM is 250 realized in a GPU. In such an embodiment, the SM includes 250 J texture units / L1 cache 390 , The texture units / L1 cache 390 are formed on texture maps (that is, a 2D array of text elements) in the memory 204 and sample the texture maps to produce sampled texture values for use in shader programs. The texture units / L1 cache 390 implement texture operations such as mip mappings (that is, texture mappings having a varying degree of detail). In one embodiment, the SM includes 250 16 texture units / L1 cache memory 390 , In one embodiment, the texture units / L1 caches 390 be trained, loading and storage requirements from the LSU 353 to merge and merge the texture accesses and the load and store requests to produce unified memory operations that are issued to a memory system that shares the shared memory 370 contains. The storage system may also include the L2 cache 265 , the memory 204 and a system memory (not shown).

Die zuvor beschriebene PPU 200 kann ausgebildet sein, äußerst parallele Berechnungen wesentlich schneller als konventionelle CPUs auszuführen. Eine parallele Berechnung hat Vorteile bei der Grafikverarbeitung, bei der Datenkomprimierung, bei geometrischen Operationen, bei Stromverarbeitungsalgorithmen und dergleichen.The previously described PPU 200 can be designed to perform extremely parallel calculations much faster than conventional CPUs. Parallel calculation has advantages in graphics processing, data compression, geometric operations, power processing algorithms, and the like.

In einer Ausführungsform können die zuvor genannten Systeme verwendet werden, um eine Photonenabbildung zu realisieren. Die Photonenabbildung beinhaltet das Aussenden von Photonen, die Verfolgung von Photonen und die Berechnung der gestreuten Strahlung durch Abschätzen der Photonendichte (d. h. der Schattierung, usw.). Die Schritte für die Photonenemission und die Verfolgung sind ähnlich zu der Pfadverfolgung bzw. Pfadzeichnung. Sie erzeugen entlang von Transportpfaden eine Reihe von Streuzentren. Die Spurverfolgung speichert ein einfallendes Photon in einer Photonenabbildung bzw. Photonenkarte an jedem Streuzentrum. Die Auswahl einer Datenstruktur für die Abbildung hängt von dem Schattierungsalgorithmus ab, der später verwendet wird.In one embodiment, the aforementioned systems can be used to realize photon imaging. Photon imaging involves the emission of photons, the tracking of photons, and the calculation of the scattered radiation by estimating the photon density (ie, shading, etc.). The steps for photon emission and tracking are similar to path tracing. They create a series of scattering centers along transport paths. The Tracking stores an incident photon in a photon map at each scattering center. The selection of a data structure for the mapping depends on the shading algorithm that will be used later.

Es sind viele Variationen der Photonenabbildung vorgeschlagen worden, die für eine Echtzeit-Bilderzeugung komplexer Szenen gedacht sind. In Kombination mit diesem algorithmischen Fortschritt sind GPUs nunmehr leistungsfähig genug, um Photonen in Echtzeit-Bilderzeugungssystemen zu verwenden.Many variations of photon mapping have been proposed which are intended for real-time complex scene imaging. Combined with this algorithmic advancement, GPUs are now powerful enough to use photons in real-time imaging systems.

Effiziente parallele Hardware- und Softwaresysteme zur Strahlverfolgung, etwa OptiX, können hunderte von Millionen Strahlen pro Sekunde zeichnen bzw. verfolgen und der Prozess kann über mehrere Blöcke hinweg amortisiert werden. Somit erfüllen bestehende Systeme die Leistungsanforderungen, die für eine Photonenverfolgung erforderlich sind. Die Nettoleistung hängt von einer effizienten Photonenschattierung ab. Folglich kann eine Architektur-bewusste Optimierung der Photonenschattierung für parallele Vektor-Architekturen realisiert werden, um die Skalierbarkeit der Photonensammlung (beispielsweise zum Erreichen einer Beleuchtung in Filmqualität in interaktiven Anwendungen, usw.) zu erhöhen und um generell eine verzögerte Schattierung in GPUs weiterzuentwickeln, wobei eine Implementierung mit gekachelter bzw. in Kacheln eingeteilte verzögerte Photonensammlung verwendet wird.Efficient parallel ray tracing hardware and software systems, such as OptiX, can draw and track hundreds of millions of beams per second, and the process can be amortized across multiple blocks. Thus, existing systems meet the performance requirements required for photon tracking. The net power depends on efficient photon shading. Thus, architecture-aware optimization of photon shading for parallel vector architectures can be realized to increase the scalability of photon collection (e.g., to achieve movie quality lighting in interactive applications, etc.) and generally to further develop delayed shading in GPUs an implementation with tiled or delayed tiled photon collection is used.

4A zeigt ein Flussdiagramm eines Verfahrens 400 für eine gekachelte verzögerte bzw. hinausgeschobene Schattierung gemäß einer weiteren Ausführungsform. Als Option kann das Verfahren 400 im Zusammenhang mit den vorhergehenden Figuren und/oder durch eine oder mehrere nachfolgende Figuren realisiert werden. Selbstverständlich kann das Verfahren 400 auch in einer beliebigen anderen gewünschten Umgebung realisiert werden. Es sollte ferner beachtet werden, dass die zuvor genannten Definitionen auch für die vorliegende Beschreibung zutreffen. 4A shows a flowchart of a method 400 for a tiled delayed shading according to another embodiment. As an option, the procedure may 400 be realized in connection with the preceding figures and / or by one or more subsequent figures. Of course, the process can 400 be realized in any other desired environment. It should also be noted that the definitions given above also apply to the present description.

Wie gezeigt, wird in der Operation 410 eine Kopie des (oder ein Zeiger auf das) Photon(s) in jeder Bildschirm-Raum-Kachel angeordnet, die die Projektion ihrer wirksamen Kugel enthält. Wie ferner in Operation 420 gezeigt ist, werden Iterationen über die Pixel in jeder Kachel ausgeführt, und für jede wird eine Teilgruppe der Photonen in der Kachel ausgewählt, von der eine Schattierung zu berechnen ist. Ferner wird, wie in Operation 430 gezeigt ist, eine glatte Schattierung an jedem Pixel aus den Werten der Nachbarn rekonstruiert.As shown, in the operation 410 a copy of (or a pointer to) the photon (s) is placed in each screen space tile containing the projection of its effective sphere. As further in operation 420 is shown, iterations are performed over the pixels in each tile, and for each a subset of the photons in the tile is selected from which shading is to be calculated. Further, as in Operation 430 A smooth shading at each pixel is reconstructed from the values of the neighbors.

4B zeigt ein Flussdiagramm eines Verfahrens 450 für eine gekachelte verzögerte Schattierung gemäß einer weiteren Ausführungsform. Optional kann das Verfahren 450 in Verbindung mit den vorhergehenden Figuren und/oder einer oder mehreren nachfolgenden Figuren realisiert werden. Selbstverständlich kann das Verfahren 450 auch in einer beliebigen gewünschten Umgebung realisiert werden. Zu beachten ist auch, dass die zuvor genannten Definitionen auch in der vorliegenden Beschreibung zutreffen. 4B shows a flowchart of a method 450 for a tiled delayed shading according to another embodiment. Optionally, the procedure 450 be realized in conjunction with the preceding figures and / or one or more subsequent figures. Of course, the process can 450 be realized in any desired environment. It should also be noted that the aforementioned definitions also apply in the present description.

Wie gezeigt, wird in Operation 460 eine Kopie (oder ein Zeiger auf) jedes Photons in jeder Bildschirm-Raum-Kachel angeordnet, die die Projektion ihrer wirksamen Kugel enthält, und Photonen, die den Tiefenbereich der Szene innerhalb einer Kachel nicht schneiden, werden ausgesondert. Wie ferner in der Operation 470 gezeigt ist, werden Iterationen über die Pixel in jeder Kachel in Gruppen ausgeführt, und eine Teilgruppe der Photonen der Kachel wird ausgewählt, von der eine Schattierung zu berechnen ist. Ferner wird eine glatte Schattierung an jedem Pixel aus den Werten der Nachbarn rekonstruiert, wie in Operation 480 gezeigt ist.As shown, in operation 460 a copy (or a pointer to) of each photon in each screen space tile containing the projection of its effective sphere and photons that do not intersect the depth range of the scene within a tile are discarded. How further in the operation 470 is shown, iterations over the pixels in each tile are performed in groups, and a subset of the photons of the tile is selected, of which shading is to be calculated. Further, smooth shading at each pixel is reconstructed from the values of the neighbors, as in operation 480 is shown.

Auf diese Weise kann in einer Ausführungsform ein Kachel-Algorithmus eingesetzt werden, um eine Kopie jedes Photons in Eimern bzw. Behältern („buckets”) einzufügen, die den Bildschirm-Raum-Kacheln sprechen, die sie beeinflussen können. Dies macht es möglich, dass in einem zweiten Durchlauf alle Pixel innerhalb einer Kachel aus einer gemeinsamen Teilgruppe an Photonen schattiert werden, die in einen gemeinsam benutzten Speicher für eine Rechenschattierung passen.In this way, in one embodiment, a tile algorithm may be employed to place a copy of each photon in buckets that speak the screen space tiles that may affect them. This makes it possible that in a second pass, all pixels within a tile are shaded from a common subset of photons that fit into a shared memory for a calculation shading.

Wenn mehr Photonen in einer Kachel vorhanden sind, als in den Speicher des zu Grunde liegenden Systems passen, können mehrere Durchläufe für eine Kachel durchgeführt werden, wobei dimensionierbare Segmente bzw. Stücke an Photonen in der Kachel bei jedem Durchlauf verarbeitet werden. In einer Ausführungsform kann während des Vorgangs zur Einteilung der Photonen in Kacheln ein Kachel-Algorithmus so arbeiten, dass Photonen ausgesondert werden, die den Tiefenbereich der Szene innerhalb einer Kachel nicht schneiden. In Szenen mit einer hohen Varianz der Tiefe können daher gegebenenfalls viele Schattierungs-Stränge gestartet werden, die aber unmittelbar beendet werden, wodurch die Belegungsrate für Vektorbahnen verringert wird, ohne dass eine nutzbringende Berechnung erfolgt.If there are more photons in a tile than can fit in the memory of the underlying system, multiple passes can be made for a tile, with scalable segments of photons in the tile processed on each pass. In one embodiment, during the process of partitioning the photons into tiles, a tile algorithm may operate to discard photons that do not intersect the depth range of the scene within a tile. Therefore, in scenes with a high variance of depth, many shading strands may possibly be started, but immediately terminated, thereby reducing the occupancy rate for vector paths without making any useful calculation.

Tabelle 1 zeigt einen anschaulichen Code, der einen Durchlauf für die Einfügung in eine Kachel gemäß einer Ausführungsform veranschaulicht. Tabelle 1

Figure DE102013113714A1_0002
Table 1 shows an illustrative code that illustrates a tile insertion pass in accordance with an embodiment. Table 1
Figure DE102013113714A1_0002

In einer Ausführungsform können Kacheln weitere Stücke bzw. Segmente unterteilt werden, wovon jedes eine begrenzte Anzahl an Photonen enthält. Jedes Photonen verbraucht ein wenig Speicher, so dass in einer Ausführungsform Photonen dupliziert und direkt in den Segmenten eingebettet werden können, anstatt dass Zeiger verwendet werden. Dadurch wird auch der Cache-Speicher effizient genutzt und ermöglicht vereinigte parallele Speicherabholungen.In one embodiment, tiles may be subdivided into further pieces, each containing a limited number of photons. Each photon consumes a small amount of memory, so in one embodiment, photons can be duplicated and embedded directly in the segments rather than using pointers. This also makes efficient use of the cache memory and allows unified parallel memory fetching.

Tabelle 2 zeigt einen anschaulichen Code, der die Kachelanhäufung gemäß einer Ausführungsform darstellt. Tabelle 2

Figure DE102013113714A1_0003
Table 2 shows illustrative code representing tile aggregation according to one embodiment. Table 2
Figure DE102013113714A1_0003

In einer Ausführungsform kann eine Teilgruppe an Photonen stochastisch unabhängig an jedem Pixel ausgewählt werden. Dies ermöglicht eine gleichzeitige Abtastung des Raums und der Photonen, wodurch die Auflösung bewahrt wird. Ferner können für eine stochastische Abtastung während der Schattierung als Option statistisch unabhängige Zufallszahlen an jedem Pixel verwendet werden. Es können kooperative Abtastverfahren eingesetzt werden, um die Konvergenz signifikant zu erhöhen, indem Abtastwerte an benachbarten Pixel koordiniert werden. In einer Ausführungsform kann ein aufwendigerer Rekonstruktionsfilter verwendet werden, um die Anzahl an Abtastung zu reduzieren, die zum Erreichen einer akzeptablen Konvergenz erforderlich ist.In one embodiment, a subset of photons may be stochastically selected independently at each pixel. This allows simultaneous scanning of the space and the photons, causing the Resolution is preserved. Further, for stochastic sampling during shading, statistically independent random numbers can be used as an option at each pixel. Cooperative scanning techniques can be used to significantly increase convergence by coordinating samples at adjacent pixels. In one embodiment, a more elaborate reconstruction filter may be used to reduce the number of samples required to achieve acceptable convergence.

Wie in Tabelle 2 gezeigt ist, bezeichnet step(x) einen geometrisch verteilten Zufallszahlengenerator, der Abtastwerte für die Anzahl an Versuchen bis zu der ersten erfolgreichen Bernoulli-Zufallsvariable mit Erfolgswahrscheinlichkeit 1/x bezeichnet. In einer Ausführungsform kann der Prozess eine Erhöhung um diesen Wert beinhalten, wenn durch das Photonen-Array eine Iteration durchgeführt wird, um zufällig 1/x Photonen im Mittel abzutasten.As shown in Table 2, step (x) denotes a geometrically distributed random number generator which denotes samples for the number of trials up to the first successful Bernoulli random variable with probability of success 1 / x. In one embodiment, the process may include an increase of that value when an iteration is performed by the photon array to randomly sample 1 / x photons on average.

5 zeigt ein Bild 500, das unter Verwendung einer Realisierung mit gekachelter verzögerter Schattierung gemäß einer Ausführungsform erzeugt ist. Optional kann das Bild 500 auch im Zusammenhang der vorhergehenden Figuren und/oder einer oder mehreren nachfolgenden Figuren betrachtet werden. Selbst verständlich kann das Bild 500 auch im Zusammenhang einer beliebigen gewünschten Umgebung betrachtet werden. Es sollte ferner beachtet werden, dass die zuvor genannten Definitionen auch während der vorliegenden Beschreibung zutreffen. 5 shows a picture 500 produced using a tiled delayed shading implementation in accordance with one embodiment. Optionally, the picture 500 also be considered in the context of the preceding figures and / or one or more subsequent figures. Of course, the picture can be 500 also be considered in the context of any desired environment. It should also be noted that the definitions above apply during the present description as well.

Das Bild 500 zeigt ein Lagerhaus, in welchem kleine Spalten komplexe, indirekte Pfade für Sonnenlicht am späten Nachmittag aus Fenstern weit rechts erzeugen. Um das Bild 500 zu erzeugen, wurde ein Kachel-Algorithmus eingesetzt, um gestreute indirekte Beleuchtung aus den verfolgten Photonen für diese Szene zu berechnen. Das eingelegte Bild 510 mit nur Beleuchtung zeigt die Wichtigkeit der Bilderzeugung von indirektem Licht für diese Szene, da ein derartiges Bild nicht unterscheidbar ist.The picture 500 shows a warehouse in which small columns create complex, indirect paths for sunlight in the late afternoon from windows far right. To the picture 500 A Tile algorithm was used to generate scattered indirect illumination from the tracked photons for this scene. The inserted picture 510 with only illumination shows the importance of indirect light imaging for this scene because such an image is indistinguishable.

In diversen Ausführungsformen kann ein verzögerter Kachel-Algorithmus als Software (beispielsweise eine CUDA-Realisierung usw.) oder als Hardware realisiert werden. In einer Ausführungsform kann der Kachel-Algorithmus eine Ausgabe einer Photonenspur (beispielsweise in OptiX usw. berechnet) verwenden und kann relevante Photonen an jedem Pixel in Echtzeit ansammeln. Wie angemerkt, hat jedes Photon neben anderen Eigenschaften eine Position und einen Wirkradius in 3D.In various embodiments, a delayed tile algorithm may be implemented as software (eg, a CUDA implementation, etc.) or as hardware. In one embodiment, the tile algorithm may use output of a photon trace (calculated, for example, in OptiX, etc.) and may accumulate relevant photons at each pixel in real time. As noted, each photon has one position and one effective radius in 3D, among other properties.

In einer Ausführungsform kann der Kachel-Algorithmus ausgebildet sein, in drei Stufen zu arbeiten. In einer ersten Stufe kann eine Kopie (oder ein Zeiger auf jedes Photon) jedes Photons in jeder Bildschirm-Raum-Kachel angeordnet werden, die die Projektion einer wirksamen Kugel enthält. Als eine zweite Stufe kann der Algorithmus so wirken, dass über die Pixel in jeder Kachel eine Iteration ausgeführt wird, und für jede Kachel kann der Algorithmus so wirken, dass eine Teilgruppe der Photonen der Kachel ausgewählt wird, aus der eine Schattierungsberechnung erfolgen soll. Für die dritte Stufe kann eine glatte Schattierung an jedem Pixel aus den Werten seiner Nachbarn rekonstruiert werden.In one embodiment, the tile algorithm may be configured to operate in three stages. In a first stage, a copy (or a pointer to each photon) of each photon may be placed in each screen space tile containing the projection of an effective sphere. As a second stage, the algorithm may operate to iterate over the pixels in each tile, and for each tile, the algorithm may act to select a subset of the photons of the tile from which a shading calculation is to be made. For the third level, a smooth shading at each pixel can be reconstructed from the values of its neighbors.

In diversen Ausführungsformen kann der gekachelte verzögerte Schattierungsalgorithmus so ausgebildet sein, dass eine zusammenhängende Ausführung innerhalb einer Vektor/SIMD-Architektur sichergestellt ist, eine Auswahl auf der Grundlage der Tiefe implementiert wird und eine Einteilung in Segmente zur Handhabung von mehr Photonen als in den gemeinsam benutzten Speicher passen, ausgeführt wird, und dass eine effiziente Disponierung möglich ist, wenn unterschiedliche Kacheln eine unterschiedliche Anzahl an Photonen aufweisen.In various embodiments, the tiled delayed shading algorithm may be configured to ensure contiguous execution within a vector / SIMD architecture, to implement selection based on depth, and to divide into segments for handling more photons than in the shared ones Memory fit, running, and that efficient scheduling is possible when different tiles have a different number of photons.

Ferner können in diversen Ausführungsformen zumindest Teile des gekachelten verzögerten Schattierungsalgorithmus direkt in einer GPU (beispielsweise Tiefenaussonderung, usw.) eingerichtet werden. Als eine weitere Option kann der gekachelte verzögerte Schattierungsalgorithmus für eine Echtzeit-Bilderzeugung in Spielen, bei der Erzeugung digitalen Inhalts (DCC) und in CAD-Anwendungen eingesetzt werden. Ferner kann in einer Ausführungsform der gekachelte verzögerte Schattierungsalgorithmus so wirken, dass die Skalierbarkeit der Photonensammlung drastisch ansteigt (beispielsweise zum Erreichen einer Beleuchtung in Filmqualität in interaktiven Anwendungen, usw.).Further, in various embodiments, at least portions of the tiled delayed shading algorithm may be set up directly in a GPU (e.g., depth exclusion, etc.). As another option, the tiled delayed shading algorithm can be used for real-time image generation in games, digital content creation (DCC), and CAD applications. Further, in one embodiment, the tiled delayed shading algorithm may act to dramatically increase the scalability of the photon collection (for example, to achieve movie quality lighting in interactive applications, etc.).

6 zeigt ein anschauliches System 600, in welchem die diversen Architekturen und/oder Funktionen der diversen vorhergehenden Ausführungsformen realisiert werden können. Wie gezeigt, ist ein System 600 bereitgestellt, das mindestens einen zentralen Prozessor 601 aufweist, der mit einem Kommunikationsbus 602 verbunden ist. Der Kommunikationsbus 602 kann unter Anwendung eines beliebigen geeigneten Protokolls realisiert werden, etwa PCI (periphere Komponenten-Verbindung), PCI-Express, AGP (beschleunigter Graphikport), HyperTransport, oder durch ein oder mehrere andere Busprotokolle oder Punkt-Zu-Punkt-Kommunikationsprotokolle. Das System 600 umfasst ferner einen Hauptspeicher 604. In dem Hauptspeicher 604, der die Form eines Speichers mit wahlfreiem Zugriff (RAM) haben kann, sind eine Steuerungslogik (Software) und Daten gespeichert. 6 shows a vivid system 600 in which the various architectures and / or functions of the various preceding embodiments can be realized. As shown, is a system 600 provided, the at least one central processor 601 that is connected to a communication bus 602 connected is. The communication bus 602 can be implemented using any suitable protocol, such as PCI (Peripheral Component Connection), PCI Express, AGP (Accelerated Graphics Port), HyperTransport, or one or more other bus protocols or point-to-point protocols. Communication protocols. The system 600 further comprises a main memory 604 , In the main memory 604 , which may be in the form of a random access memory (RAM), is a control logic (software) and data is stored.

Das System 600 umfasst ferner Eingabegeräte 612, einen Grafikprozessor 606 und eine Anzeige 608, d. h. eine konventionelle CRT (Kathodenstrahlröhre), eine LCD (Flüssigkristallanzeige), LED (lichtemittierende Diode), Plasmaanzeige oder dergleichen. Eine Anwendereingabe kann aus den Eingabegeräten 612, beispielsweise Tastatur, Maus, berührungsempfindliches Feld, Mikrofon und dergleichen, empfangen werden. In einer Ausführungsform kann der Grafikprozessor 606 mehrere Schattierungsprogramme, ein Rastermodul, usw. aufweisen. Jedes der vorhergehenden Module kann in einer einzelnen Halbleiterplattform angeordnet sein, um eine grafische Verarbeitungseinheit (GPU) zu bilden.The system 600 also includes input devices 612 , a graphics processor 606 and an ad 608 That is, a conventional CRT (Cathode Ray Tube), an LCD (Liquid Crystal Display), LED (Light Emitting Diode), Plasma Display or the like. A user input may be from the input devices 612 For example, keyboard, mouse, touch-sensitive panel, microphone and the like can be received. In one embodiment, the graphics processor may 606 have multiple shader programs, a raster module, etc. Each of the foregoing modules may be arranged in a single semiconductor platform to form a graphics processing unit (GPU).

In der vorliegenden Beschreibung bezeichnet eine einzelne Halbleiterplattform eine einzelne alleinstehende halbleiterbasierte integrierte Schaltung oder einen Chip. Es sollte beachtet werden, dass der Begriff einzelne Halbleiterplattform auch Mehr-Chip-Module mit erweiterter Verbindungsstruktur bezeichnen kann, die eine chipinterne Betriebsweise simulieren, und die wesentliche Vorteile gegenüber der Verwendung einer Realisierung mit konventioneller zentraler Recheneinheit (CPU) und Bus bieten. Selbstverständlich können die diversen Module auch separat oder in diversen Kombinationen aus Halbleiterplattformen entsprechend den Bedürfnissen des Anwenders angeordnet sein.In the present specification, a single semiconductor platform refers to a single standalone semiconductor-based integrated circuit or chip. It should be noted that the term single semiconductor platform may also refer to multi-chip modules with advanced interconnect structure that simulate on-chip operation and offer significant advantages over the use of conventional CPU and bus implementation. Of course, the various modules may also be arranged separately or in various combinations of semiconductor platforms according to the needs of the user.

Das System 600 umfasst ferner einen sekundären Speicher 610. Der sekundäre Speicher 610 umfasst beispielsweise ein Festplattenlaufwerk und/oder ein entfernbares Speicherlaufwerk, das etwa ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Kompaktdisketten-Laufwerk, ein Laufwerk für eine digitale Vielseitigkeitsdiskette (DVD), ein Aufzeichnungsgerät, einen Flash-Speicher mit universellem seriellen Bus (USB) repräsentieren kann. Das entfernbare Speicherlaufwerk liest eine entfernbare Speichereinheit in gut bekannter Weise und/oder beschreibt diese.The system 600 further includes a secondary memory 610 , The secondary storage 610 For example, a hard disk drive and / or a removable storage drive, such as a floppy disk drive, a magnetic tape drive, a compact disk drive, a digital versatile floppy disk (DVD) drive, a recorder, a universal serial bus (USB) flash memory, may be included , The removable storage drive reads a removable storage device in a well known manner and / or describes it.

Computerprogramme, oder Computer-Steuerlogikalgorithmen können in dem Hauptspeicher 604 und/oder in dem sekundären Speicher 610 gespeichert sein. Derartige Computerprogramme ermöglichen, wenn sie ausgeführt werden, dass das System 600 diverse Funktionen ausführt. Beispielsweise kann ein Compiler-Programm in dem Hauptspeicher 604 gespeichert sein, das ausgebildet ist, ein Schattierungsprogramm zu untersuchen und eine Kombination von Attribut-Puffern zu aktivieren oder zu deaktivieren. Das Compiler-Programm kann von dem zentralen Prozessor 601 oder dem Grafikprozessor 606 ausgeführt werden. Der Hauptspeicher 604, der Speicher 610 und/oder ein anderer Speicher sind mögliche Beispiele von computerlesbaren Medien.Computer programs, or computer control logic algorithms may reside in main memory 604 and / or in the secondary memory 610 be saved. Such computer programs, when executed, allow the system 600 performs various functions. For example, a compiler program may be in main memory 604 which is configured to examine a shader program and to activate or deactivate a combination of attribute buffers. The compiler program may be from the central processor 601 or the graphics processor 606 be executed. The main memory 604 , the memory 610 and / or another memory are possible examples of computer-readable media.

In einer Ausführungsform können die Architektur und/oder die Funktionen der diversen vorhergehenden Figuren im Zusammenhang mit dem zentralen Prozessor 601, dem Grafikprozessor 606, einer integrierten Schaltung (nicht gezeigt), die zumindest über einen Teil der Fähigkeiten des zentralen Prozessors 601 und des Grafikprozessors 606 verfügt, einem Chipsatz (das heißt einer Gruppe aus integrierten Schaltungen, die als Einheit zum Ausführen zugehöriger Funktionen gestaltet ist und so verkauft wird, usw.), und/oder einer anderen integrierten Schaltung für diesen Zweck realisiert werden.In one embodiment, the architecture and / or functions of the various preceding figures may be related to the central processor 601 , the graphics processor 606 , an integrated circuit (not shown) that performs at least part of the capabilities of the central processor 601 and the graphics processor 606 has realized a chipset (that is, a group of integrated circuits designed and sold as a unit for performing related functions, etc.) and / or other integrated circuit for this purpose.

Ferner können die Architektur und/oder die Funktion der diversen vorhergehenden Figuren im Rahmen eines allgemeinen Computersystems, eines Systems aus Leiterplatten, eines Spielekonsolensystems, das für Unterhaltungszwecke gedacht ist, eines anwendungsspezifischen Systems und/oder eines beliebigen gewünschten Systems realisiert werden. Beispielsweise kann das System 600 die Form eines Tischrechners, eines tragbaren Rechners, eines Dienstleister-Rechners, eines Arbeitplatzrechners, von Spielekonsolen, eines eingebetteten Systems und/oder einer beliebigen anderen Art an Logik annehmen. Des Weiteren kann das System 600 auch die Form diverser anderer Einrichtungen annehmen, wozu, ohne Einschränkung, gehört eine Einrichtung in Form eines persönlichen digitalen Assistenten (PDA), eine Einrichtung in Form eines Mobiltelefons, ein Fernsehgerät, usw.Further, the architecture and / or function of the various preceding figures may be practiced within a general computer system, a system of circuit boards, a gaming console system intended for entertainment purposes, an application specific system, and / or any desired system. For example, the system can 600 take the form of a desktop computer, a portable computer, a service provider computer, a workstation computer, game consoles, an embedded system, and / or any other type of logic. Furthermore, the system can 600 It may take the form of various other facilities including, but not limited to, personal digital assistant (PDA) equipment, mobile phone device, television set, etc.

Obwohl dies nicht gezeigt ist, kann das System 600 mit einem Netzwerk (beispielsweise einem Telekommunikationsnetzwerk, einem Nahbereichsnetzwerk (LAN), einem drahtlosen Netzwerk, einem Weitbereichsnetzwerk (WAN), etwa dem Internet, einem Gerät-zu-Gerät-Netzwerk, einem Kabelnetzwerk oder dergleichen) zu Kommunikationszwecken verbunden sein.Although not shown, the system can 600 to a network (e.g., a telecommunications network, a local area network (LAN), a wireless network, a wide area network (WAN), such as the Internet, a device-to-device network, a cable network, or the like) for communication purposes.

Obwohl diverse Ausführungsformen zuvor beschrieben worden sind, ist zu beachten, dass diese als Beispiel und nicht als Beschränkung präsentiert sind. Somit sollten die Breite und der Schutzbereich einer bevorzugten Ausführungsform nicht durch eben beschriebene anschauliche Ausführungsformen beschränkt sein, sondern sie sollte nur in Übereinstimmung mit den folgenden Patentansprüchen und ihren Äquivalenten definiert sein.Although various embodiments have been described above, it should be understood that these are presented by way of example and not limitation. Thus, the breadth and scope of a preferred embodiment should not be limited by the just described illustrative embodiments but it should be defined only in accordance with the following claims and their equivalents.

ZITATE ENTHALTEN IN DER BESCHREIBUNG QUOTES INCLUDE IN THE DESCRIPTION

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.This list of the documents listed by the applicant has been generated automatically and is included solely for the better information of the reader. The list is not part of the German patent or utility model application. The DPMA assumes no liability for any errors or omissions.

Zitierte Nicht-PatentliteraturCited non-patent literature

  • IEEE 754-2008 [0040] IEEE 754-2008 [0040]

Claims (20)

Ein Verfahren, aufweisend: Ermitteln mehrerer Photonen, die zu mindestens einer Szene gehören; Ermitteln mehrerer Bildschirm-Raum-Kacheln, die zu der mindestens einen Szene gehören; Ermitteln jeder der mehreren Bildschirm-Raum-Kacheln, die von einer Projektion einer wirksamen Kugel für jedes der mehreren Photonen beeinflusst werden kann; Auswählen mindestens einer Teilgruppe an Photonen, die zu jeder der Bildschirm-Raum-Kacheln gehören, aus der eine Schattierung zu berechnen ist; und Berechnen einer Schattierung für die mindestens eine Szene unter Verwendung der ausgewählten mindestens einen Teilgruppe an Photonen.A method comprising: Determining multiple photons belonging to at least one scene; Determining a plurality of screen space tiles associated with the at least one scene; Determining each of the plurality of screen space tiles that may be affected by a projection of an effective sphere for each of the plurality of photons; Selecting at least one subset of photons associated with each of the screen space tiles to be shaded; and Calculating a shade for the at least one scene using the selected at least one subset of photons. Das Verfahren nach Anspruch 1, wobei die Berechnung der Schattierung umfasst: Rekonstruieren einer glatten Schattierung an jedem Pixel, das zu der mindestens einen Szene gehört.The method of claim 1, wherein the calculating the shading comprises: reconstructing a smooth shading at each pixel associated with the at least one scene. Das Verfahren nach Anspruch 1, wobei die Berechnung der Schattierung umfasst: Rekonstruieren einer glatten Schattierung an jedem Pixel, das zu der mindestens einen Szene gehört, aus Nachbarpixel-Werten.The method of claim 1, wherein the calculating the shading comprises: reconstructing a smooth shading at each pixel associated with the at least one scene from neighboring pixel values. Das Verfahren nach Anspruch 1, wobei Berechnung der Schattierung eine Verwendung eines lateralen Filters umfasst.The method of claim 1, wherein calculating the shading comprises using a lateral filter. Das Verfahren nach Anspruch 1, wobei Auswählen der mindestens einen Teilgruppe an Photonen, die zu jeder der Bildschirm-Raum-Kacheln gehört, aus der eine Schattierung zu berechnen ist, umfasst: Durchführen einer Iteration über alle Pixel in jeder der mehreren Bildschirm-Raum-Kacheln.The method of claim 1, wherein selecting the at least one subset of photons associated with each of the screen space tiles from which shading is to be calculated comprises performing an iteration over all the pixels in each of the plurality of screen spaces. tiles. Das Verfahren nach Anspruch 1, wobei Auswählen der mindestens einen Teilgruppe an Photonen, die mit jeder der Bildschirm-Raum-Kacheln verknüpft ist, aus der eine Schattierung zu berechnen ist, umfasst: Ausführen einer Iteration über alle Pixel in jeder der mehreren Bildschirm-Raum-Kacheln und Auswählen einer Teilgruppe an Photonen in jeder der Bildschirm-Raum-Kacheln, aus der eine Schattierung zu berechnen ist.The method of claim 1, wherein selecting the at least one subset of photons associated with each of the screen space tiles from which shading is to be calculated comprises: performing an iteration over all the pixels in each of the plurality of screen spaces Tiles and selects a subset of photons in each of the screen space tiles from which shading is to be calculated. Das Verfahren nach Anspruch 1, wobei Auswählen mindestens einer Teilgruppe an Photonen, die mit jeder der Bildschirm-Raum-Kacheln verknüpft ist, aus der eine Schattierung zu berechnen ist, umfasst: Auswählen aller Photonen, die zu jeder der Bildschirm-Raum-Kacheln gehören.The method of claim 1, wherein selecting at least one subset of photons associated with each of the screen space tiles from which shading is to be calculated comprises: selecting all photons associated with each of the screen space tiles , Das Verfahren nach Anspruch 1, wobei ein stochastischer Prozess verwendet wird, um die mindestens eine Teilgruppe an Photonen auszuwählen, die zu jeder der Bildschirm-Raum-Kacheln gehört, aus der eine Schattierung zu berechnen ist.The method of claim 1, wherein a stochastic process is used to select the at least one subset of photons associated with each of the screen space tiles from which shading is to be calculated. Das Verfahren nach Anspruch 1, wobei ein Verschachtelungsprozess verwendet wird, um die mindestens eine Teilgruppe an Photonen auszuwählen, die zu jeder der Bildschirm-Raum-Kacheln gehört, aus der eine Schattierung zu berechnen ist.The method of claim 1, wherein an interleaving process is used to select the at least one subset of photons associated with each of the screen space tiles from which shading is to be calculated. Das Verfahren nach Anspruch 1, das ferner umfasst: Einfügen einer Kopie jedes Photons in jede Bildschirm-Raum-Kachel, die eine Projektion einer wirksamen Kugel eines bestimmten Photons enthalten würde.The method of claim 1, further comprising: inserting a copy of each photon into each screen space tile that would contain a projection of an effective sphere of a particular photon. Das Verfahren nach Anspruch 1, das ferner umfasst: Einfügen einer Kopie jedes Photons in Behälter, die den mehreren Bildschirm-Raum-Kacheln entsprechen, die das Photonen beeinflussen kann.The method of claim 1, further comprising: inserting a copy of each photon into containers corresponding to the plurality of screen space tiles that may affect the photon. Das Verfahren nach Anspruch 1, das ferner umfasst: Einfügen eines Zeigers auf jedes Photon in jeder Bildschirm-Raum-Kachel, die eine Projektion einer wirksamen Kugel eines bestimmten Photons enthalten kann.The method of claim 1, further comprising: inserting a pointer to each photon in each screen space tile that may contain a projection of an effective sphere of a particular photon. Das Verfahren nach Anspruch 1, das ferner umfasst: Einfügen einer Kopie jedes Photons oder eines Zeigers auf jedes Photon in jeder Bildschirm-Raum-Kachel, die eine Projektion einer wirksamen Kugel des Photons enthalten kann.The method of claim 1, further comprising: inserting a copy of each photon or a pointer to each photon in each screen space tile that may contain a projection of an effective sphere of the photon. Das Verfahren nach Anspruch 1, das ferner umfasst: Ermitteln eines oder mehrerer zu den Bildschirm-Raum-Kacheln gehörender Segmente an Photonen für die Verarbeitung. The method of claim 1, further comprising: determining one or more segments of photons for processing associated with the screen space tiles. Das Verfahren nach Anspruch 1, das ferner umfasst: Auswählen von Photonen, die zu den mehreren Bildschirm-Raum-Kacheln gehören, und die einen vordefinierten Tiefenbereich, der mit den mehreren Bildschirm-Raum-Kacheln verknüpft ist, nicht schneiden.The method of claim 1, further comprising: selecting photons associated with the plurality of screen space tiles that do not intersect a predefined depth area associated with the plurality of screen space tiles. Das Verfahren nach Anspruch 1, wobei die mehreren Photonen, die zu der mindestens einen Szene gehören, mit einem Photonenabbildungsprozess verknüpft sind.The method of claim 1, wherein the plurality of photons associated with the at least one scene are associated with a photon mapping process. Das Verfahren nach Anspruch 1, wobei die mehreren Bildschirm-Raum-Kacheln, die zu der mindestens einen Szene gehören, mehrere Pixel enthalten.The method of claim 1, wherein the plurality of screen space tiles associated with the at least one scene include a plurality of pixels. Das Verfahren nach Anspruch 1, das ferner umfasst: Durchführen eines Rendering für die mindestens eine Szene.The method of claim 1, further comprising: performing a rendering for the at least one scene. Ein nicht flüchtiges („non-transitory”) computerlesbares Speichermedium, das Befehle speichert, die, wenn sie von einem Prozessor ausgeführt werden, den Prozessor veranlassen, Schritte auszuführen, aufweisend: Ermitteln mehrerer Photonen, die zu mindestens einer Szene gehören; Ermitteln mehrerer Bildschirm-Raum-Kacheln, die zu der mindestens einen Szene gehören; Ermitteln jeder der mehreren Bildschirm-Raum-Kacheln, die von einer Projektion einer wirksamen Kugel für jedes der mehreren Photonen beeinflusst werden kann; Auswählen mindestens einer Teilgruppe an Photonen, die zu jeder der Bildschirm-Raum-Kacheln gehört, aus der eine Schattierung zu berechnen ist; und Berechnen einer Schattierung für die mindestens eine Szene unter Verwendung der ausgewählten mindestens einen Teilgruppe an Photonen.A non-transitory computer-readable storage medium storing instructions that, when executed by a processor, cause the processor to perform steps comprising: Determining multiple photons belonging to at least one scene; Determining a plurality of screen space tiles associated with the at least one scene; Determining each of the plurality of screen space tiles that may be affected by a projection of an effective sphere for each of the plurality of photons; Selecting at least one subset of photons associated with each of the screen space tiles from which shading is to be calculated; and Calculating a shade for the at least one scene using the selected at least one subset of photons. Ein System, aufweisend: ein Speichersystem; und ein oder mehrere Verarbeitungskerne, die mit dem Speichersystem verbunden sind und die jeweils ausgebildet sind, um: mehrere Photonen zu ermitteln, die zu mindestens einer Szene gehören; mehrere Bildschirm-Raum-Kacheln zu ermitteln, die zu der mindestens einen Szene gehören; jede der mehreren Bildschirm-Raum-Kacheln zu ermitteln, die von einer Projektion einer wirksamen Kugel für jedes der mehreren Photonen beeinflusst werden kann; mindestens eine Teilgruppe an Photonen auszuwählen, die zu jeder der Bildschirm-Raum-Kacheln gehört, aus der eine Schattierung zu berechnen ist; und eine Schattierung für die mindestens eine Szene unter Verwendung der ausgewählten mindestens einen Teilgruppe an Photonen zu berechnen.A system comprising: a storage system; and one or more processing cores associated with the storage system and each configured to: identify multiple photons belonging to at least one scene; determine multiple screen room tiles belonging to the at least one scene; determine each of the plurality of screen space tiles that may be affected by an effective ball projection for each of the plurality of photons; select at least one subset of photons associated with each of the screen space tiles from which shading is to be calculated; and calculate a shade for the at least one scene using the selected at least one subset of photons.
DE201310113714 2012-12-21 2013-12-09 Method for performing tiled shading of scene in association with graphics processing application, involves selecting subset of photons of determined screen space tiles belonging to scene Pending DE102013113714A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201261745264P 2012-12-21 2012-12-21
US61/745,264 2012-12-21
US14/015,955 2013-08-30
US14/015,955 US9305324B2 (en) 2012-12-21 2013-08-30 System, method, and computer program product for tiled deferred shading

Publications (1)

Publication Number Publication Date
DE102013113714A1 true DE102013113714A1 (en) 2014-06-26

Family

ID=50878862

Family Applications (1)

Application Number Title Priority Date Filing Date
DE201310113714 Pending DE102013113714A1 (en) 2012-12-21 2013-12-09 Method for performing tiled shading of scene in association with graphics processing application, involves selecting subset of photons of determined screen space tiles belonging to scene

Country Status (1)

Country Link
DE (1) DE102013113714A1 (en)

Non-Patent Citations (1)

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

Similar Documents

Publication Publication Date Title
DE102013114279B4 (en) Multiscan surface processing using a single scan
DE102018114286A1 (en) Perform a traversal stack compression
DE102018132468A1 (en) MULTI-GPU FRAME RENDERING
DE102015113797B4 (en) Relative encoding for a block-based bounding volume hierarchy
DE102013114090B4 (en) Conservative screening of primitives using an error term
DE102018127647A1 (en) SYSTEMS AND METHOD FOR TRAINING NEURONAL NETWORKS ON REGRESSION WITHOUT REFERENCE DATA TRAINING PATTERNS
DE102017124573A1 (en) SYSTEMS AND METHOD FOR CRITING NEURONAL NETWORKS FOR AN OPERATIONAL EFFICIENT CONCLUSION
DE102013017639B4 (en) Caching of adaptively sized cache tiles in a unified L2 cache with surface compression
DE102018113845A1 (en) Systems and methods for training neural networks with sparse data
DE102013222685B4 (en) System, method and computer program product for sampling a hierarchical depth map
DE102015113240A1 (en) SYSTEM, METHOD AND COMPUTER PROGRAM PRODUCT FOR SHADING USING A DYNAMIC OBJECT ROOM GATE
DE102020124932A1 (en) Apparatus and method for real-time graphics processing using local and cloud-based graphics processing resources
DE102013020810A1 (en) Efficient super-scanning with shading strands per pixel
US9305324B2 (en) System, method, and computer program product for tiled deferred shading
DE102018101030A1 (en) Filter image data using a neutral network
DE102013114373A1 (en) Consistent vertex snap-in for variable-resolution rendering
DE102016122297A1 (en) Multi-pass rendering in a screen space pipeline
DE102013022257A1 (en) Programmable mixing in multi-strand processing units
DE102013218594A1 (en) System, method and computer program product for the parallel reconstruction of a sampled suffix array
DE102017109472A1 (en) STEREO MULTIPLE PROJECTION IMPLEMENTED BY USING A GRAPHIC PROCESSING PIPELINE
DE112017003932T5 (en) Mechanism for accelerating graphics workloads in a multi-core computing architecture
DE102013018445A1 (en) Defining a subordinate imaging state in an upstream shading entity
DE102011011641A1 (en) A system, method and computer program product for rendering pixels having at least one semi-transparent surface
DE102018128699A1 (en) Adjusting an angular sampling rate during rendering using gaze information
DE102019101871A1 (en) Method and apparatus for obtaining scan positions from texturing operations

Legal Events

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

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

Representative=s name: DILG HAEUSLER SCHINDELMANN PATENTANWALTSGESELL, DE

R082 Change of representative

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

R082 Change of representative

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

R016 Response to examination communication