DE112014002469B4 - System and method for generating images for a near-eye light field display - Google Patents
System and method for generating images for a near-eye light field display Download PDFInfo
- Publication number
- DE112014002469B4 DE112014002469B4 DE112014002469.4T DE112014002469T DE112014002469B4 DE 112014002469 B4 DE112014002469 B4 DE 112014002469B4 DE 112014002469 T DE112014002469 T DE 112014002469T DE 112014002469 B4 DE112014002469 B4 DE 112014002469B4
- Authority
- DE
- Germany
- Prior art keywords
- display
- micro
- image
- pixel
- procedure
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/04—Texture mapping
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B27/00—Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
- G02B27/01—Head-up displays
- G02B27/017—Head mounted
- G02B27/0172—Head mounted characterised by optical features
-
- G—PHYSICS
- G02—OPTICS
- G02B—OPTICAL ELEMENTS, SYSTEMS OR APPARATUS
- G02B3/00—Simple or compound lenses
- G02B3/0006—Arrays
- G02B3/0037—Arrays characterized by the distribution or form of lenses
- G02B3/0056—Arrays characterized by the distribution or form of lenses arranged along two different directions in a plane, e.g. honeycomb arrangement of lenses
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N13/00—Stereoscopic video systems; Multi-view video systems; Details thereof
- H04N13/30—Image reproducers
- H04N13/332—Displays for viewing with the aid of special glasses or head-mounted displays [HMD]
- H04N13/344—Displays for viewing with the aid of special glasses or head-mounted displays [HMD] with head-mounted left-right displays
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Optics & Photonics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Testing, Inspecting, Measuring Of Stereoscopic Televisions And Televisions (AREA)
- Controls And Circuits For Display Device (AREA)
Abstract
Ein Verfahren (100) aufweisend:Identifizieren (105) eines Strahls, der durch ein Pixel einer Mikro-Anzeige (250) und eineMikrolinse (253) einer augennahen Lichtfeldanzeigeeinrichtung (200) definiert ist; Erzeugen von Abbildungskoordinaten, die dem Pixel entsprechen, durch Schneiden (100) des Strahls mit einer zweidimensionalen virtuellen Anzeigeebene (210) wobei Erzeugen der Abbildungskoordinaten ein Ermitteln einer Verschiebung eines optischen Mittelpunkts der Mikrolinse (253) relativ zu einem Referenzpunkt auf der Mikro-Anzeige (250) aufweist; undBerechnen (115) einer Farbe für das Pixel auf der Grundlage der Abbildungskoordinaten.A method (100) comprising: identifying (105) a ray defined by a pixel of a micro-display (250) and a micro-lens (253) of a near-eye light field display device (200); Generating imaging coordinates corresponding to the pixel by intersecting (100) the beam with a two-dimensional virtual display plane (210), wherein generating the imaging coordinates involves determining a displacement of an optical center of the microlens (253) relative to a reference point on the microdisplay ( 250); and calculating (115) a color for the pixel based on the mapping coordinates.
Description
GEBIET DER ERFINDUNGFIELD OF THE INVENTION
Die vorliegende Erfindung betrifft die Erzeugung von Bildern und betrifft insbesondere die Erzeugung von Bildern für eine augennahe Lichtfeldanzeige.The present invention relates to the generation of images and more particularly relates to the generation of images for a near-eye light field display.
HINTERGRUNDBACKGROUND
Augennahe Anzeigen (NEDs) schließen am Kopf montierte Anzeigen (HMDs) mit ein, die Bilder direkt in die Augen eines Betrachters projizieren können. Derartige Anzeigen können die begrenzte Bildschirmgröße, die durch Formfaktoren anderer mobiler Anzeigen vorgegeben sind, überwinden, indem virtuelle großformatige Anzeigeoberflächen zusammengesetzt werden, oder derartige Anzeigen können für virtuelle oder erweiterte Realitätsanwendungen eingesetzt werden. Eine Art einer NED ist eine augennahe Lichtfeldanzeige, die als eine dünne, am Kopf montierte Anzeige mit geringem Gewicht eingerichtet werden kann, die ein Paar aus Mikrolinsen aufweist, die zwischen einem Auge des Betrachters und einem entsprechenden Paar aus Mikro-Anzeigen vorgesehen sind. Eine derartige augennahe Lichtfeldanzeige ist in der Lage, Lichtfelder, die virtuellen Objekten innerhalb eines natürlichen Akkomodationsbereichs eines Betrachters entsprechen, zu synthetisieren.Near-Eye Displays (NEDs) include head-mounted displays (HMDs) that can project images directly into a viewer's eyes. Such displays may overcome the screen size limitations dictated by form factors of other mobile displays by compositing virtual large format display surfaces, or such displays may be deployed for virtual or augmented reality applications. One type of NED is a near-eye light field display that can be implemented as a thin, lightweight head-mounted display that has a pair of microlenses positioned between a viewer's eye and a corresponding pair of microdisplays. Such a near-eye light field display is capable of synthesizing light fields corresponding to virtual objects within a viewer's natural range of accommodation.
Die Bilder, die unter Anwendung der augennahen Lichtfeldanzeige betrachtet werden, weisen ein Array aus elementaren Bildern auf, wobei jedes elementare Bild einer der Mikrolinsen in dem Mikrolinsen-Array entspricht. Die von den Mikro-Anzeigen dargestellten Bilder unterscheiden sich daher wesentlich von Bildern, die durch konventionelle Anzeigeeinrichtungen angezeigt werden. Folglich kann ein Inhalt (beispielsweise Bilder, Filme und Videospiele), die für konventionelle zweidimensionale Anzeigeeinrichtungen und stereoskopische Anzeigeeinrichtungen (beispielsweise 3DTV) entwickelt wurden, nicht direkt unter Verwendung der augennahen Lichtfeldanzeige angezeigt werden. Es besteht daher Bedarf, diese Problematik und/oder andere Probleme, die mit dem Stand der Technik einhergehen, aufzugreifen.The images viewed using the near-eye light field display comprise an array of elemental images, each elemental image corresponding to one of the microlenses in the microlens array. The images displayed by the microdisplays therefore differ significantly from images displayed by conventional display devices. Consequently, content (e.g., images, movies, and video games) designed for conventional two-dimensional displays and stereoscopic displays (e.g., 3DTV) cannot be directly displayed using the near-eye light field display. There is therefore a need to address this issue and/or other issues associated with the prior art.
Die
ÜBERBLICKOVERVIEW
Es werden ein System gemäß Anspruch 15, Verfahren nach Anspruch 1 und Speichermedium nach Anspruch 18 zur Erzeugung von Bildern für eine augennahe Lichtfeldanzeige bereitgestellt. Ein Strahl, der durch ein Pixel bzw. Bildelement einer Mikro-Anzeige und eine optische Vorrichtung einer augennahen Lichtfeldanzeigeeinrichtung definiert ist, wird identifiziert (ermittelt) und der Strahl wird mit einer zweidimensionalen virtuellen Anzeigeebene geschnitten, um Kartenkoordinaten bzw. Abbildungskoordinaten zu erzeugen, die dem Pixel entsprechen. Es wird eine Farbe für das Pixel auf der Grundlage der Abbildungskoordinaten berechnet. Die optische Vorrichtung der augennahen Lichtfeldanzeigeeinrichtung kann beispielsweise eine Mikrolinse eines Mikrolinsen-Arrays sein, das zwischen einem Betrachter und einer emittierenden Mikro-Anzeige angeordnet ist, oder ein Lichtpunkt eines Lichtpunkte-Arrays sein, das hinter einer durchlässigen Mikro-Anzeige relativ zu dem Betrachter angeordnet ist.There is provided a system according to claim 15, a method according to
Figurenlistecharacter list
-
1 zeigt ein Flussdiagramm eines Verfahrens zur Erzeugung von Bildern für eine augennahe Lichtfeldanzeige gemäß einer Ausführungsform.1 12 shows a flow diagram of a method for generating images for a near-eye light field display according to an embodiment. -
2A zeigt ein Auge eines Betrachters und eine augennahe Lichtfeldanzeige gemäß einer Ausführungsform.2A 12 shows an eye of a viewer and a near-eye light field display according to an embodiment. -
2B zeigt eine augennahe Brillen-Lichtfeldanzeige gemäß einer Ausführungsform.2 B 12 shows a near-eye goggle light field display according to one embodiment. -
2C zeigt eine weitere augennahe Brillen-Lichtfeldanzeige gemäß einer Ausführungsform.2C 12 shows another near-eye goggle light field display according to an embodiment. -
3A zeigt ein bestehendes Bild, das zur Anzeige durch eine augennahe Lichtfeldanzeigeeinrichtung gemäß einer Ausführungsform zu verarbeiten ist.3A FIG. 12 shows an existing image to be processed for display by a near-eye light field display according to one embodiment. -
3B zeigt ein entsprechendes Mikro-Anzeigebild mit einem elementaren Bild, das jeder Mikrolinse entspricht, gemäß einer Ausführungsform.3B 12 shows a corresponding micro-display image with an elementary image corresponding to each micro-lens, according to an embodiment. -
3C zeigt das Bild der Mikro-Anzeige aus3B , wenn es gemäß einer Ausführungsform durch ein Mikrolinsen-Array betrachtet wird.3C shows the picture of the micro display3B , when viewed through a microlens array, according to one embodiment. -
3D zeigt ein elementares Bild, das ohne Bildfehlerbehebung erzeugt ist, und ein elementares Bild, das mit Bildfehlerbehebung erzeugt ist, gemäß einer Ausführungsform.3D FIG. 12 shows an elementary image generated without image defect removal and an elementary image generated with image defect removal, according to one embodiment. -
3E zeigt ein weiteres bestehendes Bild, das für die Anzeige mittels einer augennahen Lichtfeldanzeigeeinrichtung gemäß einer Ausführungsform zu verarbeiten ist.3E FIG. 12 shows another existing image to be processed for display by a near-eye light field display according to one embodiment. -
3F zeigt ein Bild einer Mikro-Anzeige mit einem elementaren Bild, das jedem Lichtpunkt in einem Lichtpunkte-Array entspricht, gemäß einer Ausführungsform.3F FIG. 12 shows an image of a micro-display with an elementary image corresponding to each light spot in a light spot array, according to an embodiment. -
4 zeigt eine Parallelverarbeitungseinheit gemäß einer Ausführungsform;4 Figure 12 shows a parallel processing unit according to one embodiment; -
5A zeigt einen allgemeinen Verarbeitungs-Cluster der Parallelverarbeitungseinheit aus4 gemäß einer Ausführungsform.5A Figure 12 shows a general processing cluster of the parallel processing unit4 according to one embodiment. -
5B zeigt eine Partitionseinheit der Parallelverarbeitungseinheit aus4 gemäß einer Ausführungsform.5B shows a partition unit of the parallel processing unit4 according to one embodiment. -
6A zeigt den Datenstrom-Multiprozessor aus5A gemäß einer Ausführungsform.6A shows the data stream multiprocessor5A according to one embodiment. -
6B zeigt ein Flussdiagramm eines Verfahrens zur Erzeugung von Bildern für die augennahen Lichtfeldanzeigeeinrichtungen der2A ,2D und2C gemäß einer Ausführungsform.6B FIG. 12 shows a flow chart of a method for generating images for the near-eye light field displays of FIG2A ,2D and2C according to one embodiment. -
7 zeigt ein anschauliches Computersystem, in welchem die diversen Architekturen und/oder Funktionen der diversen vorhergehenden Ausführungsformen umgesetzt werden können.7 Figure 1 shows an illustrative computer system in which the various architectures and/or functions of the various previous embodiments may be implemented.
DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION
Es wird nunmehr detailliert auf die diversen Ausführungsformen der vorliegenden Offenbarung verwiesen, von denen Beispiele in den begleitenden Zeichnungen gezeigt sind. Obwohl eine Beschreibung in Verbindung mit diesen Ausführungsformen erfolgt, ist zu beachten, dass nicht beabsichtigt ist, die Offenbarung auf diese Ausführungsformen einzuschränken. Vielmehr beabsichtigt die Offenbarung, Alternativen, Modifizierungen und Äquivalente abzudecken, die innerhalb des Grundgedankens und des Schutzbereichs der Offenbarung liegen, wie sie durch die angefügten Patentansprüche definiert ist. Ferner sind in der folgenden detaillierten Beschreibung der vorliegenden Offenbarung zahlreiche spezielle Details angegeben, um ein gründlicheres Verständnis der vorliegenden Offenbarung zu ermöglichen. Es ist jedoch zu beachten, dass die vorliegende Offenbarung ohne diese speziellen Details in die Praxis umgesetzt werden kann. In anderen Fällen sind gut bekannte Verfahren, Prozeduren, Komponenten und Schaltungen nicht detailliert beschrieben, um Aspekte der vorliegenden Offenbarung nicht in unnötiger Weise zu verdunkeln.Reference will now be made in detail to the various embodiments of the present disclosure, examples of which are shown in the accompanying drawings. Although description will be made in connection with these embodiments, it should be understood that the disclosure is not intended to be limited to these embodiments. On the contrary, the disclosure is intended to cover alternatives, modifications, and equivalents, which may be included within the spirit and scope of the disclosure as defined by the appended claims. Furthermore, in the following detailed description of the present disclosure, numerous specific details are set forth in order to provide a more thorough understanding of the present disclosure. However, it should be noted that the present disclosure may be practiced without these specific details. In other instances, well known methods, procedures, components, and circuits have not been described in detail as not to unnecessarily obscure aspects of the present disclosure.
Einige Teile der folgenden detaillierten Beschreibungen sind in Begriffen von Prozeduren, Logikblöcken, Verarbeitung und anderen symbolischen Darstellungen von Operationen an Datenbits innerhalb eines Computerspeichers dargestellt. Diese Beschreibungen und Darstellungen sind die Mittel, die vom Fachmann der Datenverarbeitung verwendet werden, um in höchst effizienter Weise den Inhalt seiner Arbeit anderen Fachleuten zu vermitteln. In der vorliegenden Anmeldung wird eine Prozedur, ein Logikblock, ein Prozess oder dergleichen als eine selbstkonsistente Abfolge von Schritten oder Befehlen, die zu einem gewünschten Ergebnis führen, verstanden. Diese Schritte sind solche Schritte, die physikalische Verarbeitungen von physikalischen Größen verwenden. Für gewöhnlich, ohne dass dies jedoch erforderlich ist, nehmen diese Größen die Form elektrischer oder magnetischer Signale an, die in einem Computersystem gespeichert, übertragen, kombiniert, verglichen oder anderweitig verarbeitet werden können. Es hat sich gelegentlich als bequem erwiesen, insbesondere aus Gründen der üblichen Verwendung, diese Signale als Transaktionen, Bits, Werte, Elemente, Symbole, Zeichen, Abtastwerte, Pixel oder dergleichen zu bezeichnen.Some portions of the detailed descriptions that follow are presented in terms of procedures, logic blocks, processing, and other symbolic representations of operations on data bits within computer memory. These descriptions and representations are the means used by those skilled in the data processing arts to most effectively convey the substance of their work to others skilled in the art. In the present application, a procedure, logic block, process or the like is understood to be a self-consistent sequence of steps or instructions leading to a desired result. These steps are those using physical manipulations of physical quantities. Usually, but not required, these quantities take the form of electrical or magnetic signals capable of being stored, transmitted, combined, compared, or otherwise manipulated in a computer system. It has proven convenient at times, particularly for reasons of common usage, to refer to these signals as transactions, bits, values, elements, symbols, characters, samples, pixels, or the like.
Es sollte jedoch bedacht werden, dass alle diese und ähnliche Begriffe mit den geeigneten physikalischen Größen in Verbindung zu bringen sind und lediglich bequeme Namen darstellen, die diesen Größen verliehen werden. Sofern nicht aus den folgenden Erläuterungen dies anders hervorgeht, ist zu beachten, dass in der vorliegenden Offenbarung durchgängig Erläuterungen unter Verwendung von Begriffen, etwa „anzeigen“, „erzeugen“, „produzieren“, „berechnen“, „ermitteln“, „strahlen“, „emittieren“, „abschwächen“, „modulieren“, „senden bzw. übertragen“, „empfangen“ oder dergleichen, Aktionen und Prozesse (beispielsweise Flussdiagramme 100 aus
Ausführungsformen, die hierin beschrieben sind, können im allgemeinen Zusammenhang von computerausführbaren Befehlen erläutert werden, die in einer gewissen Form eines computerlesbaren Speichermediums enthalten sind, etwa Programmmodule, die von einem oder mehreren Computern oder anderen Einrichtungen ausgeführt werden. Beispielsweise umfassen, ohne einschränkend zu sein, computerlesbare Speichermedien nicht-flüchtige computerlesbare Speichermedien und Kommunikationsmedien; nicht-flüchtige computerlesbare Medien umfassen alle computerlesbaren Medien mit Ausnahme eines flüchtigen, sich ausbreitenden Signals. Generell umfassen Programmmodule Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., die spezielle Aufgaben ausführen oder spezielle abstrakte Datentypen implementieren. Die Funktion der Programmmodule kann kombiniert oder verteilt sein, wie dies in diversen Ausführungsformen gewünscht ist.Embodiments described herein may be discussed in the general context of computer-executable instructions embodied on some form of computer-readable storage medium, such as program modules, being executed by one or more computers or other devices. For example, without limitation, computer-readable storage media includes non-transitory computer-readable storage media and communications media; non-transitory computer-readable media includes any computer-readable media other than a transient, propagated signal. In general, program modules include routines, programs, objects, components, data structures, etc. that perform specific tasks or implement specific abstract data types. The function of the program modules can be combined or distributed as desired in various embodiments.
Computerspeichermedien schließen flüchtige und nicht-flüchtige, entfernbare und stationäre Medien ein, die in einem beliebigen Verfahren oder einer beliebigen Technologie zur Speicherung von Information implementiert sind, etwa als computerlesbare Befehle, Datenstrukturen, Programmmodule oder andere Daten. Computerspeichermedien schließen mit ein, ohne darauf eingeschränkt zu sein, einen Speicher mit wahlfreiem Zugriff (RAM), Nur-Lese-Speicher (ROM), elektrisch löschbare programmierbare ROM (EEPROM), Flash-Speicher oder andere Speichertechnologien, Kompaktdisketten-ROM (CD-ROM), digitale Vielseitigkeitsdisketten (DVD) oder andere optische Speicher, magnetische Kassetten, Magnetbandspeicher oder magnetische Plattenspeicher oder andere magnetische Speichereinrichtungen oder ein anderes Medium, das verwendet werden kann, um die gewünschte Information zu speichern, und auf das zugegriffen werden kann, um diese Information abzurufen.Computer storage media include volatile and non-volatile, removable and stationary media implemented in any method or technology for storage of information, such as computer-readable instructions, data structures, program modules, or other data. Computer storage media includes, but is not limited to, random access memory (RAM), read only memory (ROM), electrically erasable programmable ROM (EEPROM), flash memory or other storage technology, compact disk ROM (CD ROM), digital versatile disks (DVD), or other optical storage, magnetic cartridge, magnetic tape storage, or magnetic disk storage, or other magnetic storage device, or other medium that can be used to store and be accessed to store the desired information to retrieve information.
Kommunikationsmedien können computerausführbare Befehle, Datenstrukturen und Programmmodule verkörpern und schließen beliebige Informationsbereitstellungsmedien mit ein. Beispielsweise, ohne einschränkend zu sein, schließen Kommunikationsmedien verdrahtete Medien, etwa ein verdrahtetes Netzwerk oder eine direkt verdrahtete Verbindung, und drahtlose Medien, etwa akustische, Hochfrequenz-(HF), Infrarot- oder andere drahtlose Medien mit ein. Kombinationen von beliebigen der zuvor genannten Komponenten können ebenfalls in den Bereich der computerlesbare Medien mit eingeschlossen werden.Communication media may embody computer-executable instructions, data structures, and program modules, and includes any information delivery media. For example, without limitation, communication media includes wired media, such as a wired network or direct-wired connection, and wireless media, such as acoustic, radio frequency (RF), infrared, or other wireless media. Combinations of any of the above components may also be included within the scope of computer-readable media.
Eine augennahe Lichtfeldanzeige erlaubt es einem Anwender, der eine brillenartige Vorrichtung trägt, ein synthetisches Bild zu betrachten, das innerhalb des Akkomodationsbereichs des Anwenders positioniert erscheint.A near-eye light field display allows a user wearing an eyeglass-like device to view a synthetic image that appears positioned within the user's range of accommodation.
Wie hierin beschrieben ist, ermöglichen augennahe Lichtfeldanzeigen dünne, am Kopf montierte Anzeige (HMD) mit geringem Gewicht, die in der Lage sind, nahezu korrekte Konvergenz, Akkomodation, Unterschiede in der Zweiäugigkeit und Defokusier-Tiefenmarken der Retina zu präsentieren. Die augennahe Lichtfeldanzeigeeinrichtung wird nahe an den Augen des Anwenders angeordnet, das heißt, näher als eine Nahfokusebene bzw. fokusnahe Ebene, die den Akkomodationsbereich des Anwenders definiert. Typischerweise erscheinen Objekte, die näher als eine Nahfokusebene positioniert sind, als verschwommen. Jedoch können Bilder, die unter Anwendung der augennahen Lichtfeldanzeigeeinrichtung angezeigt werden, dem Betrachter als im Fokus liegend erscheinen. Es können scharfe Bilder durch die augennahe Lichtfeldanzeigeeinrichtung dargestellt werden, wenn Lichtfelder, die virtuellen Objekte innerhalb des natürlichen Akkomodationsbereichs des Anwenders entsprechen, zusammengesetzt werden. Bloßes Anzeigen bestehender zweidimensionaler monoskopischer, stereoskopischer und multiskopischer Inhalte, die zur Anzeige durch konventionelle Anzeigeeinrichtungen vorgesehen sind, werden keine scharfen Bilder ergeben, wenn sie von der augennahen Lichtfeldanzeigeeinrichtung angezeigt werden.As described herein, near-eye light field displays enable thin, lightweight head-mounted displays (HMD) capable of presenting near-correct convergence, accommodation, differences in binocularity, and retinal defocus depth markers. The near-eye light field display device is placed close to the user's eyes, that is, closer than a near-focal plane defining the user's range of accommodation. Typically, objects positioned closer than a near focal plane appear blurry. However, images displayed using the near-eye light field display device may appear to be in focus to the viewer. Clear images can be displayed by the near-eye light field display device when light fields corresponding to virtual objects within the user's natural range of accommodation are composed. Merely displaying existing two-dimensional monoscopic, stereoscopic, and multiscopic content intended for display by conventional display devices will not produce sharp images when displayed by the near-eye light field display device.
Daher sollten bestehende zweidimensionale monoskopische, stereoskopische und multiskopische Inhalte, die für die Anzeige mittels konventioneller Anzeigeeinrichtungen geeignet sind, so verarbeitet werden, dass ein Bild oder Bilder zur Anzeige durch die augennahe Lichtfeldanzeigeeinrichtung erzeugt werden. Ein bestehendes Bild, das angezeigt werden soll, kann verarbeitet werden, um ein verarbeitetes Bild zu erzeugen, das ein Array elementarer Bilder enthält. Jedes elementare Bild ist eine Ansicht des gewünschten bestehenden Bildes, das einer einzelnen Mikrolinse innerhalb eines Mikrolinsen-Arrays entspricht, durch welches ein Anwender das verarbeitete Bild betrachtet. Wenn das verarbeitete Bild durch das Mikrolinsen-Array betrachtet wird, sieht der Anwender das gewünschte bestehende Bild, das auf eine virtuelle Anzeigeebene abgebildet ist, die innerhalb des natürlichen Akkomodationsbereichs des Anwenders liegt. Wenn eine augennahe Lichtfeldanzeigeeinrichtung auf Basis von Lichtpunkten verwendet wird, ist jedes elementare Bild eine Ansicht des gewünschten bestehenden Bildes, das einem einzelnen Lichtpunkt innerhalb eines Lichtpunkte-Arrays entspricht. Der Anwender betrachtet das Lichtpunkte-Array durch eine durchlässige Anzeigeschicht, die das verarbeitete Bild (d.h., Lichtstrahlen, die von dem Lichtpunkte-Array erzeugt werden, werden durch die Anzeigeschicht projiziert) kodiert. Wenn das verarbeitete Bild durch die durchlässige Anzeigeschicht betrachtet wird, die vor dem Lichtpunkte-Array angeordnet ist, sieht der Anwender das gewünschte bestehende Bild, das auf eine virtuelle Anzeigeebene abgebildet ist, die innerhalb des natürlichen Akkomodationsbereichs des Anwenders liegt.Therefore, existing two-dimensional monoscopic, stereoscopic, and multiscopic content suitable for display by conventional display devices should be processed to generate an image or images for display by the near-eye light field display device. An existing image to be displayed can be processed to produce a processed image containing an array of elementary images. Each elemental image is a view of the desired existing image, corresponding to a single microlens within a microlens array through which a user views the processed image. When the processed image is viewed through the microlens array, the user sees the desired existent image mapped onto a virtual display plane that is within the user's natural range of accommodation. If a near-eye light field display based on points of light is used, each elementary image is one View of the desired existing image corresponding to a single point of light within a point of light array. The user views the array of light spots through a transmissive display layer, which encodes the processed image (ie, light rays generated by the array of light spots are projected through the display layer). When the processed image is viewed through the transmissive display layer placed in front of the light spot array, the user sees the desired existent image mapped onto a virtual display plane that is within the user's natural range of accommodation.
In einer Ausführungsform ist die Mikro-Anzeige eine emittierende Anzeige, die ausgebildet ist, durch ein zweidimensionales Array aus Mikrolinsen betrachtet zu werden, wobei jede Mikrolinse eine optische Vorrichtung ist, die in Verbindung mit einem Pixel der Mikro-Anzeige den Strahl aus Schritt 105 definieren kann. Im Zusammenhang der folgenden Beschreibung ist ein Array aus Mikrolinsen ein zweidimensionales Array bzw. Feld, das mindestens zwei Mikrolinsen enthält. In einer Ausführungsform ist die augennahe Lichtfeldanzeigeeinrichtung in Form eines Brillenformfaktors implementiert, der zwei Mikro-Anzeigen und zwei Mikrolinsen-Arrays enthält, um eine zweiäugige augennahe Lichtfeldanzeigeeinrichtung zu bilden, wobei ein erster Satz aus einer Mikro-Anzeige und einem Mikrolinsen-Array einem linken Auge des Anwenders zugeordnet ist, und ein zweiter Satz aus einer Mikro-Anzeige und einem Mikrolinsen-Array einem rechten Auge des Anwenders zugeordnet ist.In one embodiment, the micro-display is an emissive display configured to be viewed through a two-dimensional array of micro-lenses, each micro-lens being an optical device that, in conjunction with a pixel of the micro-display, defines the beam of
In einer weiteren Ausführungsform ist die Mikro-Anzeige eine durchlässige (d.h., von variabler Undurchlässigkeit und Farbe und fähig, im Wesentlichen transparent zu werden) Anzeige, die zwischen einem Betrachter und einem zweidimensionalen Array aus Lichtpunkten positioniert ist, wobei jeder Lichtpunkt eine optische Vorrichtung ist. Das Lichtpunkte-Array wird durch die Mikro-Anzeige betrachtet. Der Strahl aus Schritt 105 wird durch ein Pixel der Mikro-Anzeige und einen Lichtpunkt in dem Lichtpunkte-Array festgelegt.In another embodiment, the microdisplay is a transmissive (i.e., of variable opacity and color and capable of becoming substantially transparent) display positioned between a viewer and a two-dimensional array of points of light, each point of light being an optical device . The array of dots of light is viewed through the micro-display. The ray from
In einer Ausführungsform ist die augennahe Lichtfeldanzeige als eine Tensor-Anzeige implementiert, wie sie beispielsweise beschrieben ist von Wetzstein und Mitarbeitern „Tensor-Anzeigen: Kompressive Lichtfeldsynthese unter Verwendung von Mehrschicht-Anzeigen mit gerichteter Hintergrundbeleuchtung“, ACM-Transaktionen über Grafik SIGGRAPH 2012 Konferenzmitteilungen, Bd. 31, Ausgabe 4, Juli 2012. Eine Anzeigenanordnung kann eine Mikro-Anzeige und eine optische Vorrichtung aufweisen, wobei die optische Vorrichtung eine oder mehrere Mikrolinsen, einen oder mehrere Lichtpunkte, ein oder mehrere Stiftlöcher oder eine oder mehrere durchlässige Schichten aufweisen kann, die in der Tensor-Anzeigeanordnung enthalten sind.In one embodiment, the near-eye light field display is implemented as a tensor display, such as is described by Wetzstein et al., "Tensor Displays: Compressive Light Field Synthesis Using Multilayer Directional Backlit Displays," ACM Transactions via Graphics SIGGRAPH 2012 Conference Notes, Vol. 31, Issue 4, July 2012. A display assembly may include a microdisplay and an optical device, where the optical device may include one or more microlenses, one or more points of light, one or more pinholes, or one or more transmissive layers. included in the tensor display array.
Im Schritt 110 wird der Strahl mit einer zweidimensionalen virtuellen Anzeigeebene geschnitten, um Kartenkoordinatenwert bzw. Abbildungskoordinaten zu erzeugen, die dem Pixel entsprechen. Im Zusammenhang der vorliegenden Beschreibung ist die virtuelle Anzeigeebene eine virtuelle Ebene, die für den Betrachter so erscheint, als dass sie an oder hinter der Nahfokusebene positioniert ist. In einer Ausführungsform liegt die virtuelle Anzeigeebene vor einer fernen Ebene, jenseits welcher Objekte für den Betrachter als außerhalb des Fokus liegend erscheinen.In
Im Schritt 115 wird eine Farbe für das Pixel auf der Grundlage der Abbildungskoordinaten berechnet. In einer Ausführungsform entsprechen die Abbildungskoordinaten einer Texturabbildung bzw. einer Texturkarte, die ein bestehendes Bild speichert. In einer Ausführungsform kann das bestehende Bild, das als eine Texturabbildung gespeichert ist, im Voraus verarbeitet werden, um Pixel Farben für ein Bild mit Bildfehlerbehebung zu erzeugen. Im Zusammenhang der folgenden Beschreibung können Farben für jedes Pixel der Mikro-Anzeige berechnet werden, um ein bestehendes Bild für das Anzeigen auf der augennahen Lichtfeldanzeigeeinrichtung zu verarbeiten. Wenn das bestehende Bild ein einzelnes Bild eines bestehenden Stereo-Bildpaares ist, kann das bestehende Bild für das andere Auge (linkes Auge oder rechtes Auge) verarbeitet werden, um ein entsprechendes linkes Augenbild oder rechtes Augenbild für die Anzeige mittels der augennahen Lichtfeldanzeigeeinrichtung zu erzeugen. Das Stereo-Bildpaar, das erzeugt wird, kann gleichzeitig von dem Anwender der augennahen Lichtfeldanzeigeeinrichtung betrachtet werden, um ein virtuelles Bild auf der virtuellen Anzeigeebene zu erzeugen, das als dreidimensional erscheint. Somit können die dreidimensionalen Qualitäten des bestehenden stereoskopischen Paares ebenfalls in dem virtuellen Bild vorhanden sein.In
Es wird nun eine anschaulichere Information im Hinblick auf diverse optionale Architekturen und Merkmale angegeben, mit denen die vorhergehende Technik entsprechend den Wünschen des Anwenders umgesetzt werden kann oder auch nicht. Es sollte jedoch unbedingt beachtet werden, dass die folgende Information nur aus anschaulichen Zwecken angegeben wird und in keiner Weise als einschränkend erachtet werden sollte. Jedes der folgenden Merkmale kann optional mit oder ohne Ausschluss anderer beschriebener Merkmale eingesetzt werden.More illustrative information is now provided regarding various optional architectures and features with which the foregoing technique may or may not be implemented according to the user's desires. However, it is important to note that the following information is provided for illustrative purposes only and should not be taken as limiting in any way. Each of the following features may optionally be employed with or without the exclusion of other described features.
Die Mikro-Anzeige 250 ist von einem Mikrolinsen-Array 255 entsprechend einem Abstand dl beabstandet. Das Mikrolinsen-Array 255 ist mit einem Abstand de angeordnet, der einem Augenreliefabstand entspricht. Ein Mikro-Anzeigenbild, das von der Mikro-Anzeige 250 angezeigt wird, erscheint für den Betrachter so, dass es auf eine virtuelle Anzeigeebene 210 abgebildet ist, die mit einem virtuellen Anzeigeabstand dv zu dem Auge 205 angeordnet ist. Das Mikro-Anzeigenbild kann aus einem bestehenden Bild erzeugt werden. Der Abstand dv kann für jedes Auge 205 unterschiedlich sein, wodurch es möglich ist, optische Aberration (d.h., ein Brillenrezept) des Betrachters zu korrigieren. Die Breite der virtuellen Anzeigeebene 210 beträgt wv und die Breite der Mikro-Anzeige 250 ist ws.The micro-display 250 is spaced from a
Typischerweise wird eine dreidimensionales Szene als Bild erzeugt, um ein zweidimensionales (2D-) Bild zum Anzeigen auf der Mikro-Anzeige 250 zu erzeugen. Ein Mikro-Anzeigenbild, das von der Mikro-Anzeige 250 angezeigt wird, enthält ein elementares Bild, das einer Ansicht für jede Mikrolinse in dem Mikrolinsen-Array 255 entspricht. Beispielsweise wird ein elementares Bild in dem Elementarbildgebiet 225, das der Mikrolinse 253 entspricht, angezeigt. Das Elementarbildgebiet 225 ist ein zweidimensionales Gebiet mit einer Breite von Δws und ist definiert als der Schnitt der Mikro-Anzeige 250 mit einer Projektion aus der Pupille des Auges 205 durch die Mikrolinse 253. Jedes Elementarbildgebiet und entsprechende Mikrolinsen (beispielsweise Elementarbildgebiet 225 und Mikrolinse 252) dienen als unabhängige, durch die Linse begrenzte Vergrößerungseinheit, wobei eine außerachsige perspektivische Projektion eines virtuellen Bildes, das mit einem Abstand dv zu dem Auge 205 angeordnet ist (d.h., in der virtuellen Anzeigeebene 210) synthetisiert wird. Teile des virtuellen Bildes werden über die unterschiedlichen Elementarbildgebiete hinweg wiederholt, wie in
Die Erzeugung einer 3D-Szene zur Erzeugung eines Mikro-Anzeigenbildes für die Darstellung mittels der Mikro-Anzeige 250 erfordert, dass jedes Elementarbild erzeugt wird, das in dem Mikro-Anzeigenbild enthalten ist. Im Gegensatz dazu wird lediglich ein einzelnes Bild für die Anzeige auf einer konventionellen Anzeigeeinrichtung erzeugt. In einigen Fällen ist die 3D-Szene für die Bilderzeugung nicht verfügbar, etwa für einen bestehenden Inhalt mit konventionellen 2D-Bildern. Jedoch kann der bestehende Inhalt, der für das Anzeigen mittels einer konventionellen Anzeigeeinrichtung vorgesehen ist, für das Anzeigen auf der Mikro-Anzeige 250 aufbereitet werden. Insbesondere sind bestehende stereoskopische Bildpaare für das 3D-Fernsehen weithin verfügbar, und die bestehenden stereoskopischen Bildpaare können für das Anzeigen auf der Mikro-Anzeige 250 verarbeitet werden.Generation of a 3D scene to generate a micro-display image for display by
Ein Betrachter, der durch die augennahe Lichtfeldanzeigeeinrichtung 260 blickt, nimmt eine rechteckige virtuelle Anzeigeoberfläche an der virtuellen Bildebene 210 war, auf der eine Textur abgebildet ist, die den Betrachtungen des entsprechenden linken und rechten Auges eines bestehenden stereoskopischen Bildpaares entspricht. Daher wird ein Paar aus Texturabbildungen bzw. Texturkarten für ein bestehendes stereoskopisches Bildpaar gespeichert. Die Kegelstümpfe des linken und des rechten Auges sind durch gestrichelte Linien in
Der in TABELLE 1 gezeigte Pseudo-Code kann in einem Vertex-Schattierungsprogramm enthalten sein, um das bestehende Bild in die virtuelle Anzeigeebene 210 abzubilden. TABELLE 1
Die Erzeugung von Bildern für die augennahe Lichtfeldanzeigeeinrichtung 260 erfordert die Zuordnung der Farbe des Pixels der linken Mikro-Anzeige 251 und der rechten Mikro-Anzeige 252 derart, dass das ausgesandte Lichtfeld einem virtuellen Bild auf der virtuellen Anzeigeebene 210 angenähert ist. Das virtuelle Bild kann Objekte, etwa das virtuelle Objekt 230 enthalten, das relativ zu der virtuellen Anzeigeebene 210 unter unterschiedlichen Tiefen erscheint. Für ein Pixel, das mit einem Abstand xs zu dem Mittelpunkt 215 der linken Mikro-Anzeige 251 angeordnet ist, kann eine Strahlenverfolgung eingesetzt werden, um eine Farbe zu berechnen. Das virtuelle Objekt 230 erscheint als vor die virtuelle Anzeigeebene 210 verschoben, wie dies durch das bestehende stereoskopische Bildpaar beabsichtigt ist. Die Tiefe des virtuellen Objekts 230 ist nicht in einfacher Weise verfügbar, nachdem die 3D-Szene erzeugt ist, aber die beabsichtigten Verschiebungen werden im Wesentlichen beibehalten, wenn ein stereoskopisches Bildpaar für die Mikro-Anzeige für das bestehende stereoskopische Bildpaar erzeugt wird.The generation of images for the near-eye light
Das Pixel ist für das linke Auge des Betrachters durch das linke Mikrolinsen-Array 256 sichtbar, das einen optischen Mittelpunkt hat, der seitlich entsprechend einem Abstand xl zu dem Mittelpunkt 215 der linken Mikro-Anzeige 251 verschoben ist. Jeder optische Strahl ist durch einen Punkt eines Pixels auf einer Mikro-Anzeige und einen Punkt des optischen Mittelpunkts der geschnittenen Mikrolinse definiert. Wie in
Der in TABELLE 2 gezeigte Pseudo-Code kann in einem Fragmentschattierungsprogramm enthalten sein, um die in
Die Verschiebung xs kann für ein Texturelement mit den Textur-Abbildungskoordinaten (s, t) auf der Grundlage der Orientierung und der Abmessungen der Mikro-Anzeige ausgewertet werden. Der in TABELLE 3 gezeigte Pseudo-Code kann in einem Fragmentschattierungsprogramm enthalten sein, um die Verschiebung xs für ein Pixel relativ zum Referenzpunkt auf einer Mikro-Anzeige (microdisplayCoord) zu berechnen. TABELLE 3
Die Position des optischen Mittelpunkts der entsprechenden Mikrolinse, xl, kann auf der Grundlage der Orientierung des Mikrolinsen-Arrays und der Verschiebung xs ausgewertet werden. Der in TABELLE 4 gezeigte Pseudo-Code kann in einem Fragmentschattierungsprogramm enthalten sein, um den optischen Mittelpunkt der entsprechenden Mikrolinse, xl, (microlensCoord) zu berechnen. TABELLE 4
Anschließend können die horizontale Koordinate oder Verschiebung des Schwerpunkts des optischen Strahls 235 und der virtuellen Anzeigeebene 210 (d.h., des virtuellen Bildes) xv berechnet werden durch:
Eine vertikale Koordinate kann in ähnlicher Weise für den Schnittpunkt des optischen Strahls 235 mit der virtuellen Anzeigeebene 210 berechnet werden. In anderen Ausführungsformen kann eine andere Referenzposition auf der Mikro-Anzeige 251 anstelle des Mittelpunkts 251 verwendet werden, um die Abstände xs, xl, ov und xv zu ermitteln.A vertical coordinate can be calculated for the intersection of the
Der in TABELLE 5 gezeigte Pseudo-Code kann in einem Fragmentschattierungsprogramm für xv (screenCoord) enthalten sein. TABELLE 5
Die Farbe des Pixels gl_ FragColor kann berechnet werden, indem die Bildschirmkoordinaten {xv, yv) in Textur-Abbildungskoordinaten (s, t) umgewandelt werden. Da sich Bildfehler ergeben können, wenn ein Teil des virtuellen Bilds durch periphere Mikrolinsen sichtbar ist, werden Pixel, die außerhalb der virtuellen Anzeigeebene 210 liegen, auf Schwarz gesetzt, wenn Bool'sche Variable microlensExcludeBorderWAHR ist. TABELLE 6
Die Strahlenverfolgung liefert eine direkte Abschätzung der Farbe des Pixels für die linke Mikro-Anzeige 251. Das Erzeugen einer Gruppe von Strahlen, die durch jedes Pixel definiert sind, das in dem Elementarbildgebiet enthalten ist, das einer Mikrolinse entspricht, liefert Abschätzungen der Farbe jedes Pixels in einem elementaren Bild. Das Erzeugen von Gruppen von Strahlen für jedes Elementarbildgebiet, das einer Mikrolinse entspricht, liefert Abschätzungen der Farbe jedes Pixels in dem Mikro-Anzeigenbild für die linke Mikro-Anzeige 251 und in dem Mikro-Anzeigenbild für die rechte Mikro-Anzeige 252.Ray tracing provides a direct estimate of the color of the
Die linke Mikro-Anzeige 271 und die rechte Mikro-Anzeige 272 sind durch einen Abstand bs getrennt, der von dem rechten Rand der linken Mikro-Anzeige 271 zu dem linken Rand der rechten Mikro-Anzeige 272 gemessen ist. Der Zwischenpupillen-Abstand zwischen den Mittelpunkten der Pupillen des linken und des rechten Auges des Betrachters beträgt be. Die augennahe Lichtfeldanzeigeeinrichtung 280 simuliert die Erscheinungsform einer konventionellen stereoskopischen Anzeige, die entsprechend einem Abstand dv zu dem Betrachter (d.h., an der virtuellen Anzeigeebene 210) angeordnet ist. In einer Ausführungsform ist be ein festgelegter mittlerer Abstand, etwa ein interokularer Abstand, anstelle eines dynamisch abgetasteten Zwischenpupillen-Abstands.The
Ein Betrachter, der durch die augennahe Lichtfeldanzeigeeinrichtung 280 blickt, wird eine rechteckige virtuelle Anzeigeoberfläche an der virtuellen Bildebene 210 wahrnehmen, auf die eine entsprechende linke und rechte Augenansicht eines bestehenden stereoskopischen Bildpaares als Textur abgebildet ist. Daher wird ein Paar aus Texturabbildungen für ein bestehendes stereoskopisches Bildpaar gespeichert. In anderen Ausführungsformen kann die virtuelle Anzeigeoberfläche eine andere Form haben, die nicht notwendigerweise rechteckig ist. Der linke und der rechte Augen-Kegelstumpf sind durch die gestrichelten Linien in
Wie zuvor in Verbindung mit
Das Pixel ist für das linke Auge des Betrachters in der linken Mikro-Anzeige 271 sichtbar, das einen optischen Mittelpunkt hat, der seitlich um einen Abstand xl zu dem Mittelpunkt 275 der linken Mikro-Anzeige 271 verschoben ist. Jeder optische Strahl ist durch einen Punkt eines Pixels auf einer Mikro-Anzeige und durch einen Punkt in der optischen Mitte des geschnittenen Lichtpunkts in dem entsprechenden Lichtpunkte-Array definiert. Wie in
Die Verschiebung xl kann für ein Texturelement bzw. Texel mit dem Textur- Abbildungskoordinaten (s, t) auf der Grundlage der Orientierung und der Abmessungen der Mikro-Anzeige ausgewertet werden. Die Position des optischen Mittelpunkts des entsprechenden Lichtpunktes xs kann auf der Grundlage der Orientierung des Lichtpunkte-Arrays und der Verschiebung sl ausgewertet werden. Anschließend kann die horizontale Koordinate oder Verschiebung des Schnittpunkts des optischen Strahls 285 mit der virtuellen Anzeigeebene 210 (d.h., virtuelles Bild) xv berechnet werden durch:
Eine vertikale Koordinate kann in ähnlicher Weise für den Schnittpunkt des optischen Strahls 285 und die virtuelle Anzeigeebene 210 berechnet werden. In anderen Ausführungsformen kann eine Referenzposition auf der Mikro-Anzeige 271, die nicht die Mitte 275 ist, verwendet werden, um die Abstände xs, xl, ov Grund xv zu ermitteln.A vertical coordinate can be calculated for the intersection of the
Ein Fragmentschattierungsprogramm kann eingerichtet sein, die Verschiebung für ein Pixel relativ zu einem Referenzpunkt auf einer Mikro-Anzeige xl (microdisplayCoord), den optischen Mittelpunkt des entsprechenden Lichtpunktes xs (pinlightCoord) und die horizontale Koordinate xv (screenCoord) zu berechnen.A fragment shader program can be set up to calculate the displacement for a pixel relative to a reference point on a microdisplay x l (microdisplayCoord), the optical center of the corresponding point of light x s (pinlightCoord) and the horizontal coordinate x v (screenCoord).
Die Farbe des Pixels gI_ FragColor kann berechnet werden, indem die Bildschirmkoordinaten (xv, yv) in Textur-Abbildungskoordinaten (s, t) umgewandelt werden. Die Strahlenverfolgung liefert eine direkte Abschätzung der Farbe des Pixels für die linke Mikro-Anzeige 271. Das Erzeugen einer Gruppe von Strahlen, die durch jedes Pixel definiert sind, das innerhalb des Elementarbildgebiets liegt, das einem Lichtpunkt entspricht, liefert Abschätzungen der Farbe des Pixels in einem elementaren Bild. Das Erzeugen von Gruppen von Strahlen für jedes Elementarbildgebiet, das einem Lichtpunkt entspricht, liefert Abschätzungen der Farbe jedes Pixels in dem Mikro-Anzeigenbild für die linke Mikro-Anzeige 271 und in dem Mikro-Anzeigenbild für die Rechte Mikro-Anzeige 272.The color of the pixel gI_FragColor can be calculated by converting the screen coordinates (x v ,y v ) to texture map coordinates (s,t). Ray tracing provides a direct estimate of the color of the pixel for the
In einer Ausführungsform werden stereoskopische Bildpaare als überabgetastet relativ zu der Auflösung der augennahen Lichtfeldanzeigeeinrichtung 260 angenommen. Es kann eine Länge eines Tiefpassfilters p̂v durch die Größe der Pixel der Mikro-Anzeige ermittelt werden, wie sie durch Projektion in die virtuelle Anzeigeebene 210 vergrößert werden. Der Parameter p̂v kann berechnet werden durch:
Der in TABELLE 7 gezeigte Cseudo-Kode kann in einem Fragmentschattierungsprogramm enthalten sein, um die Vorverarbeitung zur Bildfehlerbehebung auszuführen. Die Variable antialiasLength ist der Parameter Wie in dem Pseudo-Code in TABELLE 7 gezeigt ist, wird p0 schließlich einer neuen Farbe während der Ausführung eines Fragmentschattierungsprogramms zugeordnet. Die Positionen von benachbarten Pixel werden in der temporären Variablen p gespeichert, und anschließend werden die Farben der benachbarten Pixel gemittelt, um eine Farbe zu ermitteln, die p0 zugeordnet ist. Obwohl der Pseudo-Code in TABELLE 7 einen separierbaren Filter implementiert, der üblicherweise aus Gründen der Effizienz gewählt wird, erkennt der Fachmann, dass andere Filter ebenfalls möglich sind, einschließlich nicht-separierbarer Filter. TABELLE 7
Wie in
Die I/O-Einheit 405 ist ausgebildet, Kommunikationsereignisse (d.h., Befehle, Daten, usw.) von einem Hostprozessor (nicht gezeigt) über den Systembus 402 zu senden und zu empfangen. Die I/O-Einheit 405 kann mit dem Hostprozessor direkt über den Systembus 402 oder über eine oder mehrere Zwischeneinrichtungen, etwa eine Speicherbrücke, kommunizieren. In einer Ausführungsform implementiert die I/O-Einheit 405 eine periphere Komponenten-Verbindung-Express-(PCIe) Schnittstelle für eine Kommunikation über einen PCIe-Bus. In alternativen Ausführungsformen kann die I/O-Einheit 405 andere Arten gut bekannter Schnittstellen zur Kommunikation mit externen Geräten implementieren.I/
Die I/O-Einheit 405 ist mit einer Host-Schnittstelleneinheit 410 verbunden, die Pakete dekodiert, die über den Systembus 402 empfangen werden. In einer Ausführungsform repräsentieren die Pakete Befehle, die eingerichtet sind, die PPU 400 zu veranlassen, diverse Operationen auszuführen. Die Host-Schnittstelleneinheit 410 sendet die dekodierten Befehle zu diversen anderen Einheiten der PPU 400, wie dies durch die Befehle angegeben ist. Beispielsweise können einige Befehle an die Frontbereichseinheit 415 gesendet werden. Andere Befehle können zu dem Netzknoten 430 oder anderen Einheiten der PPU 400 gesendet werden, etwa zu einer oder mehreren Kopier-Einheiten, einem Video-Kodierer, einem Video-Dekodierer, einer Leistungsverwaltungseinheit, usw. (nicht explizit gezeigt). Anders ausgedrückt, die Host-Schnittstelleneinheit 410 ist ausgebildet, Kommunikationsereignisse zwischen den diversen Logikeinheiten der PPU 400 zu verteilen.The I/
In einer Ausführungsform kodiert ein Programm, das von dem Hostprozessor ausgeführt wird, einen Befehlsstrom in einem Puffer, der Arbeitsaufträge an die PPU 400 für die Bearbeitung bereitstellt. Ein Arbeitsauftrag bzw. eine Arbeitslast kann eine Reihe von Befehlen und Daten, die von diesen Befehlen zu verarbeiten sind, umfassen. Der Puffer ist ein Gebiet in einem Speicher, auf den durch sowohl den Hostprozessor als auch die PPU 400 zugegriffen werden kann (d.h., lesen/schreiben). Beispielsweise kann die Host-Schnittstelleneinheit 410 ausgebildet sein, auf den Puffer in einem Systemspeicher, der mit dem Systembus 402 verbunden ist, über Speicheranforderungen zuzugreifen, die von der I/O-Einheit 405 übertragen werden. In einer Ausführungsform schreibt der Hostprozessor den Befehlsstrom in den Puffer und sendet dann einen Zeiger auf den Beginn des Befehlsstroms zu der PPU 400. Die Host-Schnittstelleneinheit 410 versorgt die Frontbereichseinheit 415 mit Zeigern auf einen oder mehrere Befehlsströme. Die Frontbereichseinheit 415 verwaltet den einen oder die mehreren Ströme, indem sie Befehle aus den Strömen ausliest und Befehle an die diversen Einheiten der PPU 400 weiterleitet.In one embodiment, a program executed by the host processor encodes an instruction stream in a buffer that provides work orders to
Die Frontbereichseinheit 415 ist mit einer Disponiereinheit 420 verbunden, die die diversen GPCs 450 so konfiguriert, dass diese Aufgaben verarbeiten, die durch den einen oder die mehreren Ströme definiert sind. Die Disponiereinheit 420 ist ausgebildet, Zustandsinformation, die die diversen Aufgaben betrifft, die von der Disponiereinheit 420 verwaltet werden, zu überwachen. Der Zustand kann angeben, welchem GPC 450 eine Aufgabe zugeordnet ist, ob die Aufgabe aktiv oder inaktiv ist, eine der Aufgabe zugeordnete Prioritätsebene, usw. Die Disponiereinheit 420 verwaltet die Ausführung mehrerer Aufgaben in dem einen oder den mehreren GPCs 450.The
Die Disponiereinheit 420 ist mit einer Arbeitsverteilungseinheit 425 verbunden, die ausgebildet ist, Aufgaben für die Ausführung in den GPCs 450 auszugeben. Die Arbeitsverteilungseinheit 425 kann eine Reihe von disponierten Aufgaben, die aus der Disponiereinheit 420 empfangen werden, überwachen. In einer Ausführungsform verwaltet die Arbeitsverteilungseinheit 425 eine Ansammlung anhängiger Aufgaben und eine Ansammlung aktiver Aufgaben für jeden der GPCs 450. Die Ansammlung anhängiger Aufgaben kann eine Reihe von Abschnitten (beispielsweise 16 Abschnitte) aufweisen, die Aufgaben enthalten, die für die Verarbeitung durch einen speziellen GPC 450 zugewiesen sind. Die Ansammlung aktiver Aufgaben umfasst eine Reihe von Abschnitten (beispielsweise 4 Abschnitte) für Aufgaben, die gerade aktiv von den GPCs 450 verarbeitet werden. Wenn ein GPC 450 die Ausführung einer Aufgabe beendet, dann wird die Aufgabe aus der Ansammlung aktiver Aufgaben für den GPC 450 herausgenommen und eine der anderen Aufgaben aus der Ansammlung anhängiger Aufgaben wird ausgewählt und für die Ausführung in dem GPC 450 disponiert. Wenn eine aktive Aufgabe in dem GPC 450 inaktiv gewesen ist, etwa wenn auf die Auflösung einer Datenabhängigkeit gewartet wird, dann kann die aktive Aufgabe aus dem GPC 450 herausgenommen und an die Ansammlung anhängiger Aufgaben zurückgegeben werden, während eine weitere Aufgabe in der Ansammlung anhängiger Aufgaben ausgewählt und für die Ausführung in dem GPC 450 disponiert wird.The
Die Arbeitsverteilungseinheit 425 kommuniziert mit dem einen oder den mehreren GPCs 450 über eine Xbar 470. Die Xbar 470 ist ein Verbindungsnetzwerk, die viele der Einheiten der PPU 400 mit anderen Einheiten der PPU 400 verbindet. Beispielsweise kann die Xbar 470 ausgebildet sein, die Arbeitsverteilungseinheit 425 mit einem speziellen GPC 450 zu verbinden. Obwohl dies nicht explizit gezeigt ist, sind eine oder mehrere andere Einheiten der PPU 400 mit der Hosteinheit 410 verbunden. Die anderen Einheiten können auch über einen Netzknoten 430 mit der Xbar 470 verbunden sein.The
Die Aufgaben werden von der Disponiereinheit 420 verwaltet und von der Arbeitsverteilungseinheit 425 an einen GPC 450 ausgegeben. Der GPC 450 ist ausgebildet, die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 450 konsumiert, zu einem anderen GPC 450 über die Xbar 470 weitergeleitet oder in dem Speicher 404 gespeichert werden. Die Ergebnisse können in den Speicher 404 über die Partitionseinheiten 480 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten zu/aus dem Speicher 404 implementieren. In einer Ausführungsform weist die PPU 400 eine Anzahl U an Partitionseinheiten 480 auf, die gleich der Anzahl separater und individueller Speichereinrichtungen 404 ist, die mit der PPU 400 verbunden sind. Eine Partitionseinheit 480 wird detaillierter nachfolgend in Verbindung mit
In einer Ausführungsform führt ein Hostprozessor einen Treiber-Systemkern aus, der eine Anwendungsprogrammierschnittstelle (API) umsetzt, die es einer oder mehreren Anwendungen, die auf dem Hostprozessor abgearbeitet werden, ermöglichen, Operationen zur Ausführung in der PPU 400 zu disponieren. Eine Anwendung kann Befehle (d.h., API-Aufrufe) erzeugen, die den Treiber-Systemkern veranlassen, eine oder mehrere Aufgaben für die Ausführung in der PPU 400 zu erzeugen. Der Treiber-Systemkern gibt Aufgaben an einen oder mehrere Ströme, die gerade von der PPU 400 verarbeitet werden, aus. Jede Aufgabe kann eine oder mehrere Gruppen aus in Beziehung stehender Stränge aufweisen, wobei diese Gruppe hierin als eine Stranggruppe bzw. Warp bezeichnet wird. Ein Strangblock kann auf mehrere Gruppen aus Strängen mit Befehlen zur Ausführung der Aufgabe verweisen. Stränge in der gleichen Gruppe aus Strängen können Daten über einen gemeinsam genutzten Speicher austauschen. In einer Ausführungsform umfasst eine Gruppe aus Strängen 32 zugehörige Stränge.In one embodiment, a host processor executes a driver kernel that implements an application programming interface (API) that allows one or more applications running on the host processor to schedule operations for execution on
In einer Ausführungsform wird der Betrieb des GPC 450 von dem Pipeline-Verwalter 510 gesteuert. Der Pipeline-Verwalter 510 verwaltet die Konfiguration des einen oder den mehreren TPCs 520 zur Verarbeitung von Aufgaben, die dem GPC 450 zugeordnet sind. In einer Ausführungsform kann der Pipeline-Verwalter 510 mindestens einen der einen oder mehreren TPCs 520 so konfigurieren, dass mindestens ein Teil einer Grafikverarbeitungs-Pipeline implementiert wird. Beispielsweise kann ein TPC 520 so konfiguriert sein, dass er ein Vertex-Schattierungsprogramm in dem programmierbaren Datenstrom-Multiprozessor (SM) 540 ausführt. Der Pipeline-Verwalter 510 kann ferner ausgebildet sein, Pakete, die aus der Arbeitsverteilungseinheit 425 empfangen werden, zu geeigneten Logikeinheiten innerhalb des GPC 450 zu verteilen. Beispielsweise können einige Pakete zu Hardwareeinheiten mit festgelegter Funktion in der PROP 515 und/oder der Rastereinheit 525 weitergeleitet werden, während andere Pakete zu den TPCs 520 zur Verarbeitung durch die Grundformen-Einheit 535 oder den SM 540 geleitet werden.In one embodiment, the operation of
Die TPC-Einheit 515 ist ausgebildet, Daten, die von der Rastereinheit 525 und den TPCs 520 erzeugt werden, an eine Rasteroperations-(ROP-) Einheit in der Partitionseinheit 480 weiterzuleiten, wie dies detaillierter nachfolgend beschrieben ist. Die PROP-Einheit 515 kann ferner ausgebildet sein, Optimierungen für die Farbmischung auszuführen, Pixeldaten zu organisieren, Adressenübersetzungen auszuführen, und dergleichen.
Die Rastereinheit 525 enthält eine Reihe von Hardwareeinheiten mit festgelegter Funktion, die ausgebildet sind, diverse Rasteroperationen auszuführen. In einer Ausführungsform umfasst die Rastereinheit 525 eine Einricht-Einheit, eine Grob-Rastereinheit, eine Aussonderungseinheit, eine Abschneideeinheit, eine Fein-Rastereinheit und eine Kachel-Vereinigungseinheit. Die Einricht-Einheit empfängt transformierte Vertices bzw. Eckpunkte und erzeugt Ebenengleichungen, die der geometrischen Grundform zugeordnet sind, die durch die Eckpunkte definiert ist. Die Ebenengleichungen werden an die Grob-Rastereinheit übermittelt, um Abdeckungsinformation (beispielsweise eine x, y-Abdeckungsmaske für eine Kachel) für die Grundform zu erzeugen. Die Ausgabe der Grob-Rastereinheit kann an die Aussonderungseinheit übermittelt werden, in welcher Fragmente, die zu der Grundform gehören, die eine z-Prüfung nicht bestehen, ausgesondert werden, und kann dann zu einer Abschneideeinheit übertragen werden, in der Fragmente, die außerhalb eines Betrachtungskegelstumpfes liegen, abgeschnitten werden. Jene Fragmente, die das Abschneiden und das Aussondern überstehen, können einer Fein-Rastereinheit übergeben werden, um Attribute für die Pixelfragmente auf der Grundlage der Ebenengleichungen, die von der Einricht-Einheit erzeugt werden, zu erzeugen. Die Ausgabe der Rastereinheit 580 umfasst Fragmente, die beispielsweise durch eine Fragmentschattierungseinheit, die in einem TPC 520 implementiert ist, zu verarbeiten sind.The
Jeder TPC 520, der in dem GPC 450 enthalten ist, enthält eine M-Kanal-Steuerung (MPC) 530, eine Grundformen-Einheit 535, einen SM 540 und eine oder mehrere Textureinheiten 545. Die MPC 530 steuert den Betrieb des TPC 520, wobei Pakete, die aus dem Pipeline-Verwalter 510 empfangen werden, an die geeigneten Einheiten in dem TPC 520 weitergeleitet werden. Beispielsweise können Pakete, die zu einem Eckpunkt gehören, zu der Grundformen-Einheit 535 weitergeleitet werden, die ausgebildet ist, Vertex-Attribute, die zu dem Eckpunkt gehören, aus dem Speicher 404 abzuholen. Andererseits können Pakete, die zu einem Schattierungsprogramm gehören, an den SM 540 übertragen werden.Each
In einer Ausführungsform sind die Textureinheiten 545 ausgebildet, Texturabbildungen (beispielsweise, ein 2D-Array aus Texturelementen) aus dem Speicher 404 zu laden und die Texturabbildungen bzw. Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in Schattierungsprogrammen zu erzeugen, die von dem SM 540 ausgeführt werden. Die Textureinheiten 545 implementieren Texturoperationen, etwa Filteroperationen unter Anwendung von Mip-Abbildungen (d.h., Texturabbildungen mit variierendem Grad an Detail). In einer Ausführungsform enthält jeder TPC 520 vier (4) Textureinheiten 545.In one embodiment,
Der SM 540 umfasst einen programmierbaren Datenstrom-Prozessor, der ausgebildet ist, Aufgaben, die durch eine Anzahl an Strängen repräsentiert sind, zu verarbeiten. Jeder SM 540 ist mehrsträngig und ausgebildet, mehrere Stränge (beispielsweise 32 Stränge) aus einer speziellen Gruppe aus Strängen gleichzeitig auszuführen. In einer Ausführungsform implementiert der SM 540 eine SIMD-(einzelner Befehl, Mehrfachdaten-) Architektur, in der jeder Strang in einer Gruppe aus Strängen (das heißt, einer Stranggruppe) ausgebildet ist, einen anderen Datensatz auf der Grundlage der gleichen Gruppe an Befehlen zu verarbeiten. Alle Stränge in der Gruppe aus Strängen führen die gleichen Befehle aus. In einer weiteren Ausführungsform implementiert der SM 540 eine SIMT-(einzelner Befehl, mehrere Stränge-) Architektur, in der jeder Strang in einer Gruppe aus Strängen ausgebildet ist, einen anderen Datensatz auf der Grundlage der gleichen Gruppe an Befehlen zu verarbeiten, wobei es jedoch für einzelne Stränge in der Gruppe aus Strängen zulässig ist, während der Ausführung zu divergieren. Anders ausgedrückt, wenn ein Befehl für die Gruppe aus Strängen für die Ausführung ausgegeben wird, können einige Stränge in der Gruppe aus Strängen aktiv sein, wodurch der Befehl ausgeführt wird, während andere Stränge in der Gruppe aus Strängen inaktiv sein können, wodurch anstelle der Ausführung des Befehls eine Keine-Operation (NOP) ausgeführt wird. Der SM 540 ist nachfolgend in Verbindung mit
Die MMU 590 stellt eine Schnittstelle zwischen dem GPC 450 und der Partitionseinheit 480 bereit. Die MMU 590 kann eine Übersetzung virtueller Adressen in physikalische Adressen, Speicherschutz und Verteilung von Speicheranforderungen bereitstellen. In einer Ausführungsform stellt die MMU 500 einen oder mehrere Translationsnebenschau-Puffer (TLBs) zur Verbesserung der Übersetzung virtueller Adressen in physikalische Adressen in dem Speicher 404 bereit.The
In einer Ausführungsform implementiert die PPU 400 eine Mehrebenen-Speicherhierarchie. Der Speicher 404 ist außerhalb des Chips im SDRAM, der mit der PPU 400 gekoppelt ist, angeordnet. Daten aus dem Speicher 404 können abgeholt und in dem L2-Cache-Speicher 560 gespeichert werden, der im Chip angeordnet ist und von den diversen GPCs 450 gemeinsam genutzt wird. Wie gezeigt, enthält jede Partitionseinheit 480 einen Teil des L2-Cache-Speichers 560, der einer entsprechenden Speichereinrichtung 404 zugeordnet ist. Cache-Speicher tieferer Ebene können dann in diversen Einheiten innerhalb der GPCs 450 umgesetzt werden. Beispielsweise kann jeder der SMs 540 einen Cache-Speicher der Ebene eins (L1) implementieren. Der L1-Cache-Speicher ist ein privater Speicher, der einem speziellen SM 540 zugeordnet ist. Daten aus dem L2-Cache-Speicher 560 können abgeholt und in jedem der L1-Cache-Speicher zur Verarbeitung in den Funktionseinheiten der SMs 540 gespeichert werden. Der L2-Cache-Speicher 560 ist mit der Speicherschnittstelle 570 und der Xbar 470 verbunden.In one embodiment,
Die ROP-Einheit 550 umfasst einen ROP-Verwalter 355, eine Farb-ROP-(CROP) Einheit 552 und eine Z-ROP-(ZROP) Einheit 554. Die CROP-Einheit 552 führt Rasteroperationen aus, die die Pixelfarbe betreffen, etwa Farbkomprimierung, Pixelmischung und dergleichen. Die ZROP-Einheit 554 implementiert eine Tiefen-Prüfung in Verbindung mit der Rastereinheit 525. Die ZROP-Einheit 554 empfängt eine Tiefe für eine Abtastposition, die zu einem Pixelfragment gehört, aus der Aussonderungs-Einheit der Rastereinheit 525. Die ZROP-Einheit 554 prüft die Tiefe gegenüber einer entsprechenden Tiefe in einem Tiefen-Puffer für eine Abtastposition, die zu dem Fragment gehört. Wenn das Fragment den Tiefen-Test für die Abtastposition besteht, dann aktualisiert die ZROP-Einheit 554 den Tiefen-Puffer und sendet ein Ergebnis des Tiefen-Tests an die Rastereinheit 525. Der ROP-Verwalter 355 steuert den Betrieb der ROP-Einheit 550. Zu beachten ist, dass die Anzahl an Partitionseinheiten 480 sich von der Anzahl an GPCs 450 unterscheiden kann, und daher kann jede ROP-Einheit 550 mit jedem der GPCs 450 verbunden werden. Daher überwacht der ROP-Verwalter 355 Pakete, die aus den unterschiedlichen GPCs 450 empfangen werden, und ermittelt, zu welchem GPC 450 ein Ergebnis weiterzuleiten ist, das von der ROP-Einheit 550 erzeugt wird. Die CROP-Einheit 552 und die ZROP-Einheit 554 sind mit dem L2-Cache-Speicher 560 über eine L2-Xbar 565 verbunden.The
Wie zuvor beschrieben ist, gibt die Arbeitsverteilungseinheit 425 Aufgaben zur Ausführung in den GPCs 450 der PPU 400 aus. Die Aufgaben werden einem speziellen TPC 520 innerhalb eines GPC 450 zugewiesen, und wenn die Aufgabe einem Schattierungsprogramm zugeordnet ist, kann die Aufgabe einem SM 540 zugewiesen werden. Die Disponiereinheit 610 empfängt die Aufgaben aus der Arbeitsverteilungseinheit 425 und verwaltet die Befehlsdisponierung für eine oder mehrere Gruppen aus Strängen (das heißt, Stranggruppen), die dem SM 540 zugeordnet sind. Die Disponiereinheit 610 disponiert Stränge für die Ausführung in Gruppen paralleler Stränge, wobei jede Gruppe als eine Stranggruppe bezeichnet wird. In einer Ausführungsform enthält jede Stranggruppe 32 Stränge. Die Disponiereinheit 610 kann mehrere unterschiedliche Stranggruppen verwalten, wodurch die Stranggruppen für die Ausführung disponiert werden und anschließend Befehle aus den mehreren unterschiedlichen Stranggruppen an die diversen Funktionseinheiten (d.h., Kerne 650, SFUs 652 und LSUs 654) während jedes Taktzyklus ausgegeben werden.As previously described, the
In einer Ausführungsform beinhaltet jede Disponiereinheit 610 eine oder mehrere Befehlsausgabeeinheiten 615. Jede Ausgabeeinheit 615 ist ausgebildet, Befehle zu einer oder mehreren der Funktionseinheiten zu senden. In der in
Jeder SM 540 weist eine Registerdatei 620 auf, die eine Gruppe aus Registern für die Funktionseinheiten des SM 540 bereitstellt. In einer Ausführungsform ist die Registerdatei 620 auf alle Funktionseinheiten derart aufgeteilt, dass jede Funktionseinheit einem speziellen Teil der Registerdatei 620 zugeordnet ist. In einer weiteren Ausführungsform ist die Registerdatei 620 auf die unterschiedlichen Stranggruppen, die die gerade von dem SM 540 ausgeführt werden, aufgeteilt. Die Registerdatei 620 stellt temporären Speicherplatz für Operanden bereit, die mit den Datenpfaden der Funktionseinheiten verknüpft sind.Each
Jeder SM 540 umfasst L Verarbeitungskerne 450. In einer Ausführungsform beinhaltet der SM 540 eine große Anzahl (beispielsweise 192, usw.) an individuellen Verarbeitungskernen 450. Jeder Kern 450 kann eine Verarbeitungseinheit mit einfacher Genauigkeit in vollständiger Pipeline-Konfiguration aufweisen, die eine Gleitkomma-Arithmetik-Logikeinheit und eine Ganzzahl- Arithmetik-Logikeinheit aufweist. Der Kern 450 kann ferner eine Verarbeitungseinheit mit doppelter Genauigkeit, die eine Gleitkomma-Arithmetik-Logikeinheit enthält, aufweisen. In einer Ausführungsform implementieren die Gleitkomma-Arithmetik-Logikeinheiten den IEEE 754-4008-Standard für Gleitkomma-Arithmetik. Jeder SM 540 umfasst ferner M SFUs 652, die spezielle Funktionen (beispielsweise Pixel-Mischoperationen und dergleichen) ausführen, und N LSUs 654, die Lade-und Speicheroperationen zwischen dem gemeinsam genutzten Speicher/L1-Cache-Speicher 670 und der Registerdatei 620 umsetzen. In einer Ausführungsform beinhaltet der SM 540 192 Kerne 650, 32 SFUs 652 und 32 LSUs 654.Each
Jeder SM 540 weist ein Verbindungsnetzwerk 680 auf, das jede der Funktionseinheiten mit der Registerdatei 620 und dem gemeinsam genutzten Speicher/L1-Cache-Speicher 670 verbindet. In einer Ausführungsform ist das Verbindungsnetzwerk 680 eine Kreuzverbindungseinheit, die ausgebildet sein kann, jede beliebige Funktionseinheit mit jedem beliebigen Register in der Registerdatei 620 oder den Speicherstellen in dem gemeinsam genutzten Speicher/L1-Cache-Speicher 670 zu verbinden.Each
Der gemeinsam genutzte Speicher/L1-Cache-Speicher 670 ist ein Array an internem Speicher, der in einer Ausführungsform als gemeinsam genutzter Speicher oder als ein L1-Cache-Speicher oder als eine Kombination beider ausgebildet sein kann, wie dies durch die Anwendung erforderlich ist. Beispielsweise kann der gemeinsam genutzte Speicher/L1-Cache-Speicher 670 64 kB an Speicherkapazität aufweisen. Der gemeinsam genutzte Speicher/L1-Cache-Speicher 670 kann als 64 kB eines gemeinsam benutzten Speichers oder eines L1-Cache-Speichers oder als eine Kombination der beiden, etwa als 16 kB an L1-Cache-Speicher und 48 kB an gemeinsam genutztem Speicher konfiguriert sein.Shared memory/
Die PPU 400, die zuvor beschrieben ist, kann eingerichtet sein, äußerst parallele Berechnungen wesentlich schneller als konventionelle CPUs auszuführen. Die parallele Berechnung hat Vorteile bei der Grafikverarbeitung, der Datenkomprimierung, in biometrischen Prozessen, bei Datenstromverarbeitungsalgorithmen und dergleichen.The
In einer Ausführungsform umfasst die PPU 400 eine Graphikverarbeitungseinheit (GPU). Die PPU 400 ist ausgebildet, Befehle zu empfangen, die Schattierungsprogramme zur Verarbeitung von Grafikdaten spezifizieren. Grafikdaten können als eine Gruppe von Grundformen, etwa Punkte, Linien, Dreiecke, Quadrate, Dreiecksstreifen und dergleichen definiert sein. Typischerweise enthält eine Grundform Daten, die eine Anzahl an Eckpunkten für die Grundform (beispielsweise in einem Modellraum-Koordinatensystem) sowie Attribute, die jedem Eckpunkt der Grundform zugeordnet sind, spezifizieren. Die PPU 400 kann ausgebildet sein, die grafischen Grundformen zu verarbeiten, um einen Bildblockpuffer (das heißt, Pixeldaten für jedes Pixel der Anzeige) zu erzeugen.In one embodiment,
Eine Anwendung schreibt Modelldaten für eine Szene (d.h., eine Ansammlung von Eckpunkten und Attributen) in einen Speicher, etwa einen Systemspeicher oder den Speicher 404. Die Modelldaten definieren jedes der Objekte, das auf einer Anzeige sichtbar sein kann. Die Anwendung tätigt dann einen API-Aufruf in den Treiber-Systemkern, der anfordert, dass die Modelldaten als Bild erzeugt und angezeigt werden. Der Treiber-Systemkern liest die Modelldaten aus und schreibt Befehle in den einen oder die mehreren Ströme, so dass sie Operationen ausführen, um die Modelldaten zu verarbeiten. Die Befehle können unterschiedliche Schattierungsprogramme ansprechen, die in den SMs 540 der PPU 400 zu implementieren sind, wozu eine Vertex-Schattierungseinheit und/oder eine Hüllen-Schattierungseinheit, eine Bereichsschattierungseinheit, eine Geometrie-Schattierungseinheit und eine Pixel-Schattierungseinheit gehören. Beispielsweise können einer oder mehrere der SMs 540 eingerichtet sein, eine Vertex-Schattierungsprogramm auszuführen, das eine Anzahl an Eckpunkten, die durch die Modelldaten definiert sind, verarbeitet. In einer Ausführungsform können die unterschiedlichen SMs 540 ausgebildet sein, gleichzeitig unterschiedliche Schattierungsprogramme auszuführen. Beispielsweise kann eine erste Teilgruppe der SMs 540 ausgebildet sein, eine Vertex-Schattierungsprogramm auszuführen, während eine zweite Teilgruppe der SMs 540 ausgebildet sein kann, ein Pixel-Schattierungsprogramm auszuführen. Die erste Teilgruppe der SMs 540 verarbeitet Vertex-Daten, um verarbeitete Vertex-Daten zu erzeugen, und schreibt die verarbeiteten Vertex-Daten in den L2-Cache-Speicher 560 und/oder den Speicher 404. Nachdem die verarbeiteten Vertex Daten in ein Raster eingeteilt sind (d.h., von den dreidimensionalen Daten in zweidimensionale Daten in einem Bildschirmraum transformiert sind), um Fragmentdaten zu erzeugen, führt die zweite Teilgruppe der SMs 540 eine Pixel-Schattierungseinheit aus, um verarbeitete Fragmentdaten zu erzeugen, die dann mit anderen verarbeiteten Fragmentdaten gemischt und in den Bildblockpuffer im Speicher 404 geschrieben werden. Das Vertex-Schattierungsprogramm und das Pixel-Schattierungsprogramm können gleichzeitig abgearbeitet werden, wodurch unterschiedliche Daten aus der gleichen Szene in der Art einer Pipeline verarbeitet werden, bis alle Modelldaten für die Szene als Bild in dem Bildblockpuffer abgelegt sind. Sodann kann der Inhalt des Bildblockpuffers zu einer Anzeigesteuerung für das Anzeigen auf einer Anzeigeeinrichtung übertragen werden.An application writes model data for a scene (i.e., a collection of vertices and attributes) to a memory, such as system memory or
Die PPU 400 kann in einen Tisch-Rechner, einem tragbaren Computer, einem Tablett-Computer, einem intelligenten Telefon (beispielsweise ein drahtloses 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 400 als ein einziges Halbleitersubstrat ausgebildet. In einer weiteren Ausführungsform ist die PPU 400 in einem System-auf-einem-Chip (SoC) zusammen mit einer oder mehreren anderen Logikeinheiten, etwa einer CPU mit reduziertem Befehlssatz-Rechner (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-Analog-Wandler (DAC) und dergleichen enthalten.The
In einer Ausführungsform kann die PPU 400 in einer Grafikkarte enthalten sein, die eine oder mehrere Speichereinrichtungen 404, etwa einen GDDR5 SDRAM aufweist. Die Grafikkarte kann ausgebildet sein, mit einem PCIe-Abschnitt auf einer Hautplatine eines Tischrechners in Verbindung zu treten, der beispielsweise einen Nordbrücken-Chipsatz und einen Südbrücken-Chipsatz aufweist. In einer noch weiteren Ausführungsform kann die PPU 400 eine integrierte Graphikverarbeitungseinheit (iGPU) sein, die in dem Chipsatz (d.h., Nordbrücke) der Hauptplatine enthalten ist.In one embodiment,
Diese Erfindung beschreibt ein Verfahren zur Erzeugung eines augennahen Lichtfeldes - eine Gruppe von Strahlen, die von einer Lichtfeldanzeige in unmittelbarer Nähe des Auges ausgesendet werden. Das Verfahren erlaubt traditionellere Bildquellen zu verwenden, um die Farbe jedes Strahls zu bestimmen, anstatt unbedingt eine Strahlenverfolgung einzusetzen. Lichtquellen können monoskopische (d.h., normale 2D-Bilder) oder stereoskopische (ein Bild für jedes Auge, Bilderzeugung mit korrekter zweiäugiger Perspektive), oder multiskopisch sein, wobei mehrere Ansichten für eine Gruppe unterschiedlicher Betrachtungspositionen und Kameraorientierungen erzeugt werden. Multiskopische Daten sind das Datenformat, das für Multibetrachtungs-3D-Fernsehen eingesetzt wird, das aber auch andere Formen umfasst, etwa mehrere Panoramen, die von Anwendungen wie etwa Google Earth® bereitgestellt werden. Ein Gruppe aus Ursprungsbildern in vielen unterschiedlichen Datenformaten kann eingesetzt werden, um die Farbe eines Strahls bei Kenntnis, wie die Ursprungsbilder erzeugt wurden und Kenntnis der Konfiguration der speziellen augennahen Lichtfeldanzeige, abgeschätzt werden.This invention describes a method of generating a near-eye light field - an array of rays emitted from a light field display in close proximity to the eye. The method allows more traditional image sources to be used to determine the color of each ray, rather than necessarily using ray tracing. Light sources can be monoscopic (i.e., normal 2D images), or stereoscopic (one image for each eye, imaging with correct binocular perspective), or multiscopic, where multiple views are generated for a set of different viewing positions and camera orientations. Multiscopic data is the data format used for multiview 3D television, but also includes other forms such as multiple panoramas provided by applications such as Google Earth®. A set of source images in many different data formats can be used to estimate the color of a ray knowing how the source images were generated and knowing the configuration of the particular near-eye light field display.
Im Schritt 630 werden bestehende Bilder empfangen. Die bestehenden Bilder können individuelle zweidimensionale Bilder, stereoskopische Bildpaare oder multiskopische Bildgruppen sein. Wenn eine Augenverfolgung eingesetzt wird, können Ursprungsbilder bzw. Ausgangsbilder in einer mikroskopischen Bildgruppe mit bester Übereinstimmung für jedes Auge ausgewählt werden. In einer Ausführungsform werden zwei oder mehr Ursprungsbilder einer mikroskopischen Bildgruppe interpoliert, um ein passendes Ursprungsbild zu erzeugen. Im Schritt 635 werden die bestehenden Bilder vorverarbeitet, wenn eine Bildfehlerbehebung aktiviert ist. In einer Ausführungsform werden die bestehenden Bilder unter Anwendung der Tiefpassfilterlänge gefiltert. Wenn eine Bildfehlerbehebung deaktiviert ist, kann der Schritt 635 weggelassen werden. Im Schritt 640 werden die vorverarbeiteten bestehenden Bilder als Textur-Abbildungen gespeichert.In
Im Schritt 645 wird ein Texturelement einer Textur-Abbildung, die einem der bestehenden Bilder entspricht, auf ein Pixel auf der Mikro-Anzeige 250, der linken Mikro-Anzeige 251 oder der rechten Mikro-Anzeige 252 abgebildet. Wenn die Textur-Abbildung einem individuellen zweidimensionalen Bild entspricht, wird das Texturelement auf ein Pixel auf der linken Mikro-Anzeige 251 und auf ein Pixel auf der rechten Mikro-Anzeige 252 abgebildet bzw. diesem zugeordnet. Wenn die Textur-Abbildung dem Bild für das linke Auge eines stereoskopischen Bildpaares entspricht, dann wird das Texturelement auf ein Pixel auf der linken Mikro-Anzeige 251 abgebildet. Wenn die Textur-Abbildung dem Bild des rechten Auges eines stereoskopischen Bildpaares entspricht, dann wird das Texturelement auf der rechten Mikro-Anzeige 252 abgebildet. Die Schritte 645-672 (die als Schritte 685 gezeigt sind) können parallel ausgeführt werden, um mehrere Pixel der linken Mikro-Anzeige 251 und der rechten Mikro-Anzeige 252 zu verarbeiten. Beispielsweise kann jeder Strang Koordinaten eines Texturelements empfangen und die Texturelement-Koordinaten auf Koordinaten der linken Mikro-Anzeige 251 oder der rechten Mikro-Anzeige 252 abbilden.At
Im Schritt 655 wird eine optische Vorrichtung (beispielsweise Mikrolinse in dem Mikrolinsen-Array 255, das linke Mikrolinsen-Array 256, das rechte Mikrolinsen-Array 257, der Lichtpunkt in dem linken Lichtpunkte-Array 276 oder der Lichtpunkt in dem rechten Lichtpunkte-Array 277), die dem Pixel auf der Mikro-Anzeige entspricht (beispielsweise die Mikro-Anzeige 250, linke Mikro-Anzeige 251, rechte Mikro-Anzeige 252, linke Mikro-Anzeige 271 oder rechte Mikro-Anzeige 272), ermittelt. Im Schritt 660 wird ein Strahl, der durch das Pixel und die optische Vorrichtung definiert ist, ermittelt. Wenn beispielsweise die optische Vorrichtung ein Mikrolinsen-Array ist, ist der Strahl durch die (x, y, z) Position des Pixels und die (x, y, z) Position des optischen Mittelpunkts der Mikrolinse definiert. Wenn die optische Vorrichtung ein Lichtpunkte-Array ist, dann ist der Strahl durch die (x, y, z) Position des Pixels und die (x, y, z) Position des Mittelpunkts des Lichtpunktes definiert. Im Schritt 665 wird der Strahl mit der zweidimensionalen virtuellen Anzeigeebene 210 zum Schneiden gebracht, um Textur-Abbildungskoordinaten, die dem Pixel entsprechen, zu erzeugen. Im Schritt 672 wird eine Farbe für das Pixel auf der Grundlage der Textur-Abbildungskoordinaten berechnet. Es können mehrere Texturelemente (beispielsweise Farbabtastungen) aus der Textur-Abbildung ausgelesen und kombiniert (d.h., gefiltert) werden, um die Farben für das Pixel zu berechnen. Wenn die Schritte 645-672 parallel ausgeführt werden, berechnet jeder Strang eine Farbe für die linke Mikro-Anzeige 251 oder die rechte Mikro-Anzeige 252.In
Im Schritt 675 werden die berechneten Farben für die Pixel gespeichert, um mindestens ein Mikro-Anzeigenbild zu erzeugen. Die Farben können in eine Datenstruktur (beispielsweise Bildblockpuffer) für ein Mikro-Anzeigenbild in einem Speicher gespeichert werden. Die Pixelfarben für die linke Mikro-Anzeige 251 definieren ein linkes Mikro-Anzeigenbild und die Pixelfarben für die rechte Mikro-Anzeige 252 definieren ein rechtes Mikro-Anzeigenbild. Im Schritt 682 ermittelt das Schattierungsprogramm, ob ein weiteres bestehendes Bild verarbeitet werden soll, und wenn nicht, endet das Schattierungsprogramm. Ansonsten werden die Schritte 685 wiederholt, um ein oder mehrere weitere Mikro-Anzeigenbilder zu erzeugen.At
Der Prozessor 714 repräsentiert generell eine beliebige Art oder eine Form einer Verarbeitungseinheit, die in der Lage ist, Daten zu verarbeiten oder Befehle zu übersetzen und auszuführen. In gewissen Ausführungsformen kann der Prozessor 714 Befehle aus einer Software-Anwendung oder Modul empfangen. Diese Befehle können den Prozessor 714 veranlassen, die Funktionen einer oder mehrerer der anschaulichen Ausführungsformen auszuführen, die hierin beschrieben und/oder dargestellt sind.
Der Systemspeicher 716 repräsentiert generell eine beliebige Art oder Form eines flüchtigen oder nicht-flüchtigen Speichergeräts oder eines Mediums, das in der Lage ist, Daten und/oder andere computerlesbare Befehle zu speichern. Zu Beispielen des Systemspeichers 716 gehören, ohne Einschränkung, Einrichtungen in Form von RAM, ROM, eines Flash-Speichers oder eines anderen geeigneten Speichers. Obwohl dies nicht erforderlich ist, kann in gewissen Ausführungsformen das Rechensystem 710 sowohl eine flüchtige Speichereinheit (beispielsweise den Systemspeicher 716) und eine nicht-flüchtige Speichereinrichtung (beispielsweise eine primäre Speichereinrichtung 732) aufweisen.
Das Rechensystem 710 kann ferner eine oder mehrere Komponenten oder Elemente zusätzlich zu dem Prozessor 714 und Systemspeicher 716 aufweisen. Beispielsweise weist in der Ausführungsform der
Die Speichersteuerung 718 repräsentiert in allgemeiner Weise eine beliebige Art oder Form einer Einrichtung, die in der Lage ist, einen Speicher oder Daten zu handhaben, oder eine Kommunikation zwischen einer oder mehreren Komponenten des Rechensystems 710 zu steuern. Beispielsweise kann die Speichersteuerung 718 die Kommunikation zwischen dem Prozessor 714, dem Systemspeicher 716 und der I/O-Steuerung 720 über die Kommunikationsinfrastruktur 712 steuern.
Die I/O-Steuerung 720 repräsentiert in allgemeiner Weise eine beliebige Art oder Form eines Moduls, das in der Lage ist, die Eingabe- und Ausgabefunktionen einer Recheneinrichtung zu koordinieren und/oder zu steuern. Beispielsweise kann die I/O-Steuerung 720 den Austausch von Daten zwischen einem oder mehreren Elementen des Rechensystems 710, etwa dem Prozessor 714, dem Systemspeicher 716, der Kommunikationsschnittstelle 722, einem Anzeige-Adapter 726, der Eingabeschnittstelle 730 und der Speicherschnittstelle 734 steuern oder ermöglichen.I/
Die Kommunikationsschnittstelle 722 repräsentiert in breiter Weise eine beliebige Art oder Form einer Kommunikationseinrichtung oder eines Adapters, die in der Lage sind, eine Kommunikation zwischen dem anschaulichen Rechensystem 710 und einem oder mehreren weiteren Geräten zu ermöglichen. Beispielsweise kann die Kommunikationsschnittstelle 722 eine Kommunikation zwischen dem Rechensystem 710 und einem privaten oder öffentlichen Netzwerk, das weitere Rechensysteme enthält, ermöglichen. Zu Beispielen der Kommunikationsschnittstelle 722 gehören, ohne Einschränkung, eine verdrahtete Netzwerkschnittstelle (etwa eine Netzwerk-Schnittstellenkarte), eine drahtlose Netzwerkschnittstelle (etwa eine drahtlose Netzwerk-Schnittstellenkarte), ein Modem, oder eine andere geeignete Schnittstelle. In einer Ausführungsform stellt die Kommunikationsschnittstelle 722 eine direkte Verbindung zu einem entfernten Dienstleister über eine direkte Verbindung zu dem Netzwerk, etwa das Internet, bereit. Die Kommunikationsschnittstelle 722 kann ferner eine derartige Verbindung in indirekter Weise über eine andere geeignete Verbindung bereitstellen.Communications interface 722 broadly represents any type or form of communication device or adapter capable of facilitating communication between
Die Kommunikationsschnittstelle 722 kann ferner einen Host-Adapter repräsentieren, der ausgebildet ist, eine Kommunikation zwischen dem Rechensystem 710 und einer oder mehreren weiteren Netzwerk- oder Speichereinrichtungen über einen externen Bus oder einen Kommunikationskanal zu ermöglichen. Zu Beispielen von Host-Adaptern gehören, ohne Einschränkung, Kleincomputer-System-Schnittstellen-(SCSI-) Host-Adapter, universelle serielle Bus-(USB) Host-Adapter, IEEE-(Institut für Elektro- und Elektronik-Ingenieure) 1394-Host-Adapter, serielle erweiterte Technologiezusätze (SATA) und externe SATA (eSATA)-Adapter, erweiterte Technologiezusätze (ATA) und parallele ATA (PATA) Host-Adapter, Glasfaserkanal-Schnittstellenadapter, Ethernet-Adapter oder dergleichen. Die Kommunikationsschnittstelle 722 kann es dem Rechensystem 710 ferner ermöglichen, an verteilter oder entfernter Rechnerkonfiguration teilzunehmen. Beispielsweise kann die Kommunikationsschnittstelle 722 Befehle von einer entfernten Einrichtung empfangen oder Befehle an eine entfernte Einrichtung zur Ausführung senden.The
Wie in
Wie in
Wie in
In einem Beispiel können Datenbanken 740 in der primären Speichereinrichtung 732 gespeichert sein. Die Datenbanken 740 können Teile einer einzigen Datenbank oder einer Recheneinrichtung repräsentieren oder sie können mehrere Datenbanken oder Recheneinrichtungen repräsentieren. Beispielsweise können die Datenbanken 740 nur einen Teil des Rechensystems 710 repräsentieren (oder darin gespeichert sein). Alternativ können die Datenbanken 740 eine oder mehrere physikalische separate Einrichtungen repräsentieren (oder darin gespeichert sein), auf die von einer Recheneinrichtung, etwa das Rechensystem 710, zugegriffen werden kann.In one example,
Es sei weiterhin auf
Es können viele andere Einrichtungen oder Subsysteme mit dem Rechensystem 710 verbunden sein. Andererseits müssen nicht notwendigerweise alle Komponenten und Einrichtungen, die in
Das computerlesbare Medium, das das Computerprogramm enthält, kann in das Rechensystem 710 geladen werden. Das gesamte oder einen Teil des Computerprogramms, das auf dem computerlesbare Medien gespeichert ist, kann dann in dem Systemspeicher 716 und/oder diversen Teilen der Speichereinrichtungen 732 und 733 gespeichert werden. Bei Ausführung durch den Prozessor 714 kann ein in das Rechensystem 710 geladenes Computerprogramm den Prozessor 714 veranlassen, die Funktionen der anschaulichen Ausführungsformen, die hierin beschrieben und/oder dargestellt sind, auszuführen und/oder ein Mittel zur Ausführung der Funktionen sein. Zusätzlich oder alternativ können die hierin beschriebenen und/oder gezeigten anschaulichen Ausführungsformen in Firmware und/oder Hardware umgesetzt werden.The computer-readable medium containing the computer program can be loaded into the
Beispielsweise kann ein Computerprogramm zur Ermittlung eines Bildes und/oder einer Maske, die in einer augennahen Anzeigenschicht 515 auf der Grundlage eines gewünschten Bildes 525 zu kodieren ist, auf dem computerlesbaren Medien gespeichert sein und kann dann in den Systemspeicher 716 und/oder in diverse Teile der Speichereinrichtungen 732 und 733 gespeichert werden. Wenn das Computerprogramm von dem Prozessor 714 ausgeführt wird, kann es den Prozessor 714 veranlassen, die Funktionen auszuführen und/oder ein Mittel zu deren Ausführung zu sein, die erforderlich sind, um die Ermittelung eines Bildes und/oder der Maske, die unterschiedliche Abschwächungsmuster kodiert, wie dies zuvor erläutert ist, auszuführen.For example, a computer program for determining an image and/or mask to be encoded in a near-
Obwohl die vorhergehende Offenbarung diverse Ausführungsformen unter Anwendung spezieller Blockansichten, Flussdiagramme und Beispielen angibt, kann jede Blockdiagrammkomponente, jeder Schritt eines Flussdiagramms, jede Operation und/oder Komponente, die hierin beschrieben und/oder dargestellt sind, individuell und/oder kollektiv unter Anwendung einer breiten Fülle von Konfigurationen an Hardware, Software oder Firmware (oder einer beliebigen Kombination davon) implementiert werden. Ferner sollte die Offenbarung von Komponenten, die in anderen Komponenten enthalten sind, als Beispiele betrachtet werden, da viele andere Architekturen umgesetzt werden können, um die gleiche Funktion zu erreichen.Although the foregoing disclosure provides various embodiments using specific block diagrams, flowcharts, and examples, each block diagram component, flowchart step, operation, and/or component described and/or illustrated herein may individually and/or collectively using a broad Any number of hardware, software, or firmware configurations (or any combination thereof) can be implemented. Furthermore, the disclosure of components contained within other components should be considered as examples, as many other architectures can be implemented to achieve the same function.
Obwohl diverse Ausführungsformen zuvor beschrieben sind, sollte beachtet werden, dass diese lediglich als Beispiel und nicht als Einschränkung präsentiert sind. Somit sind die Breite und der Schutzbereich einer bevorzugten Ausführungsform nicht durch jegliche der zuvor beschriebenen anschaulichen Ausführungsformen beschränkt, sondern sie sind lediglich in Übereinstimmung mit den folgenden Patentansprüchen und ihren Äquivalenten festgelegt.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 are not limited by any of the illustrative embodiments described above, but are defined only in accordance with the following claims and their equivalents.
Die Prozessparameter und die Abfolge von Schritten, die hierin beschrieben und/oder dargestellt sind, sind lediglich als Beispiel angegeben. Obwohl die Schritte, die hierin dargestellt und/oder beschrieben sind, in einer speziellen Reihenfolge hierin gezeigt oder erläutert sind, müssen beispielsweise diese Schritte nicht notwendigerweise in der dargestellten oder erläuterten Reihenfolge ausgeführt werden. Die diversen anschaulichen Verfahren, die hierin beschrieben und/oder dargestellt sind, können ferner einen oder mehrere der hierin beschriebenen oder dargestellten Schritte weggelassen oder können weitere Schritte zusätzlich zu den offenbarten Schritten enthalten.The process parameters and sequence of steps described and/or illustrated herein are given by way of example only. For example, although the steps illustrated and/or described herein are shown or discussed in a particular order herein, these steps do not necessarily have to be performed in the order illustrated or discussed. The various illustrative methods described and/or illustrated herein may also omit one or more of the steps described or illustrated herein, or may include additional steps in addition to the steps disclosed.
Obwohl diverse Ausführungsformen hierin im Zusammenhang von vollständig funktionellen Rechensystemen beschrieben und/oder dargestellt sind, können eine oder mehrere dieser anschaulichen Ausführungsformen als Programmprodukt in einer Vielzahl von Formen verteilt sein, unabhängig von der speziellen Art der computerlesbare Medien, die zum tatsächlichen Ausführen der Verteilung verwendet werden. Die hierin offenbarten Ausführungsformen können ferner unter Anwendung von Software-Modulen umgesetzt werden, die gewisse Aufgaben ausführen. Diese Software-Module können Skript-, Stapel- oder andere ausführbare Dateien enthalten, die auf einem computerlesbaren Speichermedium oder in einem Rechensystem gespeichert werden können. Diese Software-Module können ein Rechensystem so konfigurieren, dass es eine oder mehrere der hierin offenbarten anschaulichen Ausführungsformen ausführt. Ein oder mehrere der Software-Module, die hierin offenbart sind, können in einer Wolke-Rechenumgebung bzw. Cloud-Rechenumgebung implementiert werden. Wolke-Rechenumgebungen können diverse Dienste und Anwendungen über das Internet bereitstellen. Diese Wolke-basierten Dienste (beispielsweise Software als ein Dienst, Plattform als ein Dienst, Infrastruktur als ein Dienst, usw.) können über eine Netz-Browser bzw. Netz-Suchsoftware oder eine andere entfernte Schnittstelle abgerufen werden. Diverse hierin beschriebene Funktionen können durch eine entfernte Tischrechner-Umgebung oder eine andere Wolke-basierte Rechnerumgebung bereitgestellt werden.Although various embodiments are described and/or illustrated herein in the context of fully functional computing systems, one or more of these illustrative embodiments may be distributed as a program product in a variety of forms, regardless of the particular type of computer-readable media used to actually carry out the distribution will. The embodiments disclosed herein may also be implemented using software modules that perform certain tasks. These software modules may include script, batch, or other executable files that may be stored on a computer readable storage medium or computing system. These software modules can configure a computing system to perform one or more of the example embodiments disclosed herein. One or more of the software modules disclosed herein can be implemented in a cloud computing environment. Cloud computing environments can provide various services and applications over the Internet. These cloud-based services (e.g., software as a service, platform as a service, infrastructure as a service, etc.) can be accessed via web browser or other remote interface. Various functions described herein may be provided by a remote desktop environment or other cloud-based computing environment.
Claims (18)
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201361824914P | 2013-05-17 | 2013-05-17 | |
US61/824,914 | 2013-05-17 | ||
US14/160,497 US9582922B2 (en) | 2013-05-17 | 2014-01-21 | System, method, and computer program product to produce images for a near-eye light field display |
US14/160,497 | 2014-01-21 | ||
PCT/US2014/038270 WO2014186625A1 (en) | 2013-05-17 | 2014-05-15 | System, method, and computer program product to produce images for a near-eye light field display |
Publications (2)
Publication Number | Publication Date |
---|---|
DE112014002469T5 DE112014002469T5 (en) | 2016-02-11 |
DE112014002469B4 true DE112014002469B4 (en) | 2022-06-15 |
Family
ID=51895425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112014002469.4T Active DE112014002469B4 (en) | 2013-05-17 | 2014-05-15 | System and method for generating images for a near-eye light field display |
Country Status (4)
Country | Link |
---|---|
US (1) | US9582922B2 (en) |
CN (1) | CN105209960B (en) |
DE (1) | DE112014002469B4 (en) |
WO (1) | WO2014186625A1 (en) |
Families Citing this family (38)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10663714B2 (en) | 2010-10-28 | 2020-05-26 | Endochoice, Inc. | Optical system for an endoscope |
US9582922B2 (en) | 2013-05-17 | 2017-02-28 | Nvidia Corporation | System, method, and computer program product to produce images for a near-eye light field display |
US9519144B2 (en) | 2013-05-17 | 2016-12-13 | Nvidia Corporation | System, method, and computer program product to produce images for a near-eye light field display having a defect |
US9594247B2 (en) * | 2013-12-19 | 2017-03-14 | Nvidia Corporation | System, method, and computer program product for a pinlight see-through near-eye display |
WO2015184409A1 (en) * | 2014-05-30 | 2015-12-03 | Magic Leap, Inc. | Methods and systems for displaying stereoscopy with a freeform optical system with addressable focus for virtual and augmented reality |
JP2015230383A (en) * | 2014-06-05 | 2015-12-21 | キヤノン株式会社 | Image display device and image display system |
CN105717640B (en) * | 2014-12-05 | 2018-03-30 | 北京蚁视科技有限公司 | Near-to-eye based on microlens array |
CN107850788B (en) * | 2015-07-03 | 2020-10-27 | 依视路国际公司 | Method and system for augmented reality |
EP3374821A1 (en) | 2015-09-23 | 2018-09-19 | Medintec B.V. | Video glasses |
IL301884A (en) * | 2016-01-19 | 2023-06-01 | Magic Leap Inc | Augmented reality systems and methods utilizing reflections |
EP3235478A1 (en) | 2016-04-18 | 2017-10-25 | Universität Wien | Protective eyewear |
US10055867B2 (en) | 2016-04-25 | 2018-08-21 | Qualcomm Incorporated | Accelerated light field display |
US10453431B2 (en) * | 2016-04-28 | 2019-10-22 | Ostendo Technologies, Inc. | Integrated near-far light field display systems |
GB2550134A (en) * | 2016-05-09 | 2017-11-15 | Euro Electronics (Uk) Ltd | Method and apparatus for eye-tracking light field display |
US10089788B2 (en) * | 2016-05-25 | 2018-10-02 | Google Llc | Light-field viewpoint and pixel culling for a head mounted display device |
EP3261347A1 (en) * | 2016-06-22 | 2017-12-27 | Thomson Licensing | A method and a device for encoding a signal representative of a light-field content |
DE102016112326A1 (en) * | 2016-07-06 | 2018-01-11 | Dr. Ing. H.C. F. Porsche Aktiengesellschaft | Method and system for operating 3D glasses with iris properties |
US10504270B2 (en) | 2016-12-22 | 2019-12-10 | Apple Inc. | Resource synchronization for graphics processing |
US10324844B2 (en) | 2016-12-22 | 2019-06-18 | Apple Inc. | Memory consistency in graphics memory hierarchy with relaxed ordering |
US10223822B2 (en) | 2016-12-22 | 2019-03-05 | Apple Inc. | Mid-render compute for graphics processing |
US10445852B2 (en) | 2016-12-22 | 2019-10-15 | Apple Inc. | Local image blocks for graphics processing |
CN106991637B (en) * | 2017-02-28 | 2019-12-17 | 浙江大学 | Method for realizing multi-resolution light field decomposition by utilizing GPU (graphics processing Unit) parallel computation |
US20180255285A1 (en) | 2017-03-06 | 2018-09-06 | Universal City Studios Llc | Systems and methods for layered virtual features in an amusement park environment |
JP6264493B1 (en) * | 2017-05-19 | 2018-01-24 | 大日本印刷株式会社 | Display device |
WO2018217253A1 (en) * | 2017-05-26 | 2018-11-29 | Google Llc | Near-eye display with sparse sampling super-resolution |
US10789777B1 (en) * | 2017-06-29 | 2020-09-29 | Facebook Technologies, Llc | Generating content for presentation by a head mounted display based on data captured by a light field camera positioned on the head mounted display |
US11747616B2 (en) * | 2017-07-24 | 2023-09-05 | Sharp Kabushiki Kaisha | Display device and head mounted display |
JP6966718B2 (en) * | 2017-08-29 | 2021-11-17 | 国立大学法人 奈良先端科学技術大学院大学 | Display device |
CN108200330A (en) * | 2017-12-11 | 2018-06-22 | 虚拟现实(深圳)智能科技有限公司 | Double 8K image virtuals reality processing methods and system |
US10678056B2 (en) * | 2018-02-26 | 2020-06-09 | Google Llc | Augmented reality light field head-mounted displays |
CN111258062B (en) * | 2018-12-03 | 2022-02-15 | 昆山工研院新型平板显示技术中心有限公司 | Display unit, near-to-eye display optical module and near-to-eye display system |
CN109379581A (en) * | 2018-12-05 | 2019-02-22 | 北京阿法龙科技有限公司 | A kind of coordinate transform and display methods of wear-type double screen three-dimensional display system |
US11210772B2 (en) | 2019-01-11 | 2021-12-28 | Universal City Studios Llc | Wearable visualization device systems and methods |
CN113009692B (en) * | 2019-12-19 | 2023-06-16 | 中强光电股份有限公司 | Near-eye light field display device |
CN113132715B (en) * | 2019-12-31 | 2023-08-04 | Oppo广东移动通信有限公司 | Image processing method and device, electronic equipment and storage medium thereof |
CN111314614B (en) * | 2020-03-11 | 2021-08-13 | 北京字节跳动网络技术有限公司 | Image processing method and device, readable medium and electronic equipment |
CN111427166B (en) * | 2020-03-31 | 2022-07-05 | 京东方科技集团股份有限公司 | Light field display method and system, storage medium and display panel |
EP4172739A1 (en) * | 2020-06-29 | 2023-05-03 | Snap Inc. | Eyewear with shared gaze-responsive viewing |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6097394A (en) | 1997-04-28 | 2000-08-01 | Board Of Trustees, Leland Stanford, Jr. University | Method and system for light field rendering |
US20130082905A1 (en) | 2011-01-18 | 2013-04-04 | Disney Enterprises, Inc. | Multi-layer plenoptic displays that combine multiple emissive and light modulating planes |
US20130107024A1 (en) | 2009-04-28 | 2013-05-02 | Microsoft Corporation | Light-field display |
US20130120605A1 (en) | 2010-03-03 | 2013-05-16 | Todor G. Georgiev | Methods, Apparatus, and Computer-Readable Storage Media for Blended Rendering of Focused Plenoptic Camera Data |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5499138A (en) | 1992-05-26 | 1996-03-12 | Olympus Optical Co., Ltd. | Image display apparatus |
DE69429209T2 (en) | 1993-06-01 | 2002-06-27 | Sharp Kk | Image display device with back lighting |
US5883606A (en) | 1995-12-18 | 1999-03-16 | Bell Communications Research, Inc. | Flat virtual displays for virtual reality |
US6215593B1 (en) | 1996-11-13 | 2001-04-10 | Ian A. Bruce | Portable wide-field optical system with microlenses and fiber-optic image transfer element |
EP1004052A4 (en) | 1997-08-11 | 2000-11-08 | Telcordia Tech Inc | Apparatus and method for creating and displaying planar virtual images |
KR100785982B1 (en) | 2002-11-07 | 2007-12-14 | 산요덴키가부시키가이샤 | Three-dimensional video processing method and three-dimensional video display |
US7425951B2 (en) | 2002-12-27 | 2008-09-16 | Kabushiki Kaisha Toshiba | Three-dimensional image display apparatus, method of distributing elemental images to the display apparatus, and method of displaying three-dimensional image on the display apparatus |
KR100697837B1 (en) | 2003-09-18 | 2007-03-20 | 가부시끼가이샤 도시바 | 3-dimensional image displaying device |
EP1536399A1 (en) | 2003-11-26 | 2005-06-01 | Barco N.V. | Method and device for visual masking of defects in matrix displays by using characteristics of the human vision system |
US20050280894A1 (en) | 2004-04-02 | 2005-12-22 | David Hartkop | Apparatus for creating a scanning-column backlight in a scanning aperture display device |
JP4227076B2 (en) | 2004-05-24 | 2009-02-18 | 株式会社東芝 | Display device for displaying stereoscopic image and display method for displaying stereoscopic image |
JP4752309B2 (en) | 2005-04-07 | 2011-08-17 | ソニー株式会社 | Image display apparatus and method |
US7486341B2 (en) | 2005-11-03 | 2009-02-03 | University Of Central Florida Research Foundation, Inc. | Head mounted display with eye accommodation having 3-D image producing system consisting of, for each eye, one single planar display screen, one single planar tunable focus LC micro-lens array, one single planar black mask and bias lens |
TWI347453B (en) | 2007-06-23 | 2011-08-21 | Ind Tech Res Inst | Hybrid multiplexed 3d display and a displaying method thereof |
JP2011145607A (en) | 2010-01-18 | 2011-07-28 | Sony Corp | Head mount display |
US8482859B2 (en) | 2010-02-28 | 2013-07-09 | Osterhout Group, Inc. | See-through near-eye display glasses wherein image light is transmitted to and reflected from an optically flat film |
JP2012032611A (en) | 2010-07-30 | 2012-02-16 | Sony Corp | Stereoscopic image display apparatus |
JP2012053342A (en) | 2010-09-02 | 2012-03-15 | Sony Corp | Display apparatus |
JP5664031B2 (en) | 2010-09-02 | 2015-02-04 | ソニー株式会社 | Display device |
JP2012058599A (en) | 2010-09-10 | 2012-03-22 | Sony Corp | Stereoscopic image display device and image display element |
JP2012063704A (en) | 2010-09-17 | 2012-03-29 | Sony Corp | Display device |
AU2011316688B2 (en) | 2010-10-11 | 2014-10-23 | Graphic Security Systems Corporation | Method for constructing a composite image incorporating a hidden authentication image |
US9406166B2 (en) | 2010-11-08 | 2016-08-02 | Seereal Technologies S.A. | Display device, in particular a head-mounted display, based on temporal and spatial multiplexing of hologram tiles |
JP6168794B2 (en) | 2012-05-31 | 2017-07-26 | キヤノン株式会社 | Information processing method and apparatus, program. |
US9841537B2 (en) | 2012-07-02 | 2017-12-12 | Nvidia Corporation | Near-eye microlens array displays |
US9494797B2 (en) | 2012-07-02 | 2016-11-15 | Nvidia Corporation | Near-eye parallax barrier displays |
US9557565B2 (en) | 2012-07-02 | 2017-01-31 | Nvidia Corporation | Near-eye optical deconvolution displays |
US8754829B2 (en) | 2012-08-04 | 2014-06-17 | Paul Lapstun | Scanning light field camera and display |
JP6029380B2 (en) * | 2012-08-14 | 2016-11-24 | キヤノン株式会社 | Image processing apparatus, imaging apparatus including image processing apparatus, image processing method, and program |
JP6094855B2 (en) | 2012-09-27 | 2017-03-15 | Nltテクノロジー株式会社 | Liquid crystal display element, image display device, driving method of image display device, portable device |
KR20150136601A (en) | 2013-03-25 | 2015-12-07 | 에꼴 뽈리떼끄닉 뻬데랄 드 로잔느 (으뻬에프엘) | Method for displaying an image projected from a head-worn display with multiple exit pupils |
US9519144B2 (en) | 2013-05-17 | 2016-12-13 | Nvidia Corporation | System, method, and computer program product to produce images for a near-eye light field display having a defect |
US9582922B2 (en) | 2013-05-17 | 2017-02-28 | Nvidia Corporation | System, method, and computer program product to produce images for a near-eye light field display |
US9594247B2 (en) | 2013-12-19 | 2017-03-14 | Nvidia Corporation | System, method, and computer program product for a pinlight see-through near-eye display |
US10203762B2 (en) | 2014-03-11 | 2019-02-12 | Magic Leap, Inc. | Methods and systems for creating virtual and augmented reality |
-
2014
- 2014-01-21 US US14/160,497 patent/US9582922B2/en active Active
- 2014-05-15 DE DE112014002469.4T patent/DE112014002469B4/en active Active
- 2014-05-15 CN CN201480028202.5A patent/CN105209960B/en active Active
- 2014-05-15 WO PCT/US2014/038270 patent/WO2014186625A1/en active Application Filing
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6097394A (en) | 1997-04-28 | 2000-08-01 | Board Of Trustees, Leland Stanford, Jr. University | Method and system for light field rendering |
US20130107024A1 (en) | 2009-04-28 | 2013-05-02 | Microsoft Corporation | Light-field display |
US20130120605A1 (en) | 2010-03-03 | 2013-05-16 | Todor G. Georgiev | Methods, Apparatus, and Computer-Readable Storage Media for Blended Rendering of Focused Plenoptic Camera Data |
US20130082905A1 (en) | 2011-01-18 | 2013-04-04 | Disney Enterprises, Inc. | Multi-layer plenoptic displays that combine multiple emissive and light modulating planes |
Also Published As
Publication number | Publication date |
---|---|
CN105209960A (en) | 2015-12-30 |
CN105209960B (en) | 2018-05-18 |
US9582922B2 (en) | 2017-02-28 |
US20140340389A1 (en) | 2014-11-20 |
DE112014002469T5 (en) | 2016-02-11 |
WO2014186625A1 (en) | 2014-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112014002469B4 (en) | System and method for generating images for a near-eye light field display | |
US9519144B2 (en) | System, method, and computer program product to produce images for a near-eye light field display having a defect | |
DE102015113240A1 (en) | SYSTEM, METHOD AND COMPUTER PROGRAM PRODUCT FOR SHADING USING A DYNAMIC OBJECT ROOM GATE | |
DE102013114542B4 (en) | Display close to the eye with parallax lock | |
DE102018114929B4 (en) | SYSTEM AND METHOD FOR Rendering a Light Field | |
CN106204712B (en) | Piecewise linearity irregularly rasterizes | |
Duchowski et al. | Foveated gaze-contingent displays for peripheral LOD management, 3D visualization, and stereo imaging | |
DE102013114527B4 (en) | Close-to-eye display with a microlens array | |
DE102019119058A1 (en) | POINT CLOUD OPERATIONS | |
DE102017108096A1 (en) | SYSTEM, METHOD AND COMPUTER PROGRAM PRODUCT FOR TRANSMITTING TO VARIABLE SCRAP BY MEANS OF PROJECTIVE GEOMETRIC DISTORTION | |
DE102019117585A1 (en) | Selectively pack patches for immersive video | |
US7652674B2 (en) | On the fly hardware based interdigitation | |
DE102018132468A1 (en) | MULTI-GPU FRAME RENDERING | |
DE102018128699A1 (en) | Adjusting an angular sampling rate during rendering using gaze information | |
DE102019114970A1 (en) | ADVANCED IMMERSIVE MEDIA PIPELINE FOR CORRECTING ARTIFACTS AND CLARITY OF OBJECTS IN COMPUTING ENVIRONMENTS | |
JP5366547B2 (en) | Stereoscopic display device | |
DE102018114286A1 (en) | Perform a traversal stack compression | |
DE102013114373A1 (en) | Consistent vertex snap-in for variable-resolution rendering | |
DE102019119085A1 (en) | POINT-BASED RENDERING AND PROJECTION NOISE REMOVAL | |
CN110390708A (en) | Render the System and method for and non-volatile memory medium of optical distortion effect | |
CN107004399A (en) | The correcting vision carried out by graphics process | |
DE102013222685A1 (en) | System, method and computer program product for scanning a hierarchical depth map | |
DE102019117218A1 (en) | Reduced rendering of a video with six degrees of freedom | |
DE112017004918T5 (en) | Hybrid stereo rendering for depth extension in dynamic light field displays | |
DE102010048486A1 (en) | Image processing techniques |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R082 | Change of representative |
Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE |
|
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G02B0027220000 Ipc: G02B0030000000 |
|
R079 | Amendment of ipc main class |
Free format text: PREVIOUS MAIN CLASS: G02B0030000000 Ipc: G02B0030100000 |
|
R016 | Response to examination communication | ||
R018 | Grant decision by examination section/examining division | ||
R020 | Patent grant now final |