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 PDF

Info

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
Application number
DE112014002469.4T
Other languages
German (de)
Other versions
DE112014002469T5 (en
Inventor
Douglas Robert Lanman
David Patrick Luebke
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE112014002469T5 publication Critical patent/DE112014002469T5/en
Application granted granted Critical
Publication of DE112014002469B4 publication Critical patent/DE112014002469B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B27/00Optical systems or apparatus not provided for by any of the groups G02B1/00 - G02B26/00, G02B30/00
    • G02B27/01Head-up displays
    • G02B27/017Head mounted
    • G02B27/0172Head mounted characterised by optical features
    • GPHYSICS
    • G02OPTICS
    • G02BOPTICAL ELEMENTS, SYSTEMS OR APPARATUS
    • G02B3/00Simple or compound lenses
    • G02B3/0006Arrays
    • G02B3/0037Arrays characterized by the distribution or form of lenses
    • G02B3/0056Arrays characterized by the distribution or form of lenses arranged along two different directions in a plane, e.g. honeycomb arrangement of lenses
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N13/30Image reproducers
    • H04N13/332Displays for viewing with the aid of special glasses or head-mounted displays [HMD]
    • H04N13/344Displays 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 US 6097394 A beschreibt ein System zur Erzeugung von Ansichten von frei wählbaren Kamerapositionen. US 2013/0107024 A1 beschreibt eine Lichtfeldanzeige mit einer Anordnung von Mikrolinsen.the US6097394A describes a system for generating views from freely selectable camera positions. U.S. 2013/0107024 A1 describes a light field display with an array of microlenses.

Ü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 claim 1 and a storage medium according to claim 18 for generating images for a near-eye light field display. A ray defined by a pixel of a micro-display and an optical device of a near-eye light field display is identified (determined) and the ray is intersected with a two-dimensional virtual display plane to generate map coordinates corresponding to the match pixels. A color is calculated for the pixel based on the mapping coordinates. The optical device of the near-eye light field display may be, for example, a microlens of a microlens array placed between a viewer and an emissive microdisplay, or a spot of a light spot array placed behind a transmissive microdisplay relative to the viewer is.

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 aus 3B, wenn es gemäß einer Ausführungsform durch ein Mikrolinsen-Array betrachtet wird. 3C shows the picture of the micro display 3B , 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 aus 4 gemäß einer Ausführungsform. 5A Figure 12 shows a general processing cluster of the parallel processing unit 4 according to one embodiment.
  • 5B zeigt eine Partitionseinheit der Parallelverarbeitungseinheit aus 4 gemäß einer Ausführungsform. 5B shows a partition unit of the parallel processing unit 4 according to one embodiment.
  • 6A zeigt den Datenstrom-Multiprozessor aus 5A gemäß einer Ausführungsform. 6A shows the data stream multiprocessor 5A according to one embodiment.
  • 6B zeigt ein Flussdiagramm eines Verfahrens zur Erzeugung von Bildern für die augennahen Lichtfeldanzeigeeinrichtungen der 2A, 2D und 2C 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 FIG 2A , 2D and 2C 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 1) eines Computersystems oder einer ähnlichen elektronischen Recheneinrichtung oder eines Prozessors (beispielsweise Rechensystem 710 aus 7) bezeichnen. Das Computersystem oder die ähnliche elektronische Recheneinrichtung verarbeitet oder transformiert Daten, die als physikalische (elektronische) Größen innerhalb der Speicher des Computersystems, der Register oder anderer Informationsspeicher, Übertragungseinrichtungen oder Anzeigeeinrichtungen repräsentiert sind.However, it should be borne in mind that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient names given to those quantities. Unless otherwise stated in the following explanations, it should be noted that throughout this disclosure, explanations using terms such as "indicate", "generate", "produce", "calculate", "determine", "radiate" , "emit,""attenuate,""modulate,""transmit,""receive," or the like, actions and processes (e.g., flowcharts 100 from FIG 1 ) of a computer system or similar electronic computing device or processor (e.g., computing system 710 7 ) describe. The computer system or similar electronic computing device processes or transforms data as physical (electronic) quantities within the computer system's memories, registers or other information storage, transmission or display devices.

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.

1 zeigt ein Flussdiagramm eines Verfahrens 100 zur Erzeugung von Bildern für eine augennahe Lichtfeldanzeigeeinrichtung gemäß einer Ausführungsform. In einer Ausführungsform können die in 1 gezeigten Schritte durch einen Prozessor ausgeführt werden, der ausgebildet ist, ein Grafik-Schattierungsprogramm auszuführen. Im Schritt 105 wird ein Strahl, der durch ein Pixel einer Mikro-Anzeige und eine optische Vorrichtung der augennahen Lichtfeldanzeigeeinrichtung definiert ist, ermittelt. Im Zusammenhang der folgenden Beschreibung ist eine Mikro-Anzeige eine von hinten beleuchtete durchlässige Anzeige, etwa ein LCD-(Flüssigkristallanzeigen-) Panel oder eine emittierende Anzeige, etwa ein OLED-(organische lichtemittierende Dioden-) Panel oder Chip. Die augennahe Lichtfeldanzeigeeinrichtung umfasst die Mikro-Anzeige. 1 10 shows a flow diagram of a method 100 for generating images for a near-eye light field display according to an embodiment. In one embodiment, the in 1 The steps shown are performed by a processor configured to execute a graphics shading program. In step 105, a ray defined by a pixel of a micro-display and an optical device of the near-eye light field display device is determined. In the context of the following description, a microdisplay is a backlit transmissive display, such as an LCD (Liquid Crystal Display) panel, or an emissive display, such as an OLED (Organic Light Emitting Diode) panel or chip. The near-eye light field display includes the micro-display.

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 step 105 can. In the context of the following description, an array of microlenses is a two-dimensional array containing at least two microlenses. In one embodiment, the near-eye light field display is implemented in the form of an eyeglass form factor that includes two micro-displays and two micro-lens arrays to form a dual-eye near-eye light field display, with a first set of a micro-display and a micro-lens array in a left eye of the user, and a second set of micro-display and micro-lens array is associated with a right eye of the user.

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 step 105 is defined by a pixel of the micro-display and a point of light in the point of light array.

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 step 110, the ray is intersected with a two-dimensional virtual display plane to generate map coordinates corresponding to the pixel. In the context of the present description, the virtual display plane is a virtual plane that appears to the viewer to be positioned at or behind the near focus plane. In one embodiment, the virtual display plane is in front of a distant plane beyond which objects appear out of focus to the viewer.

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 step 115, a color for the pixel is calculated based on the mapping coordinates. In one embodiment, the mapping coordinates correspond to a texture map that stores an existing image. In one embodiment, the existing image, stored as a texture map, may be pre-processed to generate pixel colors for a defect corrected image. In the context of the following description, colors can be calculated for each pixel of the micro-display to process an existing image for display on the near-eye light field display device. If the existing image is a single image of an existing stereo image pair, the existing image for the other eye (left eye or right eye) can be processed to produce a corresponding left eye image or right eye image for display using the to generate near-eye light field display device. The stereo image pair that is created can be viewed simultaneously by the user of the near-eye light field display device to create a virtual image on the virtual display plane that appears three-dimensional. Thus, the three-dimensional qualities of the existing stereoscopic pair can also be present in the virtual image.

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.

2A zeigt ein Auge 205 eines Betrachters und eine augennahe Lichtfeldanzeigeeinrichtung 200 gemäß einer Ausführungsform. In einer Ausführungsform definiert eine Augenbox 206 Eigenschaften des Auges 205, etwa erwartete Durchmesser, Orientierungen (d.h., Rotationen) und Positionen der Pupille. Eine Breite der Augenbox 206 ist in 2A als we gezeigt. Objekte zwischen dem Auge 205 und einer Nahfokusebene 220 sind zu nahe an dem Auge 205, um klar wahrgenommen zu werden, da das Auge 205 nicht auf Objekte fokussieren kann, die näher an dem Auge 205 liegen als die Nahfokusebene 220. Das Auge 205 ist in der Lage, Objekte zu fokussieren, die an oder jenseits (d.h., weiter entfernt) der Nahfokusebene 220 liegen. Objekte, die sehr weit weg sind, können gegebenenfalls auch nicht klar in Erscheinung treten und ein Bereich, der als ein Akkomodationsbereich bezeichnet wird, innerhalb dessen Objekte klar in Erscheinung treten, ist durch die Nahfokusebene 220 und eine ferne Ebene (nicht gezeigt) begrenzt, die entsprechend einer Strecke von der Nahfokusebene 220 entfernt ist, die gleich dem Akkomodationsbereich ist. Da konventionelle Brille näher an dem Auge 205 als die Nahfokusebene 220 positioniert werden, ist ein Bild, das auf der Oberfläche konventioneller Brillen angezeigt wird, für den Betrachter nicht in klarer Weise sichtbar. In ähnlicher Weise wird auch ein bestehendes Bild, das von einer Mikro-Anzeige 250 angezeigt wird, für den Betrachter nicht klar sein. 2A 12 shows an eye 205 of a viewer and a near-eye light field display device 200 according to an embodiment. In one embodiment, an eye box 206 defines characteristics of the eye 205, such as expected diameters, orientations (ie, rotations), and positions of the pupil. A width of the eye box 206 is in 2A as w e shown. Objects between the eye 205 and a near focal plane 220 are too close to the eye 205 to be clearly perceived because the eye 205 cannot focus on objects that are closer to the eye 205 than the near focal plane 220. The eye 205 is in able to focus on objects that are at or beyond (ie, further away from) the near focus plane 220 . Objects that are very far away may also not appear clearly, and an area called an accommodation range within which objects appear clearly is bounded by the near focal plane 220 and a far plane (not shown). which is a distance from the near focus plane 220 equal to the accommodation range. Because conventional eyeglasses are positioned closer to the eye 205 than the near focal plane 220, an image displayed on the surface of conventional eyeglasses is not clearly visible to the viewer. Similarly, an existing image displayed by a micro-display 250 will also not be clear to the viewer.

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 micro-lens array 255 by a distance dl . The microlens array 255 is arranged at a distance d e which corresponds to an eye relief distance. A micro-display image displayed by the micro-display 250 appears to the viewer as being mapped onto a virtual display plane 210 located at a virtual display distance d v from the eye 205 . The micro-display image can be created from an existing image. The distance dv may be different for each eye 205, thereby making it possible to correct for optical aberration (ie, eyeglass prescription) of the viewer. The width of the virtual display plane 210 is w v and the width of the micro-display 250 is w s .

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 3B gezeigt ist.Typically, a three-dimensional scene is imaged to create a two-dimensional (2D) image for display on the micro-display 250 . A micro-display image displayed by micro-display 250 includes an elemental image corresponding to a view for each micro-lens in micro-lens array 255 . For example, an elementary image in the elementary image area 225 corresponding to the micro lens 253 is displayed. Elementary image area 225 is a two-dimensional area with a width of Δw s and is defined as the intersection of micro-display 250 with a projection from the pupil of eye 205 through microlens 253. Each elementary image area and corresponding microlenses (e.g., elemental image area 225 and microlens 252 ) serve as an independent lens-limited magnification unit, synthesizing an off-axis perspective projection of a virtual image located at a distance d v from the eye 205 (ie, in the virtual display plane 210). Parts of the virtual image are repeated across the different elementary image areas, as in 3B is shown.

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 micro-display 250 requires that each elementary image contained in the micro-display image be generated. In contrast, only a single image is generated for display on a conventional display device. In some cases, the 3D scene is not available for image generation, such as for existing content with conventional 2D images. However, existing content intended for display by a conventional display device can be rendered for display on the micro-display 250. In particular, existing stereoscopic image pairs are widely available for 3D television, and the existing stereoscopic image pairs can be processed for display on the micro-display 250.

2B zeigt eine zweiäugige augennahe Lichtfeldanzeigeeinrichtung 260 gemäß einer Ausführungsform. Die zweiäugige augennahe Lichtfeldanzeigeeinrichtung 260 umfasst eine linke Mikro-Anzeige 251, die mit einem linken Mikrolinsen-Array 256 als Paar vorgesehen ist, und eine rechte Mikro-Anzeige 252, die mit einem rechten Mikrolinsen-Array 257 als Paar vorgesehen ist. Die linke Mikro-Anzeige 251 und die rechte Mikro-Anzeige 252 sind durch einen Abstand bs, der von dem rechten Rand der linken Mikro-Anzeige 251 aus bis zu dem linken Rand der rechten Mikro-Anzeige 252 gemessen ist, getrennt. Der Zwischenpupillen-Abstand zwischen den Mittelpunkten der Pupillen des linken und des rechten Auges des Betrachters beträgt be. Die augennahe Lichtfeldanzeigeeinrichtung 260 simuliert die Erscheinungsform einer konventionellen stereoskopischen Anzeige, die sprechend einem Abstand dv von dem Betrachter (das heißt, an der virtuellen Anzeigeebene 210) angeordnet ist. In einer Ausführungsform ist be ein festgelegter, mittlerer Abstand, etwa ein Abstand zwischen den Augen anstatt ein dynamisch abgetasteter Zwischenpupillen-Abstand. 2 B 12 shows a binocular near-eye light field display 260 according to one embodiment. The binocular near-eye light field display 260 includes a left micro-display 251 paired with a left micro-lens array 256 and a right micro-display 252 paired with a right micro-lens array 257 . The left micro-display 251 and the right micro-display 252 are separated by a distance b s measured from the right edge of the left micro-display 251 to the left edge of the right micro-display 252 . The interpupillary distance between the centers of the pupils of the viewer's left and right eyes is b e . The near-eye light field display 260 simulates the appearance of a conventional stereoscopic display placed at a distance dv from the viewer (ie, at the virtual display plane 210). In one embodiment, b e is a fixed mean distance, such as an inter-eye distance, rather than a dynamically sampled inter-pupillary distance.

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 2B angegeben. Für ein monoskopisches bestehendes Bild wird lediglich ein einzelnes bestehendes Bild als eine Texturabbildung gespeichert, die verwendet wird, um die Pixelfarbe sowohl für die linke Mikro-Anzeige 251 als auch die rechte Mikro-Anzeige 252 zu ermitteln. Das bestehende Bild wird als eine Textur auf die virtuelle Anzeigeebene 210 abgebildet bzw. dieser zugeordnet, um ein virtuelles Bild zu erzeugen. Jedes Pixel des virtuellen Bildes in der virtuellen Anzeigeebene 210 entspricht einer Farbe, die durch das bestehende Bild definiert ist. Das virtuelle Bild wird dann verwendet, um Farben für jedes Pixel der linken Mikro-Anzeige 251 und der rechten Mikro-Anzeige 252 zu berechnen. Einfach ausgedrückt, eine Farbe eines Pixels auf einer Mikro-Anzeige wird berechnet, indem ein Strahl von dem Pixel auf der Mikro-Anzeige so ausgegeben wird, dass er die virtuelle Anzeigeebene 210 schneidet, und anschließend eine Farbe des Pixels auf einer Mikro-Anzeige unter Anwendung einer oder mehrerer Abtastungen des virtuellen Bildes an dem Schnittpunkt berechnet wird.A viewer looking through the near-eye light field display device 260 perceives a rectangular virtual display surface at the virtual image plane 210 on which is mapped a texture corresponding to the corresponding left and right eye views of an existing stereoscopic image pair. Therefore, a pair of texture maps is stored for an existing stereoscopic image pair. The truncated cones of the left and right eyes are indicated by dashed lines in 2 B specified. For a monoscopic existent image, only a single existent image is stored as a texture map that is used to determine the pixel color for both the left 251 and right 252 micro-displays. The existing image is mapped as a texture onto the virtual display plane 210 to create a virtual image. Each pixel of the virtual image in the virtual display plane 210 corresponds to a color defined by the existing image. The virtual image is then used to calculate colors for each pixel of the left micro-display 251 and the right micro-display 252. Simply put, a color of a pixel on a micro-display is calculated by outputting a ray from the pixel on the micro-display so that it intersects the virtual display plane 210 and then under a color of the pixel on a micro-display applying one or more samples of the virtual image at the point of intersection.

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 Void (main(){ //Auswerten der interpolierten Textur-Koordinaten. gl_TexCoord[0] = gl_MultiTExCoord0; // Simulieren der Vertex-Transformation, die von einer Pipeline mit //festgelegter Funktion ausgeführt wird gl_Position = gl_ModelViewProjectionMatrix*gl_Vertex; } The pseudo-code shown in TABLE 1 may be included in a vertex shader program to map the existing image into the virtual display plane 210. TABLE 1 Void (main(){ //Evaluate the interpolated texture coordinates. gl_TexCoord[0] = gl_MultiTExCoord0; // Simulate the vertex transform used by a pipeline // specified function is executed gl_Position = gl_ModelViewProjectionMatrix*gl_Vertex; }

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 field display device 260 requires mapping the color of the pixel of the left micro-display 251 and the right micro-display 252 such that the emitted light field approximates a virtual image on the virtual display plane 210 . The virtual image may include objects, such as virtual object 230, appearing at different depths relative to virtual display plane 210. FIG. For a pixel located at a distance x s from the center 215 of the left micro-display 251, ray tracing can be used to compute a color. The virtual object 230 appears to be displaced in front of the virtual display plane 210 as intended by the existing stereoscopic image pair. The depth of the virtual object 230 is not readily available after the 3D scene is created, but the intended displacements are substantially preserved when creating a stereoscopic image pair for the micro-display for the existing stereoscopic image pair.

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 2B gezeigt ist, definieren die 3D-Koordinaten des Mittelpunkts der Mikrolinse und des Pixels einen optischen Strahl 235. Zu beachten ist, dass die Abstände durch die Koordinate x beschrieben sind und entsprechende Abstände können ebenfalls als die y-Koordinate definiert werden, um Abstände yl und ys relativ zu einem Referenzpunkt auf der linken Mikro-Anzeige 251 zu erzeugen.The pixel is visible to the viewer's left eye through the left microlens array 256 which has an optical center that is laterally shifted a distance x l from the center 215 of the left microdisplay 251 . Each optical ray is defined by a point of a pixel on a micro-display and a point of the optical center of the cut micro-lens. As in 2 B As shown, the 3D coordinates of the center of the microlens and the pixel define an optical ray 235. Note that the distances are described by the coordinate x and corresponding distances can also be defined as the y coordinate to define distances y l and y s relative to a reference point on the left micro-display 251.

Der in TABELLE 2 gezeigte Pseudo-Code kann in einem Fragmentschattierungsprogramm enthalten sein, um die in 2A gezeigten Abmessungen und andere Systemparameter als einheitliche Variablen zu definieren. TABELLE 2 uniform sampler2D viewTexture; // Texturabbildung des bestehenden Bildes // Variablen der Mikro-Anzeige uniform vec2 microdisplayDim; // physikalische Abmessungen mm [w s ] uniform int microdisplayOrientation; // 0: aufrecht, 1: invertiert //Variablen des Mikrolinsen-Arrays uniform float microlensPitch; // Abstand (mm) [w l ] uniform float microlensDist; // Entfernung zur Mikro-Anzeige (mm) [d l ] uniform float microlensRotation; // Drehwinkel (radians) uniform vec2 microlensOffset; // Verschiebungen zum Ausrichten (mm) uniform bool microlensExcludeBorder; // auschließen der Teil-Mikrolinsen // entlang der Grenze der Mikro-Anzeige // Variablen des elementaren Bildes uniform float elemenalImagePitch; // Abstand (mm) [Δw s ] uniform vec2 elementalImageOffset; // Verschiebung zum Ursprung der Mikro-Anzeige //(mm) uniform vec4 elemenallmagerange, // Indexbereich (min Spalte, max Spalte, // min Zeile, max Zeile) // Variablen der virtuellen Anzeigeebene uniform vec2 screenDim; // physikalische Abmessungen (mm) [w v ] uniform float screenDist; // Abstand zum Mikrolinsen-Array (mm) [d v ] uniform vec2 screenPosition; // Verschiebung zum Ursprung der Mikro-Anzeige(mm) [o v ] The pseudo-code shown in TABLE 2 can be included in a fragment shader program to convert the in 2A dimensions shown and other system parameters as uniform variables. TABLE 2 uniform sampler2D viewTexture; // Texture Mapping Of The Existing Image // Micro-display variables uniform vec2 microdisplayDim; // physical dimensions mm [ w s ] uniform int microdisplayOrientation; // 0: upright, 1: inverted //Variables of the microlens array uniform float microlensPitch; // distance (mm) [ w l ] uniform float microlensDist; // distance to micro display (mm) [ d l ] uniform float microlens rotation; // angle of rotation (radians) uniform vec2 microlensOffset; // offsets to align (mm) uniform bool microlensExcludeBorder; // exclude the partial microlenses // along the border of the micro-display // elementary image variables uniform float elemenalImagePitch; // distance (mm) [Δ w s ] uniform vec2 elementalImageOffset; // Move to origin of micro display //(mm) uniform vec4 elementallmagerange, // index range(min column, max column, // min line, max line) // Virtual display layer variables uniform vec2 screenDim; // physical dimensions (mm) [ w v ] uniform float screenDist; // Distance to microlens array (mm) [ d v ] uniform vec2 screenPosition; // Shift to micro-display origin(mm) [ o v ]

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 vec2 microdisplayCoord; if (microdisplayOrientation == 0) microdisplayCoord = microdisplayDim*(gl_TexCoord[0].st - 0.5); else microdisplayCoord = microdisplayDim*(0.5 - gl_TexCoord[0].st); The displacement x s can be evaluated for a texture element with the texture map coordinates (s, t) based on the orientation and dimensions of the micro-display. The pseudo-code shown in TABLE 3 can be included in a fragment shader program to calculate the displacement x s for a pixel relative to the reference point on a microdisplay (microdisplayCoord). TABLE 3 vec2 microdisplayCoord; if (microdisplayOrientation == 0) microdisplayCoord = microdisplayDim*(gl_TexCoord[0].st - 0.5); else microdisplayCoord = microdisplayDim*(0.5 - gl_TexCoord[0].st);

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 mat2 R = mat2(cos(microlensRotation), -sin(microlensRotation), sin(microlensRotation), cos(microlensRotation) );; vec2 microlenslndex = floor(R* (microdisplayCoord -elementalImageOffset)/elementalImagePitch); vec2 microlensCoord = transpose(R)*microlensPitch*microlensIndex + microlensOffset; The position of the optical center of the corresponding microlens, x l , can be evaluated based on the orientation of the microlens array and the displacement x s . The pseudo-code shown in TABLE 4 can be included in a fragment shader program to calculate the optical center of the corresponding microlens, x 1 , (microlensCoord). TABLE 4 mat2 R = mat2(cos(microlensRotation), -sin(microlensRotation), sin(microlensRotation), cos(microlensRotation) );; vec2 microlensIndex = floor(R* (microdisplayCoord -elementalImageOffset)/elementalImagePitch); vec2 microlensCoord = transpose(R)*microlensPitch*microlensIndex + microlensOffset;

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: x v = x l + ( d v d e d l ) ( x s x s ) o v .

Figure DE112014002469B4_0001
Then the horizontal coordinate or shift of the centroid of the optical ray 235 and the virtual display plane 210 (ie, the virtual image) x v can be calculated by: x v = x l + ( i.e v i.e e i.e l ) ( x s x s ) O v .
Figure DE112014002469B4_0001

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 optical ray 235 with the virtual display plane 210 in a similar manner. In other embodiments, another reference position on the micro-display 251 can be used instead of the center point 251 to determine the distances x s , x l , ov and x v .

Der in TABELLE 5 gezeigte Pseudo-Code kann in einem Fragmentschattierungsprogramm für xv (screenCoord) enthalten sein. TABELLE 5 vec2 screenCoord = microlensCoord + (screenDist/microlensDist)*(microdisplayCoord- microlensCoord) - screenPosition; The pseudo-code shown in TABLE 5 can be included in a fragment shader program for x v (screenCoord). TABLE 5 vec2 screenCoord = microlensCoord + (screenDist/microlensDist)*(microdisplayCoord- microlensCoord) - screenPosition;

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 vec2 texCoord = screenCoord/screenDim; if( ((texCoord.x>0.0) && (texCoord.x<1.0)) && ((texCoord.y>0.0) && (texCoord.y<1.0)) ) { if ( ! microlensExcludeBorder || ( ((microlenslndex.x > elementalImageRange.x) && (microlenslndex.x < elementalImageRange.y)) && (microlenslndex.y > elementallmageRange.z) && (microlenslndex.y < elementalImageRange.w)) ) ) gl_FragColor = vec4(texture2D(viewTexture, texCoord).rgb, 1); else gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); } else gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); The color of the pixel gl_FragColor can be calculated by converting the screen coordinates (x v ,y v ) to texture map coordinates (s,t). Because artifacts can result when part of the virtual image is visible through peripheral microlenses, pixels lying outside of the virtual display plane 210 are set to black when the boolean variable microlensExcludeBorder is TRUE. TABLE 6 vec2 texCoord = screenCoord/screenDim; if( ((texCoord.x>0.0) &&(texCoord.x<1.0))&&((texCoord.y>0.0)&&(texCoord.y<1.0)) ) { if ( ! microlensExcludeBorder || ( ((microlenslndex.x > elementalImageRange.x) && (microlenslndex.x < elementalImageRange.y)) && (microlensindex.y > elementallmageRange.z) && (microlenslndex.y < elementalImageRange.w)) ) ) gl_FragColor = vec4(texture2D(viewTexture, texCoord).rgb, 1); else gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); } else gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);

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 left micro-display 251 pixel. Generating a set of rays defined by each pixel contained in the elementary image region corresponding to a microlens provides estimates of the color of each pixel in an elementary picture. Generating groups of rays for each elementary image area corresponding to a microlens provides estimates of the color of each pixel in the micro-display image for left micro-display 251 and in the micro-display image for right micro-display 252.

2C zeigt eine zweiäugige augennahe Lichtfeldanzeigeeinrichtung 280 gemäß einer Ausführungsform. Anders als bei der augennahen Lichtfeldanzeigeeinrichtung 260, die in 2B gezeigt ist, in der eine Linse (beispielsweise die Linse in dem linken Mikrolinsen-Array 256 und in dem rechten Mikrolinsen-Array 257) als eine optische Vorrichtung verwendet wird, die zwischen einem Betrachter und einer emittierenden Mikro-Anzeige (beispielsweise die linke Mikro-Anzeige 251 und die rechte Mikro-Anzeige 252) angeordnet ist, verwendet die augennahe Lichtfeldanzeigeeinrichtung 280 einen Lichtpunkt eines Lichtpunkte-Arrays, das hinter einer durchlässigen Mikro-Anzeige relativ zu dem Betrachter angeordnet ist. Die zweiäugige augennahe Lichtfeldanzeigeeinrichtung 260 weist eine linke Mikro-Anzeige 271 auf, die mit einem linken Lichtpunkte-Array 276 als Paar zusammengefasst ist, und eine rechte Mikro-Anzeige 272, die mit einem rechten Lichtpunkte-Array 277 als Paar zusammengefasst ist. 2C 12 shows a binocular near-eye light field display 280 according to one embodiment. Unlike the near-eye light field display device 260 shown in 2 B as shown, in which a lens (e.g., the lens in left microlens array 256 and in right microlens array 257) is used as an optical device positioned between a viewer and an emissive micro-display (e.g., left micro- Display 251 and the right micro-display 252), the near-eye light field display 280 uses a spot of light array located behind a transmissive micro-display relative to the viewer. The binocular near-eye light field display 260 includes a left micro-display 271 paired with a left light spot array 276 and a right micro-display 272 paired with a right light spot array 277 .

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 left micro-display 271 and the right micro-display 272 are separated by a distance b s measured from the right edge of the left micro-display 271 to the left edge of the right micro-display 272. The interpupillary distance between the centers of the pupils of the viewer's left and right eyes is b e . The near-eye light field display 280 simulates the appearance of a conventional stereoscopic display placed at a distance dv from the viewer (ie, at the virtual display plane 210). In one embodiment, b e is a fixed mean distance, such as an interocular distance, rather than a dynamically sampled interpupillary distance.

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 2C angezeigt. Für ein monoskopisches bestehendes Bild wird lediglich ein einzelnes bestehendes Bild als eine Textur-Abbildung gespeichert, die verwendet wird, um die Pixelfarbe sowohl für die linke Mikro-Anzeige 271 als auch die rechte Mikro-Anzeige 272 zu ermitteln. Das bestehende Bild wird auf eine Textur auf der virtuellen Anzeigeebene 210 abgebildet bzw. dieser zugeordnet, um ein virtuelles Bild zu erzeugen. Jedes Pixel des virtuellen Bilds an der virtuellen Anzeigeebene 210 entspricht einer Farbe, die durch das bestehende Bild festgelegt ist. Das virtuelle Bild wird dann verwendet, um Farben für jedes Pixel der linken Mikro-Anzeige 271 und der rechten Mikro-Anzeige 272 zu berechnen. Einfach ausgedrückt, wird eine Farbe eines Pixels in einer Mikro-Anzeige berechnet, indem ein Strahl ausgehend von dem Pixel auf der Mikro-Anzeige so verläuft, so dass dieser die virtuelle Anzeigeebene 210 schneidet, und anschließend wird eine Farbe des Pixels auf einer Mikro-Anzeige unter Verwendung einer oder mehrere Abtastungen des virtuellen Bilds am Schnittpunkt berechnet.A viewer looking through the near-eye light field display device 280 will perceive a rectangular virtual display surface at the virtual image plane 210 that has a corresponding left and right eye view of an existing stereoscopic image pair texture mapped. Therefore, a pair of texture maps is stored for an existing stereoscopic image pair. In other embodiments, the virtual display surface may have a different shape that is not necessarily rectangular. The left and right eye truncated cones are indicated by the dashed lines in 2C displayed. For a monoscopic existent image, only a single existent image is stored as a texture map that is used to determine the pixel color for both the left micro-display 271 and the right micro-display 272 . The existing image is mapped to a texture on the virtual display plane 210 to create a virtual image. Each pixel of the virtual image on the virtual display plane 210 corresponds to a color specified by the existing image. The virtual image is then used to calculate colors for each pixel of the left micro-display 271 and the right micro-display 272. Simply put, a color of a pixel on a micro-display is calculated by extending a ray from the pixel on the micro-display to intersect the virtual display plane 210, and then a color of the pixel on a micro-display is calculated. Display computed using one or more samples of the virtual image at the intersection.

Wie zuvor in Verbindung mit 2B erläutert ist, kann der in TABELLE 1 gezeigte Pseudo-Code in einem Vertex-Schattierungsprogramm enthalten sein, um das bestehende Bild auf die virtuelle Anzeigeebene 210 abzubilden. Die Erzeugung von Bildern für die augennahe Lichtfeldanzeigeeinrichtung 280 erfordert die Zuordnung der Farbe des Pixels der linken Mikro-Anzeige 271 und der rechten Mikro-Anzeige 272 derart, dass das ausgesandte Lichtfeld näherungsweise ein virtuelles Bild in der virtuellen Anzeigeebene 210 ergibt. Das virtuelle Bild kann Objekte enthalten, etwa das virtuelle Objekt 230, die in unterschiedlichen Tiefen relativ zu der virtuellen Anzeigeebene 210 erscheinen. Für ein Pixel, das mit einem Abstand xs zu dem Mittelpunkt 275 der linken Mikro-Anzeige 271 angeordnet ist, kann eine Strahlenverfolgung angewendet werden, um eine Farbe zu berechnen. Das virtuelle Objekt 230 erscheint auf vor der virtuellen 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 worden ist, um das bestehende stereoskopische Bildpaar zu erzeugen, aber die beabsichtigten Verschiebungen werden im Wesentlichen beibehalten, wenn ein stereoskopisches Bildpaar für eine Mikro-Anzeige für das bestehende stereoskopische Bildpaar erzeugt wird.As previously in connection with 2 B 1, the pseudo-code shown in TABLE 1 may be included in a vertex shader program to map the existing image onto virtual display plane 210. The generation of images for the near-eye light field display device 280 requires the assignment of the color of the pixel of the left micro-display 271 and the right micro-display 272 such that the emitted light field approximates a virtual image in the virtual display plane 210. The virtual image may include objects, such as virtual object 230, that appear at different depths relative to virtual display plane 210. FIG. For a pixel located at a distance x s from the center 275 of the left micro-display 271, ray tracing can be applied to compute a color. The virtual object 230 appears displaced in front of the virtual display plane 210 as intended by the existing stereoscopic image pair. The depth of the virtual object 230 is not readily available after the 3D scene has been generated to produce the existing stereoscopic image pair, but the intended displacements are essentially preserved when a stereoscopic image pair is used for a micro-display for the existing stereoscopic image pair is generated.

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 2C gezeigt ist, definieren die 3D-Koordinaten des Mittelpunkts des geschnittenen Lichtpunkts und das Pixel einen optischen Strahl 285. Zu beachten ist, dass die Abstände mit Hilfe der Koordinate x beschrieben sind, entsprechende Abstände können aber auch mit Hilfe der y-Koordinate definiert werden, um Abstände yl und ys relativ zu einem Referenzpunkt auf der linken Mikro-Anzeige 271 zu erzeugen.The pixel is visible to the viewer's left eye in the left micro-display 271, which has an optical center that is laterally offset from the center 275 of the left micro-display 271 by a distance x 1 . Each optical ray is defined by a point of a pixel on a microdisplay and by a point at the optical center of the intersected light spot in the corresponding light spot array. As in 2C is shown, the 3D coordinates of the center of the intersected spot of light and the pixel define an optical ray 285. Note that the distances are described using the x coordinate, but equivalent distances can also be defined using the y coordinate, to generate distances y l and y s relative to a reference point on the left micro-display 271.

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: x v = x l + ( d v d e d l ) ( x s x s ) o v .

Figure DE112014002469B4_0002
The displacement x l can be evaluated for a texture element or texel with the texture map coordinates (s, t) based on the orientation and the dimensions of the micro-display. The position of the optical center of the corresponding light spot x s can be evaluated based on the orientation of the light spot array and the displacement s l . Then the horizontal coordinate or displacement of the point of intersection of the optical ray 285 with the virtual display plane 210 (ie, virtual image) x v can be calculated by: x v = x l + ( i.e v i.e e i.e l ) ( x s x s ) O v .
Figure DE112014002469B4_0002

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 optical ray 285 and the virtual display plane 210 in a similar manner. In other embodiments, a reference position on the micro-display 271 other than the center 275 can be used to determine the distances x s , x l , ov base x v .

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 left micro-display 271. Generating a set of rays defined by each pixel that lies within the elementary image region that corresponds to a point of light provides estimates of the color of the pixel in an elementary image. Generating groups of rays for each elementary image area corresponding to a point of light provides estimates of the color of each pixel in the micro-display image for left micro-display 271 and in the micro-display image for right micro-display 272.

3A zeigt ein bestehendes Bild 300, das für ein Anzeigen auf einer augennahen Lichtfeldanzeigeeinrichtung gemäß einer Ausführungsform zu verarbeiten ist. Das bestehende Bild 300 ist als eine Texturabbildung bzw. Texturkarte (beispielsweise viewTexture) gespeichert, die verwendet wird, um eine Farbe für jedes Pixel eines Bildes einer Mikro-Anzeige zu berechnen. 3A FIG. 300 shows an existing image 300 to be processed for display on a near-eye light field display according to one embodiment. The existing image 300 is stored as a texture map (e.g., viewTexture) that is used to compute a color for each pixel of a micro-display image.

3B zeigt ein Bild 310 einer Mikro-Anzeige, das ein elementares Bild aufweist, das jeder Mikrolinse in dem Mikrolinsen-Array 255 gemäß einer Ausführungsform entspricht. Das Bild 310 der Mikro-Anzeige kann angezeigt werden von der Mikro-Anzeige 250, der Mikro-Anzeige 251 und/oder der Mikro-Anzeige 252. 3B FIG. 310 shows an image 310 of a micro-display including an elemental image corresponding to each micro-lens in the micro-lens array 255 according to one embodiment. Micro-display image 310 may be displayed by micro-display 250, micro-display 251, and/or micro-display 252.

3C zeigt ein virtuelles Bild 320, das das Bild 310 der Mikro-Anzeige aus 3B ist, das durch das Mikrolinsen-Array 255 gemäß einer Ausführungsform betrachtet wird. Wenn die Mikro-Anzeige 250 durch das Mikrolinsen-Array 255 betrachtet wird, wird das virtuelle Bild 320, das dem bestehenden Bild 300 entspricht, in der virtuellen Anzeigeebene 210 erzeugt. 3C FIG. 3 shows a virtual image 320 representing the image 310 of the micro-display 3B is viewed through microlens array 255 according to one embodiment. When the micro-display 250 is viewed through the micro-lens array 255, the virtual image 320 corresponding to the existing image 300 is created in the virtual display plane 210. FIG.

3D zeigt ein elementares Bild 330, das ohne Bildfehlerbehebung erzeugt ist, und ein elementares Bild, das mit Bildfehlerbehebung 340 gemäß einer Ausführungsform erzeugt ist. Das bestehende Bild 300 kann vorverarbeitet werden, bevor das Bild 310 für die Mikro-Anzeige erzeugt wird, um Bildfehler behobene elementare Bilder zu erzeugen. Wenn die Bildfehler behobenen elementaren Bilder als das Mikro-Anzeigenbild 310 enthalten sind, wird ein Bildfehler behobenes virtuelles Bild in der virtuellen Anzeigeebene 210 erzeugt. 3D FIG. 3 shows an elemental image 330 generated without de-corrosion and an elementary image generated with de-corrosion 340 according to one embodiment. The existing image 300 may be pre-processed prior to generating the image 310 for the micro-display to generate artifact corrected elemental images. When the artifact-removed elementary images are included as the micro-display image 310, a artifact-removed virtual image is generated in the virtual display plane 210. FIG.

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: p ^ v = M p w v = ( d v d e d l ) ( p w v ) ,

Figure DE112014002469B4_0003
wobei die Länge in normalisierten Textur-Koordinateneinheiten ausgedrückt ist, M einem Vergrößerungsfaktor entspricht und p die normalisierte Textur-Koordinate ist, die die Position eines Pixels repräsentiert, das nahe bei dem aktuellen Pixel p0 liegt, das gerade verarbeitet wird, wie dies nachfolgend detaillierter beschrieben ist.In one embodiment, stereoscopic image pairs are assumed to be oversampled relative to the near-eye light field display 260 resolution. A length of a low-pass filter p - v can be determined by the size of the pixels of the micro-display as they are enlarged by projection into the virtual display plane 210 . The parameter p̂ v can be calculated by: p ^ v = M p w v = ( i.e v i.e e i.e l ) ( p w v ) ,
Figure DE112014002469B4_0003
where the length is expressed in normalized texture coordinate units, M corresponds to a magnification factor, and p is the normalized texture coordinate representing the position of a pixel that is close to the current pixel p0 being processed, as described in more detail below is.

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 uniform sampler2D viewTexture; // Variablen für Bildfehlerbehebung uniform int ; antialiasDirection // Filterrichtung (0: horizontal, 1: vertikal) uniform float antialiasLength; // Filterlänge in normalisierten Textur-Koordinaten uniform int antialiasNumSamples; // Anzahl der Abtastungen entlang der Filterlänge void main() { // Textur-Koordinate auswerten vec2 p0 = gl_TexCoord[0].st; // Anwenden separiebaren Bildfehlerbehebungsfilters, wenn nötig if(antialiasNumSamples > 0) { // temporäre Bildfehler behebende Variablen auswerten float antialiasSampleOffset = antialiasLength/float(antialiasNumSamples - 1); float antialiasHalfLength = antialiasLength/2.0; float antialiasWeight = 1.0/float(antiallasNumSamples, vec3 color = vec3(0.0, 0.0, 0.0); vec2 p; // ID-Filter entlang horizontaler oder vertikaler Achse anwenden if (antialiasDirection == 0) { for (int i=0; i<antialiasNumSamples; i++){ p=p0+vec2(antialiasSampleOffset*float(i)-antialiasHalfLength, 0.0); color += antialiasWeight*texture2D(viewTexture, p).rgb; } } else { for (int i=0; i<antialiasNumSamples; i++){ p=p0+vec2(0.0, antialiasSampleOffset*float(i)-antialiasHalfLength); color += antialiasWeight*texture2D(viewTexture, p).rgb; } } gl_FragColor = vec4(color, 1.0); } else{ // Bildfehlerbehebung ist nicht erforderlich, daher Eingangsfarbe weitergeben gl FragColor = vec4(texture2D(viewTexture, p0).rgb, 1.0); } } The pseudo-code shown in TABLE 7 can be included in a fragment shader program to perform pre-processing for image defect removal. The variable antialiasLength is the parameter. As shown in the pseudo-code in TABLE 7, p0 is eventually assigned a new color during execution of a fragment shader program. The positions of neighboring pixels are stored in the temporary variable p, and then the colors of the neighboring pixels are averaged to find a color associated with p0. Although the pseudo-code in TABLE 7 implements a separable filter, which is typically chosen for reasons of efficiency, those skilled in the art will recognize that other filters are also possible, including non-separable filters. TABLE 7 uniform sampler2D viewTexture; // Variables for image debugging uniform int ; antialiasDirection // filter direction (0: horizontal, 1: vertical) uniform float antialiasLength; // Filter length in normalized texture coordinates uniform int antialiasNumSamples; // number of samples along the filter length void main() { // Evaluate texture coordinate vec2 p0 = gl_TexCoord[0].st; // Apply separable image error correction filter if needed if(antialiasNumSamples > 0) { // Evaluate temporary image error fixing variables float antialiasSampleOffset = antialiasLength/float(antialiasNumSamples - 1); float antialiasHalfLength = antialiasLength/2.0; float antialiasWeight = 1.0/float(antiallasNumSamples, vec3 color = vec3(0.0, 0.0, 0.0); vec2 p; // Apply ID filter along horizontal or vertical axis if (antialiasDirection == 0) { for (int i=0; i<antialiasNumSamples; i++){ p=p0+vec2(antialiasSampleOffset*float(i)-antialiasHalfLength, 0.0); color += antialiasWeight*texture2D(viewTexture, p).rgb; } } else { for (int i=0; i<antialiasNumSamples; i++){ p=p0+vec2(0.0, antialiasSampleOffset*float(i)-antialiasHalfLength); color += antialiasWeight*texture2D(viewTexture, p).rgb; } } gl_FragColor = vec4(color, 1.0); } else{ // Image error correction is not required, so pass input color gl FragColor = vec4(texture2D(viewTexture, p0).rgb, 1.0); } }

3E zeigt ein bestehendes Bild 350, das zum Anzeigen auf einer augennahen Lichtfeldanzeigeeinrichtung gemäß einer Ausführungsform zu verarbeiten ist. Das Muster auf dem Teekessel besteht aus diagonalen Streifen, die abwechselnd in rot, grün und blau gehalten sind (das Bild ist als Graustufenbild gezeigt). 3E 350 shows an existing image 350 to be processed for display on a near-eye light field display according to one embodiment. The pattern on the tea kettle consists of diagonal stripes alternating in red, green and blue (the image is shown as a grayscale image).

3F zeigt ein Mikro-Anzeigenbild 310 mit dem roten Kanal eines elementaren Bildes, das jedem Lichtpunkt in dem Lichtpunkte-Array 276 oder 277 entspricht, wenn die Lichtpunkte als Sechsecke geformt sind und in einem hexagonale Array gemäß einer Ausführungsform angeordnet sind. Das Mikro-Anzeigenbild 360 kann von der Mikro-Anzeige 271 und/oder der Mikro-Anzeige 272 angezeigt werden. In anderen Ausführungsformen können die Lichtpunkte eine andere Form haben, etwa die Form eines Quadrats, eines Rechtecks oder eines Kreises. 3F FIG. 3 shows a micro-display image 310 with the red channel of an elementary image corresponding to each light spot in the light spot array 276 or 277 when the light spots are shaped as hexagons and arranged in a hexagonal array according to one embodiment. Micro display image 360 may be displayed by micro display 271 and/or micro display 272 . In other embodiments, the light spots may have a different shape, such as a square, a rectangle, or a circle.

4 zeigt eine Parallelverarbeitungseinheit (PPU) 400 gemäß einer Ausführungsform. In einer Ausführungsform ist die PPU 400 ein mehrsträngiger Prozessor, der in einer oder mehreren integrierten Schaltungseinrichtungen implementiert ist. Die PPU 400 ist eine Bearbeitungszeit verbergende Architektur, die so gestaltet ist, dass sie eine große Anzahl an Strängen parallel verarbeitet. Ein Strang (d.h., ein Strang bzw. Thread der Ausführung) ist eine Instantiierung einer Gruppe von Befehlen, die geeignet sind, von der PPU 400 ausgeführt zu werden. In einer Ausführungsform ist die PPU 400 eine Graphikverarbeitungseinheit (GPU), die ausgebildet ist, eine Grafikverarbeitungs-Pipeline zur Verarbeitung dreidimensionaler (3D) Grafikdaten zu implementieren, um zweidimensionale (2D) Bilddaten für die Anzeige auf einer Anzeigeeinrichtung, etwa einer Flüssigkristallanzeigen-(LCD-) Einrichtung zu erzeugen. In anderen Ausführungsformen kann die PPU 400 verwendet werden, um Berechnungen für Allgemeinzwecke auszuführen. Obwohl ein einzelner anschaulicher paralleler Prozessor hierin aus anschaulichen Gründen bereitgestellt ist, sollte unbedingt beachtet werden, dass ein derartiger Prozessor lediglich aus anschaulichen Zwecken angegeben ist, und dass ein beliebiger Prozessor verwendet werden kann, um diesen zu ergänzen und/oder zu ersetzen. 4 FIG. 4 shows a parallel processing unit (PPU) 400 according to one embodiment. In one embodiment, PPU 400 is a multi-threaded processor implemented in one or more integrated circuit devices. The PPU 400 is a processing time-hiding architecture designed to process a large number of threads in parallel. A thread (ie, thread of execution) is an instantiation of a group of instructions suitable for execution by PPU 400 . In one embodiment, PPU 400 is a graphics processing unit (GPU) configured to implement a graphics processing pipeline for processing three-dimensional (3D) graphics data to generate two-dimensional (2D) image data for display on a display device, such as a liquid crystal display (LCD -) facility to generate. In other embodiments, PPU 400 may be used to perform general purpose computations. Although a single exemplary parallel processor is provided herein for illustrative purposes, it should be understood that such a processor is provided for illustrative purposes only and any processor may be used to supplement and/or replace it.

Wie in 4 gezeigt ist, weist die PPU 400 eine Eingabe/Ausgabe-(I/O-) Einheit 405, eine Host-Schnittstelleneinheit 410, eine Frontbereichseinheit 415, eine Disponiereinheit 420, eine Arbeitsverteilungseinheit 425, einen Netzknoten 430, eine Kreuzverbindungseinheit (Xbar) 670, einen oder mehrere allgemeine Verarbeitungs-Cluster (GPCs) 450 und eine oder mehrere Partitionseinheiten 480 auf. Die PPU 400 kann mit einem Hostprozessor oder andern peripheren Geräten über einen Systembus 402 verbunden sein. Die PPU 400 kann ferner mit einem lokalen Speicher, der eine Reihe von Speichereinrichtungen 404 umfasst, verbunden sein. In einer Ausführungsform kann der lokale Speicher eine Anzahl an dynamischen Speichereinheiten mit wahlfreiem Zugriff (DRAM) aufweisen.As in 4 As shown, the PPU 400 includes an input/output (I/O) unit 405, a host interface unit 410, a front end unit 415, a scheduler unit 420, a work distribution unit 425, a hub 430, a cross-connect unit (Xbar) 670, one or more general processing clusters (GPCs) 450; and one or more partition units 480. The PPU 400 can be connected to a host processor or other peripheral devices via a system bus 402 . The PPU 400 may also be connected to a local memory comprising a number of storage devices 404 . In one embodiment, the local memory may include a number of dynamic random access memory (DRAM) devices.

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/O unit 405 is configured to send and receive communication events (i.e., commands, data, etc.) from a host processor (not shown) over system bus 402. The I/O unit 405 may communicate with the host processor directly over the system bus 402 or through one or more intermediaries such as a memory bridge. In one embodiment, I/O unit 405 implements a Peripheral Component Interconnect Express (PCIe) interface for communication over a PCIe bus. In alternate embodiments, I/O unit 405 may implement other types of well-known interfaces for communicating with external devices.

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/O unit 405 is connected to a host interface unit 410 which decodes packets received over the system bus 402. In one embodiment, the packets represent instructions arranged to cause PPU 400 to perform various operations. The host interface unit 410 sends the decoded commands to various other units of the PPU 400 as indicated by the commands. For example, some commands may be sent to front end unit 415 . Other commands may be sent to hub 430 or other units of PPU 400, such as one or more copy units, a video encoder, a video decoder, a power management unit, etc. (not explicitly shown). In other words, the host interface unit 410 is configured to distribute communication events between the various logical units of the PPU 400.

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 PPU 400 for processing. A work order or workload may include a set of commands and data to be processed by those commands. The buffer is an area in memory that is accessible (i.e., read/write) by both the host processor and the PPU 400. For example, host interface unit 410 may be configured to access the buffer in system memory connected to system bus 402 via memory requests communicated by I/O unit 405 . In one embodiment, the host processor writes the instruction stream to the buffer and then sends a pointer to the beginning of the instruction stream to the PPU 400. The host interface unit 410 provides the front end unit 415 with pointers to one or more instruction streams. The front end unit 415 manages the one or more streams by reading commands from the streams and forwarding commands to the various PPU 400 units.

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 front end unit 415 is connected to a scheduling unit 420 that configures the various GPCs 450 to process tasks defined by the one or more streams. The scheduler 420 is configured to monitor status information related to the various tasks managed by the scheduler 420 . The state may indicate which GPC 450 a task is assigned to, whether the task is active or inactive, a priority level assigned to the task, etc. The scheduler 420 manages the execution of multiple tasks in the one or more GPCs 450.

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 scheduler 420 is connected to a work distribution unit 425 configured to issue tasks for execution in the GPCs 450 . The work distribution unit 425 may monitor a series of scheduled tasks received from the scheduler 420 . In one embodiment, the work distribution unit 425 maintains a pending task collection and an active task collection for each of the GPCs 450. The pending task collection may have a number of sections (e.g., 16 sections) that contain tasks that are scheduled for processing by a particular GPC 450 are assigned. The active task collection includes a number of bins (e.g., 4 bins) for tasks that are currently being actively processed by the GPCs 450 . When a GPC 450 completes execution of a task, then the task is removed from the collection of active tasks for the GPC 450 and one of the other tasks from the collection of pending tasks is selected and scheduled for execution in the GPC 450. If an active task in the GPC 450 has been dormant, such as waiting for a data dependency to be resolved, then the active task may be taken out of the GPC 450 and returned to the pending task pool while another task is in the pending task pool selected and scheduled for execution in the GPC 450.

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 work distribution unit 425 communicates with the one or more GPCs 450 via an Xbar 470. The Xbar 470 is an interconnection network that connects many of the PPU 400 units to other PPU 400 units. For example, the Xbar 470 may be configured to connect the work distribution unit 425 to a specific GPC 450 . Although not explicitly shown, one or more other units of PPU 400 are connected to host unit 410 . The other units may also be connected to the Xbar 470 via a hub 430 .

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 5B beschrieben.The tasks are managed by the scheduling unit 420 and dispatched to a GPC 450 by the work distribution unit 425 . The GPC 450 is configured to process the task and generate results. The results may be consumed by other tasks within the GPC 450, forwarded to another GPC 450 via the Xbar 470, or stored in memory 404. The results may be written to memory 404 via partition units 480 that implement a memory interface for reading and writing data to/from memory 404 . In In one embodiment, PPU 400 has a number U of partition units 480 equal to the number of separate and individual storage devices 404 connected to PPU 400 . A partition unit 480 is discussed in more detail below in connection with FIG 5B described.

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 PPU 400 . An application may issue commands (i.e., API calls) that cause the driver kernel to create one or more tasks for execution on the PPU 400. The driver kernel issues tasks to one or more streams being processed by the PPU 400. Each task may have one or more groups of related threads, which group is referred to herein as a thread group or warp. A thread block can refer to multiple groups of threads with instructions to perform the task. Threads in the same group of threads can exchange data via shared memory. In one embodiment, a set of strands includes 32 associated strands.

5A zeigt einen GPC 450 der PPU 400 aus 4 gemäß einer Ausführungsform. Wie in 5A gezeigt ist, enthält jeder GPC 450 eine Anzahl an Hardwareeinheiten für die Verarbeitung von Aufgaben. In einer Ausführungsform enthält jeder GPC 450 einen Pipeline-Verwalter 510, eine Vor-Rasteroperationseinheit (PROP) 515, eine Rastereinheit 525, eine Arbeitsverteilung-Kreuzverbindungseinheit (WDX) 580, eine Speicherverwaltungseinheit (MMU) 590 und einen oder mehrere Textur-Verarbeitungs-Cluster (TPCs) 520. Zu beachten ist, dass der GPC 450 aus 5A andere Hardwareeinheiten anstelle oder zusätzlich zu den in 5A gezeigten Einheiten aufweisen kann. 5A shows a GPC 450 of the PPU 400 4 according to one embodiment. As in 5A As shown, each GPC 450 includes a number of hardware units for processing tasks. In one embodiment, each GPC 450 includes a pipeline manager 510, a pre-raster operation unit (PROP) 515, a rasterizer unit 525, a work distribution cross-connect unit (WDX) 580, a memory management unit (MMU) 590, and one or more texture processing clusters (TPCs) 520. Note that the GPC is 450 from 5A other hardware units instead of or in addition to those in 5A shown units may have.

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 GPC 450 is controlled by pipeline manager 510 . The pipeline manager 510 manages the configuration of the one or more TPCs 520 to process tasks associated with the GPC 450 . In one embodiment, the pipeline manager 510 may configure at least one of the one or more TPCs 520 to implement at least a portion of a graphics processing pipeline. For example, a TPC 520 can be configured to run a vertex shader program in the stream programmable multiprocessor (SM) 540 . Pipeline manager 510 may be further configured to distribute packets received from work distribution unit 425 to appropriate logical units within GPC 450 . For example, some packets may be forwarded to dedicated function hardware units in PROP 515 and/or rasterizer unit 525, while other packets may be forwarded to TPCs 520 for processing by primitives unit 535 or SM 540.

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.TPC unit 515 is configured to forward data generated by rasterizer 525 and TPCs 520 to a raster operations (ROP) unit in partition unit 480, as described in more detail below. The PROP unit 515 may also be configured to perform color mixing optimizations, organize pixel data, perform address translations, and the like.

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 rasterizer 525 includes a number of dedicated function hardware units configured to perform various raster operations. In one embodiment, the rasterizer 525 includes a setup unit, a coarse rasterizer, a culling unit, a clipping unit, a fine rasterizer, and a tile merging unit. The setup unit receives transformed vertices and generates plane equations associated with the geometric primitive defined by the vertices. The plane equations are sent to the coarse rasterizer to generate coverage information (e.g., an x,y coverage mask for a tile) for the primitive. The output of the coarse rasterizer can be sent to the culling unit, in which fragments belonging to the baseform that fail a z-test are culled, and can then be transmitted to a clipping unit, in which fragments falling outside of a viewing truncated cone are cut off. Those fragments that survive clipping and culling can be passed to a fine rasterizer to generate attributes for the pixel fragments based on the plane equations generated by the setup engine. The output of the rasterizer 580 includes fragments to be processed by a fragment shader implemented in a TPC 520, for example.

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 TPC 520 included in the GPC 450 includes an M-channel controller (MPC) 530, a primitive unit 535, an SM 540, and one or more texture units 545. The MPC 530 controls the operation of the TPC 520 wherein packets received from the pipeline manager 510 are forwarded to the appropriate entities in the TPC 520. For example, packets associated with a vertex may be forwarded to primitives unit 535 configured to fetch from memory 404 vertex attributes associated with the vertex. On the other hand, packets belonging to a shadowing program can be transmitted to the SM 540.

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, texture units 545 are configured to load texture maps (e.g., a 2D array of texture elements) from memory 404 and sample the texture maps to generate sampled texture values for use in shading programs executed by SM 540 will. The texture units 545 implement texture operations, such as filtering operations, using mipmaps (i.e., texture maps with varying degrees of detail). In one embodiment, each TPC 520 contains four (4) texture units 545.

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 6A detaillierter beschrieben.SM 540 includes a programmable data stream processor configured to process tasks represented by a number of threads. Each SM 540 is multi-threaded and configured to execute multiple threads (e.g., 32 threads) from a particular set of threads simultaneously. In one embodiment, SM 540 implements a SIMD (single instruction, multiple data) architecture in which each thread in a group of threads (ie, a thread group) is configured to assign a different set of data based on the same group of instructions to process. All threads in the group of threads execute the same instructions. In another embodiment, SM 540 implements a SIMT (single instruction, multiple threads) architecture in which each thread in a group of threads is configured to process a different data set based on the same group of instructions, but with individual threads in the group of threads are allowed to diverge during execution. In other words, when an instruction for the set of threads is issued for execution, some threads in the set of threads may be active, causing the instruction to execute, while other threads in the set of threads may be inactive, causing instead of execution of the instruction a no operation (NOP) is executed. The SM 540 is below in connection with 6A described in more detail.

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 MMU 590 provides an interface between the GPC 450 and the partition unit 480 . The MMU 590 may provide virtual address to physical address translation, memory protection, and distribution of memory requests. In one embodiment, MMU 500 provides one or more translation lookaside buffers (TLBs) to enhance virtual address-to-physical address translation in memory 404 .

5B zeigt eine Partitionseinheit 480 der PPU 400 aus 4 gemäß einer Ausführungsform. Wie in 5B gezeigt ist, beinhaltet die Partitionseinheit 480 eine Rasteroperations-(ROP-) Einheit 550, einen Cache-Speicher 560 der Ebene zwei (L2), eine Speicherschnittstelle 570 und eine L2-Kreuzverbindungseinheit (Xbar) 565. Die Speicherschnittstelle 570 ist mit dem Speicher 404 verbunden. Speicherschnittstellen 570 können 16, 32, 64, 128-Bit-Datenbusse oder dergleichen für einen Hochgeschwindigkeitsdatentransfer implementieren. In einer Ausführungsform umfasst die PPU 400 U Speicherschnittstellen 570, d.h. eine Speicherschnittstelle 570 pro Partitionseinheit 480, wobei jede Partitionseinheit 480 mit einer entsprechenden Speichereinrichtung 404 verbunden ist. Beispielsweise kann die PPU 400 mit bis zu U Speichereinrichtungen 404 verbunden sein, etwa synchrone dynamische Speicher mit wahlfreiem Zugriff für Grafik mit doppelter Datenrate der Version 5 (GDDR5 SDRAM). In einer Ausführungsform implementiert die Speicherschnittstelle 570 eine DRAM-Schnittstelle und U = 6. 5B 12 shows a partition unit 480 of the PPU 400. FIG 4 according to one embodiment. As in 5B As shown, the partition unit 480 includes a raster operation (ROP) unit 550, a level two (L2) cache 560, a memory interface 570, and an L2 cross-connect unit (Xbar) 565. The memory interface 570 is connected to the memory 404 tied together. Memory interfaces 570 may implement 16, 32, 64, 128 bit data buses or the like for high speed data transfer. In one embodiment, the PPU 400 U includes memory interfaces 570, ie one memory interface 570 per partition unit 480, with each partition unit 480 being connected to a corresponding memory device 404. For example, the PPU 400 may be coupled to up to U memory devices 404, such as version 5 double data rate graphics synchronous dynamic random access memory (GDDR5 SDRAM). In one embodiment, memory interface 570 implements a DRAM interface and U=6.

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, PPU 400 implements a multi-level memory hierarchy. Memory 404 is located off-chip in SDRAM coupled to PPU 400 . Data from memory 404 may be fetched and stored in L2 cache 560 located on chip and shared among the various GPCs 450 . As shown, each partition unit 480 includes a portion of L2 cache 560 associated with a corresponding storage device 404 . Lower level caches can then be implemented in various units within the GPCs 450. For example, each of the SMs 540 may implement a level one (L1) cache. The L1 cache memory is private memory dedicated to a specific SM 540. Data from the L2 cache 560 may be fetched and stored in any of the L1 caches for processing in the SMs 540 functional units. The L2 cache memory 560 is connected to the memory interface 570 and the Xbar 470.

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 ROP unit 550 includes a ROP manager 355, a color ROP (CROP) unit 552, and a Z-ROP (ZROP) unit 554. The CROP unit 552 performs raster operations that affect pixel color, such as color compression , pixel blending and the like. The ZROP unit 554 implements a depth check in conjunction with the rasterizer unit 525. The ZROP unit 554 receives a depth for a sample position associated with a pixel fragment from the screening unit of the rasterizer unit 525. The ZROP unit 554 checks the depth versus a corresponding depth in a depth buffer for a sample position associated with the fragment. If the fragment passes the depth test for the sample position, then the ZROP unit 554 updates the depth buffer and sends a depth test result to the rasterizer 525. The ROP manager 355 controls the operation of the ROP unit 550. It should be noted that the number of partition units 480 can differ from the number of GPCs 450 and therefore each ROP unit 550 can be connected to each of the GPCs 450. Therefore, the ROP manager 355 monitors packets received from the different GPCs 450 and determines to which GPC 450 a result generated by the ROP unit 550 is to be forwarded. The CROP unit 552 and the ZROP unit 554 are connected to the L2 cache memory 560 via an L2 xbar 565 .

6A zeigt den Datenstrom-Multiprozessor 540 aus 5A gemäß einer Ausführungsform. Wie in 6A gezeigt ist, beinhaltet der SM 540 einen Befehls-Cache-Speicher 605, eine oder mehrere Disponiereinheiten 610, eine Registerdatei 620, einen oder mehrere Verarbeitungskerne 650, eine oder mehrere Spezialfunktionseinheiten (SFUs) 652, eine oder mehrere Lade/Speicher-Einheiten (LSUs) 654, ein Verbindungsnetzwerk 680 und einen gemeinsam genutzten Speicher/L1-Cache-Speicher 670. 6A Figure 12 shows the data stream multiprocessor 540 5A according to one embodiment. As in 6A As shown, the SM 540 includes an instruction cache 605, one or more scheduler units 610, a register file 620, one or more processing cores 650, one or more special purpose functional units (SFUs) 652, one or more load/store units (LSUs ) 654, an interconnection network 680, and a shared memory/L1 cache 670.

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 work distribution unit 425 issues tasks for execution in the GPCs 450 of the PPU 400 . The tasks are assigned to a specific TPC 520 within a GPC 450, and if the task is associated with a shader program, the task can be assigned to an SM 540. The scheduler 610 receives the tasks from the work distribution unit 425 and manages instruction scheduling for one or more groups of threads (ie, thread groups) associated with the SM 540 . The scheduler 610 schedules threads for execution in groups of parallel threads, each group being referred to as a thread group. In one embodiment, each strand group contains 32 strands. The scheduler 610 can manage multiple different thread groups, thereby scheduling the thread groups for execution and then issuing instructions from the multiple different thread groups to the various functional units (i.e., cores 650, SFUs 652, and LSUs 654) during each clock cycle.

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 6A gezeigten Ausführungsform beinhaltet die Disponiereinheit 610 zwei Ausgabeeinheiten 615, die es ermöglichen, dass zwei unterschiedliche Befehle aus der gleichen Stranggruppe während jedes Taktzyklus ausgegeben werden. In alternativen Ausführungsformen kann jede Disponiereinheit 610 eine einzige Disponiereinheit 615 oder zusätzliche Disponiereinheiten 615 aufweisen.In one embodiment, each scheduler 610 includes one or more instruction issue units 615. Each issue unit 615 is configured to dispatch instructions to one or more of the functional units. in the in 6A In the embodiment shown, the scheduler 610 includes two issue units 615 that allow two different instructions from the same thread group to be issued during each clock cycle. In alternative embodiments, each scheduler 610 may have a single scheduler 615 or additional schedulers 615 .

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 SM 540 has a register file 620 that provides a set of registers for the SM 540's functional units. In one embodiment, register file 620 is partitioned among all functional units such that each functional unit is associated with a specific portion of register file 620 . In another embodiment, register file 620 is partitioned among the different thread groups being executed by SM 540 . Register file 620 provides temporary storage for operands associated with functional unit data paths.

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 SM 540 includes L processing cores 450. In one embodiment, the SM 540 includes a large number (e.g., 192, etc.) of individual processing cores 450. Each core 450 may include a fully pipelined, single-precision processing unit having a floating-point Arithmetic logic unit and an integer arithmetic logic unit. The core 450 may further include a double precision processing unit that includes a floating point arithmetic logic unit. In one embodiment, the floating point arithmetic logic units implement the IEEE 754-4008 standard for floating point arithmetic. Each SM 540 also includes M SFUs 652 that perform specialized functions (e.g., pixel blending operations and the like) and N LSUs 654 that perform load and store operations between shared memory/L1 cache 670 and register file 620. In one embodiment, the SM 540 includes 192 cores 650, 32 SFUs 652, and 32 LSUs 654.

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 SM 540 has an interconnection network 680 that connects each of the functional units to register file 620 and shared memory/L1 cache 670 . In one embodiment, interconnect network 680 is a cross-connect unit that may be configured to connect any functional unit to any register in register file 620 or locations in shared memory/L1 cache 670 .

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/L1 cache 670 is an array of internal memory that, in one embodiment, may be shared memory or an L1 cache, or a combination of both as required by the application . For example, shared memory/L1 cache 670 may have 64 KB of storage capacity. The shared memory/L1 cache 670 may be 64 KB of shared memory or an L1 cache, or a combination of the two, such as 16 KB of L1 cache and 48 KB of shared memory be configured.

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 PPU 400 described above can be configured to perform highly parallel computations much faster than conventional CPUs. Parallel computation has advantages in graphics processing, data compression, biometric processes, data stream processing algorithms, and the like.

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, PPU 400 includes a graphics processing unit (GPU). The PPU 400 is configured to receive commands specifying shadowing programs for processing graphics data. Graphics data can be defined as a set of primitive shapes, such as points, lines, triangles, squares, triangle strips, and the like. Typically, a primitive includes data specifying a number of vertices for the primitive (e.g., in a model space coordinate system) and attributes associated with each vertex of the primitive. The PPU 400 may be configured to process the graphics primitives to generate an image block buffer (ie, pixel data for each pixel of the display).

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 memory 404. The model data defines each of the objects that may be visible on a display. The application then makes an API call into the driver kernel requesting that the model data be rendered and displayed as an image. The driver kernel reads the model data and writes instructions to the one or more streams to perform operations to process the model data. The instructions may address different shaders to be implemented in the SMs 540 of the PPU 400, including a vertex shader and/or a skin shader, a region shader, a geometry shader, and a pixel shader. For example, one or more of the SMs 540 may be configured to run a vertex shader program that processes a number of vertices defined by the model data. In one embodiment, the different SMs 540 may be configured to run different shading programs concurrently. For example, a first subset of SMs 540 may be configured to execute a vertex shader program, while a second subset of SMs 540 may be configured to execute a pixel shader program. The first subset of SMs 540 processes vertex data to generate processed vertex data and writes the processed vertex data to L2 cache 560 and/or memory 404. After rasterizing the processed vertex data (i.e., transformed from the three-dimensional data into two-dimensional data in screen space) to produce fragment data, the second subset of SMs 540 performs a pixel shader to produce processed fragment data, which is then mixed with other processed fragment data and written to the image block buffer in memory 404. The vertex shader program and the pixel shader program can run concurrently, thereby processing different data from the same scene in a pipeline manner until all model data for the scene is imaged into the image block buffer. The contents of the image block buffer can then be transferred to a display controller for display on a display device.

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 PPU 400 may be incorporated into a desktop computer, a portable computer, a tablet computer, a smart phone (e.g., a wireless handset), a personal digital assistant (PDA), a digital camera, a handheld electronic device, and the like. In one embodiment, PPU 400 is formed as a single semiconductor substrate. In another embodiment, the PPU 400 is in a system-on-a-chip (SoC) along with one or more others other logic units, such as a CPU with a reduced instruction set computer (RISC), a memory management unit (MMU), a digital-to-analog converter (DAC), and the like.

In einer Ausführungsform kann die PPU 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, PPU 400 may be included in a graphics card that includes one or more memory devices 404, such as GDDR5 SDRAM. The graphics card may be configured to interface with a PCIe portion on a motherboard of a desktop computer having, for example, a north bridge chipset and a south bridge chipset. In yet another embodiment, the PPU 400 may be an integrated graphics processing unit (iGPU) included in the chipset (i.e., north bridge) of the motherboard.

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.

6B zeigt ein Flussdiagramm eines Verfahrens 625 zum Erzeugen von Bildern für eine augennahe Lichtfeldanzeigeeinrichtung 200 oder 260 der 2A, 2D und 2C gemäß einer Ausführungsform. Obwohl das Verfahren 625 im Zusammenhang eines Programms beschrieben ist, das von einem Prozessor ausgeführt wird, kann das Verfahren 625 auch durch eine anwendungsspezifische Schaltung oder durch eine Kombination aus anwendungsspezifischer Schaltung und einem Programm ausgeführt werden. 6B FIG. 6 shows a flow diagram of a method 625 for generating images for a near-eye light field display device 200 or 260 of FIG 2A , 2D and 2C according to one embodiment. Although method 625 is described in the context of a program executed by a processor, method 625 may also be executed by application specific circuitry or by a combination of application specific circuitry and a program.

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 step 630, existing images are received. The existing images can be individual two-dimensional images, stereoscopic image pairs or multiscopic image groups. When eye tracking is employed, source images in a best match microscopic image group can be selected for each eye. In one embodiment, two or more original images of a microscopic image group are interpolated to generate a matching original image. In step 635, the existing images are pre-processed if image defect correction is enabled. In one embodiment, the existing images are filtered using the low pass filter length. If image error correction is disabled, step 635 can be omitted. In step 640, the pre-processed existing images are stored as texture maps.

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 step 645, a texture element of a texture map corresponding to one of the existing images is mapped to a pixel on the micro-display 250, the left micro-display 251, or the right micro-display 252. If the texture map corresponds to an individual two-dimensional image, the texture element is mapped to, or associated with, a pixel on the left micro-display 251 and a pixel on the right micro-display 252 . If the texture map corresponds to the left eye image of a stereoscopic image pair, then the texture element is mapped to a pixel on the left micro-display 251 . If the texture map corresponds to the right eye image of a stereoscopic image pair, then the texture element is mapped to the right micro-display 252 . Steps 645-672 (shown as steps 685) may be performed in parallel to process multiple pixels of the left micro-display 251 and the right micro-display 252. For example, each thread may receive coordinates of a texture element and map the texture element coordinates to left micro-display 251 or right micro-display 252 coordinates.

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 step 655, an optical device (for example, microlens in microlens array 255, left microlens array 256, right microlens array 257, light spot in left light spot array 276, or light spot in right light spot array 277 ) corresponding to the pixel on the micro-display (eg, micro-display 250, left micro-display 251, right micro-display 252, left micro-display 271, or right micro-display 272). At step 660, a ray defined by the pixel and the optical device is determined. For example, if the optical device is a microlens array, the ray is defined by the (x,y,z) position of the pixel and the (x,y,z) position of the optical center of the microlens. If the optical device is a spot array, then the ray is defined by the (x,y,z) position of the pixel and the (x,y,z) position of the center of the light spot. In step 665, the ray is made to intersect with the two-dimensional virtual display plane 210 to generate texture map coordinates corresponding to the pixel. In step 672, a color for the pixel is calculated based on the texture map coordinates. Multiple texture elements (e.g., color samples) can be extracted from the texture map and combined (ie, filtered) to calculate the colors for the pixel. When steps 645-672 are executed in parallel, each thread computes a color for the left micro-display 251 or the right micro-display 252.

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 step 675, the computed colors for the pixels are stored to create at least one micro-display image. The colors may be stored in a data structure (e.g., image block buffer) for a micro-display image in memory. The pixel colors for the left micro-display 251 define a left micro-display image and the pixel colors for the right micro-display 252 define a right micro-display image. In step 682, the shader program determines whether there is another existing image to process, and if not, the shader program ends. Otherwise, steps 685 are repeated to generate one or more additional micro-display images.

7 ist eine Blockansicht eines Beispiels eines Rechensystems 710, das in der Lage ist, Ausführungsformen der vorliegenden Offenbarung umzusetzen. Das Rechensystem 710 repräsentiert in breiter Weise eine Recheneinrichtung mit einem einzigen Prozessor oder mehreren Prozessoren oder ein System, das in der Lage ist, computerlesbare Befehle auszuführen. Zu Beispielen des Rechensystems 710 gehören, ohne Einschränkung, Arbeitsplatzrechner, tragbarer Rechner, Klientinseitige Endgeräte, Dienstleister, verteilte Rechensysteme, eingebettete Geräte, Recheneinrichtungen für Automotiv-Anwendungen, Handgeräte (beispielsweise Funktelefon, Tablett-Computer, Digitalkamera, usw.), körpergetragene Einrichtungen (beispielsweise Kopf montierte oder an der Hüfte getragene Geräte), oder ein beliebiges anderes Rechensystem oder Einrichtung. In der grundlegendsten Konfiguration kann das Rechensystem 710 mindestens einen Prozessor 714 und einen Systemspeicher 716 aufweisen. 7 7 is a block diagram of an example of a computing system 710 capable of implementing embodiments of the present disclosure. Computing system 710 broadly represents a single processor or multiple processor computing device or system capable of executing computer-readable instructions. Examples of computing system 710 include, without limitation, workstations, portable computers, client-side terminals, service providers, distributed computing systems, embedded devices, computing devices for automotive applications, handheld devices (e.g., cellular phone, tablet computer, digital camera, etc.), wearable devices ( e.g. head mounted or waist worn devices), or any other computing system or device. In the most basic configuration, the computing system 710 may include at least a processor 714 and system memory 716 .

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.Processor 714 generally represents any type or form of processing unit capable of processing data or translating and executing instructions. In certain embodiments, processor 714 may receive instructions from a software application or module. These instructions may cause processor 714 to perform the functions of one or more of the illustrative embodiments described and/or illustrated herein.

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.System memory 716 generally represents any type or form of volatile or non-volatile storage device or medium capable of storing data and/or other computer-readable instructions. Examples of system memory 716 include, without limitation, RAM, ROM, flash memory, or other suitable memory devices. Although not required, in certain embodiments, computing system 710 may include both a volatile storage device (e.g., system memory 716) and a non-volatile storage device (e.g., primary storage device 732).

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 7 das Rechensystem 710 eine Speichersteuerung 718, eine Eingabe/Ausgabe-(I/O-) Steuerung 720 und eine Kommunikationsschnittstelle 722 auf, wobei diese jeweils über eine Kommunikationsinfrastruktur 712 miteinander verbunden sein können. Die Kommunikationsinfrastruktur 712 repräsentiert generell eine beliebige Art oder Form einer Infrastruktur, die in der Lage ist, eine Kommunikation zwischen einer oder mehreren Komponenten einer Recheneinrichtung zu ermöglichen. Zu Beispielen der Kommunikationsinfrastruktur 712 gehören, ohne Einschränkung, ein Kommunikationsbus (etwa eine Industriestandard-Architektur (ISA), eine periphere Komponentenverbindung (PCI), PCI-Express (PCle) oder ein ähnlicher Bus) und ein Netzwerk.Computing system 710 may further include one or more components or elements in addition to processor 714 and system memory 716 . For example, in the embodiment of FIG 7 The computing system 710 includes a memory controller 718, an input/output (I/O) controller 720, and a communications interface 722, each of which may be interconnected via a communications infrastructure 712. Communication infrastructure 712 generally represents any type or form of infrastructure capable of facilitating communication between one or more components of a computing device. Examples of communications infrastructure 712 include, without limitation, a communications bus (such as an Industry Standard Architecture (ISA), Peripheral Component Interconnect (PCI), PCI Express (PCle), or similar bus) and a network.

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.Memory controller 718 generally represents any type or form of device capable of manipulating memory, data, or controlling communication between one or more components of computing system 710 . For example, memory controller 718 may control communications between processor 714, system memory 716, and I/O controller 720 via communications infrastructure 712.

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/O controller 720 generally represents any type or form of module capable of coordinating and/or controlling the input and output functions of a computing device. For example, I/O controller 720 may control the exchange of data between one or more elements of computing system 710, such as processor 714, system memory 716, communications interface 722, a display adapter 726, input interface 730, and memory interface 734, or enable.

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 illustrative computing system 710 and one or more other devices. For example, communication interface 722 may enable communication between computing system 710 and a private or public network containing other computing systems. Examples of communication interface 722 include, without limitation, a wired network interface (such as a network interface card), a wireless network interface (such as a wireless network interface card), a modem, or other suitable interface. In one embodiment, communication interface 722 provides a direct connection to a remote service provider via a direct connection to the network, such as the Internet. Communications interface 722 may also provide such a connection indirectly via another suitable connection.

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 communication interface 722 may further represent a host adapter configured to enable communication between the computing system 710 and one or more other network or storage devices via an external bus or communication channel. Examples of host adapters include, without limitation, small computer systems interface (SCSI) host adapters, universal serial bus (USB) host adapters, IEEE (Institute of Electrical and Electronic Engineers) 1394- Host adapters, Serial Advanced Technology Adder (SATA) and external SATA (eSATA) adapters, Advanced Technology Adder (ATA) and Parallel ATA (PATA) host adapters, Fiber Channel interface adapters, Ethernet adapters, or the like. Communications interface 722 may also allow computing system 710 to participate in distributed or remote computing configurations. For example, communications interface 722 may receive commands from a remote device or send commands to a remote device for execution.

Wie in 7 gezeigt ist, kann das Rechensystem 710 ferner mindestens eine Anzeigeeinrichtung 724 aufweisen, die mit der Kommunikationsinfrastruktur 712 über einen Anzeige-Adapter 726 verbunden ist. Die Anzeigeeinrichtungen 724 repräsentiert in allgemeiner Weise eine beliebige Art oder Form einer Einrichtung, die in der Lage ist, Information, die von dem Anzeige-Adapter 726 weitergeleitet wird, visuell anzuzeigen. In ähnlicher Weise repräsentiert der Anzeige-Adapter 726 in allgemeiner Weise eine beliebige Art oder Form einer Einrichtung, die ausgebildet ist, Grafik, Text oder andere Daten zum Anzeigen auf der Anzeigeeinrichtung 724 weiterzugeben. In einer Ausführungsform kann die Anzeigeeinrichtung 724 die augennahe Lichtfeldanzeigeeinrichtung 200 oder die zweiäugige augennahen Lichtfeldanzeigeeinrichtung sein, die in 2B oder 2C gezeigt sind, und eine oder mehrere Komponenten, die in dem Rechensystem 710 gezeigt sind, können in einen Brillen-Formfaktor der augennahen Lichtfeldanzeigeeinrichtung 200 oder der zweiäugigen augennahen Lichtfeldanzeigeeinrichtung integriert sein, die in 2B oder 2C gezeigt sind. In einer Ausführungsform sind eine oder mehrere der in dem Rechensystem 710 gezeigten Komponenten außerhalb des Brillen-Formfaktors und können von einem Anwender irgendwo anders getragen werden oder können vollständig an einem fernen Ort sein (d.h., über ein drahtloses oder verdrahtetes Kommunikationssystem angebunden sein). Eine Leistungsversorgung (d.h., Batterie, Leistungsquelle oder Leistungsschnittstelle) kann in dem Brillen-Formfaktor integriert sein oder kann außerhalb des Brillen-Formfaktor vorgesehen sein.As in 7 As shown, the computing system 710 may further include at least one display device 724 coupled to the communications infrastructure 712 via a display adapter 726 . Display devices 724 generally represent any type or form of device capable of visually displaying information passed by display adapter 726 . Similarly, display adapter 726 generally represents any type or form of device configured to pass graphics, text, or other data for display on display device 724 . In one embodiment, the display device 724 may be the near-eye light field display device 200 or the binocular near-eye light field display device described in FIG 2 B or 2C and one or more components shown in the computing system 710 may be integrated into an eyeglass form factor of the near-eye light field display device 200 or the binocular near-eye light field display device shown in FIG 2 B or 2C are shown. In one embodiment, one or more of the components shown in computing system 710 are outside of the eyeglass form factor and may be carried by a user elsewhere or may be entirely remote (ie, tethered via a wireless or wired communication system). A power supply (ie, battery, power source, or power interface) may be integrated within the goggle form factor or may be external to the goggle form factor.

Wie in 7 gezeigt ist, kann das Rechensystem 710 ferner mindestens eine Eingabeeinrichtung 728 aufweisen, die mit der Kommunikationsinfrastruktur 712 über eine Eingabeschnittstelle 730 verbunden ist. Die Eingabeeinrichtung 728 repräsentiert in allgemeiner Weise eine beliebige Art oder Form einer Eingabeeinrichtung, die in der Lage ist, eine Eingabe, ob Rechner erzeugt oder Mensch erzeugt, für das Rechensystem 710 bereitzustellen. Zu Beispielen der Eingabeeinrichtung 728 gehören, ohne einschränkend zu sein, eine Tastatur, eine Zeigereinrichtung, eine Spracherkennungseinrichtung, ein Augenverfolgungssystem, ein Umgebungslichterfassungssystem, ein Tiefen-Sensor, ein Lichtfeldkamera, ein Umgebungsbewegungs-Verfolgungssensor, ein Erfassungssensor für innere Bewegungen, ein Gyroskop-Sensor, ein Beschleunigungssensor, ein elektronischer Kompasssensor, ein ladungsgekoppelter (CCD) Bildsensor, ein Komplementär-Metall-Oxid-Halbleiter-(CMOS) Bildsensor, oder eine andere Eingabeeinrichtung. In einer Ausführungsform kann die Eingabeeinrichtung 728 ausgebildet sein, die Pupilleneigenschaften, etwa den Durchmesser, Orientierung und Position für den Prozessor 714 bereitzustellen. In einer Ausführungsform kann die Eingabeeinrichtung 728 ferner Kommunikationsereignisse aus anderen augennahen Lichtfeldanzeigeeinrichtungen 200 (d.h., augennahe Lichtfeldbrillen) beispielsweise in der Umgebung stammen, wenn mehrere Anwender von augennahen Lichtfeldanzeigeeinrichtungen in der Nähe sind.As in 7 As shown, the computing system 710 may further include at least one input device 728 that is connected to the communication infrastructure 712 via an input interface 730 . Input device 728 generally represents any type or form of input device capable of providing input, whether computer generated or human generated, to computing system 710 . Examples of the input device 728 include, without limitation, a keyboard, a pointing device, a speech recognizer, an eye tracking system, an ambient light detection system, a depth sensor, a light field camera, an ambient motion tracking sensor, an internal motion detection sensor, a gyroscope sensor , an accelerometer, an electronic compass sensor, a charge coupled device (CCD) image sensor, a complementary metal oxide semiconductor (CMOS) image sensor, or other input device. In one embodiment, the input device 728 may be configured to display pupillary properties, such as the provide diameter, orientation and position for the 714 processor. In one embodiment, input device 728 may also originate communication events from other near-eye light field display devices 200 (ie, near-eye light field goggles) in the vicinity, for example, when multiple near-eye light field display device users are nearby.

Wie in 7 gezeigt ist, kann das Rechensystem 710 ferner eine primäre Speichereinrichtung 732 und eine Reservespeichereinrichtung 733 aufweisen, die mit der Kommunikationsinfrastruktur 712 über eine Speicherschnittstelle 734 verbunden sind. Die Speichereinrichtungen 732 und 733 repräsentieren in allgemeiner Weise eine beliebige Art oder Form einer Speichereinrichtungen oder eines Mediums, die in der Lage sind, Daten und/oder andere computerlesbare Befehle zu speichern. Beispielsweise können die Speichereinrichtungen 732 und 733 ein magnetisches Plattenlaufwerk (beispielsweise eine so genannte Festplatte), ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Laufwerk für optische Disketten, ein Flash-Laufwerk oder dergleichen sein. Die Speicherschnittstelle 734 repräsentiert in allgemeiner Weise eine beliebige Art oder Form einer Schnittstelle oder einer Einrichtung, um Daten zwischen den Speichereinrichtungen 732 und 733 und anderen Komponenten des Rechensystems 710 auszutauschen.As in 7 As shown, the computing system 710 may further include a primary storage device 732 and a backup storage device 733 coupled to the communications infrastructure 712 via a storage interface 734 . Storage devices 732 and 733 generally represent any type or form of storage device or medium capable of storing data and/or other computer-readable instructions. For example, the storage devices 732 and 733 may be a magnetic disk drive (e.g., a so-called hard disk drive), a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash drive, or the like. Storage interface 734 generally represents any type or form of interface or device to exchange data between storage devices 732 and 733 and other components of computing system 710 .

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, databases 740 may be stored on primary storage device 732 . Databases 740 may represent portions of a single database or computing device, or they may represent multiple databases or computing devices. For example, databases 740 may represent (or be stored within) only a portion of computing system 710 . Alternatively, databases 740 may represent (or be stored on) one or more physical separate devices that are accessible by a computing device, such as computing system 710 .

Es sei weiterhin auf 7 verwiesen; die Speichereinrichtungen 732 und 733 können ausgebildet sein, aus einer entfernbaren Speichereinheit auszulesen und/oder in diese zu schreiben, die ausgebildet ist, Computer-Software, Daten oder andere computerlesbare Information zu speichern. Zu Beispielen geeigneter entfernbarer Speichereinheiten gehören, ohne Einschränkung, eine Diskette, ein Magnetband, eine optische Diskette, eine Flash-Speichereinrichtung oder dergleichen. Die Speichereinrichtungen 732 und 733 können ferner andere ähnliche Strukturen oder Einrichtungen aufweisen, um es zu ermöglichen, dass Computer-Software, Daten oder andere computerlesbare Befehle in das Rechensystem 710 geladen werden. Beispielsweise können die Speichereinrichtungen 732 und 733 ausgebildet sein, Software, Daten oder andere computerlesbare Information zu lesen und zu schreiben. Die Speichereinrichtungen 732 und 733 können ferner ein Teil eines Rechensystems 710 sein oder können separate Einrichtungen sein, auf die durch andere Schnittstellensysteme zugegriffen wird.It's still open 7 referred; storage devices 732 and 733 may be configured to read from and/or write to a removable storage device configured to store computer software, data, or other computer-readable information. Examples of suitable removable storage devices include, without limitation, a floppy disk, magnetic tape, optical disk, flash memory device, or the like. Storage devices 732 and 733 may also include other similar structures or devices to enable computer software, data, or other computer-readable instructions to be loaded into computing system 710. For example, storage devices 732 and 733 may be configured to read and write software, data, or other computer-readable information. Storage devices 732 and 733 may also be part of a computing system 710 or may be separate devices accessed through other interface systems.

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 7 gezeigt sind, vorhanden sein, um die hierin beschriebenen Ausführungsformen umzusetzen. Die Einrichtungen und Subsysteme, die zuvor angegeben sind, können auch auf andere Arten miteinander verbunden sein, als dies in 7 gezeigt ist. Das Rechensystem 710 kann ferner eine Reihe von Software-, Firmware- und/oder Hardware-Konfigurationen einsetzen. Beispielsweise können die hierin offenbarten anschaulichen Ausführungsformen als ein Computerprogramm (auch als Computer-Software, Software-Anwendungen, computerlesbare Befehle oder Computer-Steuerlogik bezeichnet) auf einem computerlesbaren Medium kodiert sein.Many other devices or subsystems may be connected to computing system 710. On the other hand, not all components and facilities that are used in 7 shown may be present to implement the embodiments described herein. The facilities and subsystems identified above may also be interconnected in ways other than those specified in 7 is shown. Computing system 710 may also employ a variety of software, firmware, and/or hardware configurations. For example, the illustrative embodiments disclosed herein may be encoded as a computer program (also referred to as computer software, software applications, computer-readable instructions, or computer control logic) on a computer-readable medium.

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 computing system 710 . All or a portion of the computer program stored on the computer-readable media may then be stored in system memory 716 and/or various portions of storage devices 732 and 733 . When executed by processor 714, a computer program loaded into computing system 710 may cause processor 714 to perform and/or be a means of performing the functions of the illustrative embodiments described and/or illustrated herein. Additionally or alternatively, the illustrative embodiments described and/or shown herein may be implemented in firmware and/or hardware.

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-eye display layer 515 based on a desired image 525 may be stored on the computer-readable media and then in system memory 716 and/or in various parts of the memory devices 732 and 733 are stored. When executed by the processor 714, the computer program may cause the processor 714 to perform and/or be a means of performing the functions required to acquire an image and/or the mask encoding different attenuation patterns as discussed above.

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)

Ein Verfahren (100) aufweisend: Identifizieren (105) eines Strahls, der durch ein Pixel einer Mikro-Anzeige (250) und eine Mikrolinse (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; und Berechnen (115) einer Farbe für das Pixel auf der Grundlage der Abbildungskoordinaten.A method (100) comprising: Identifying (105) a ray passing through a pixel of a micro-display (250) and a microlens (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. Das Verfahren nach Anspruch 1, wobei ein bestehendes zweidimensionales Bild (300, 350) als eine Textur-Abbildung gespeichert wird, die unter Verwendung der Abbildungskoordinaten indiziert wird.The procedure after claim 1 , wherein an existing two-dimensional image (300, 350) is stored as a texture map indexed using the map coordinates. Das Verfahren nach Anspruch 1, das ferner aufweist: Vorverarbeiten eines bestehenden zweidimensionalen Bildes (300, 350) um ein vorverarbeitetes bestehendes zweidimensionales Bild zu erzeugen, in welchem Bildfehler behoben sind; und Speichern des vorverarbeiteten bestehenden zweidimensionalen Bildes als eine Textur-Abbildung, die unter Anwendung der Abbildungskoordinaten indiziert wird.The procedure after claim 1 Further comprising: pre-processing an existing two-dimensional image (300, 350) to produce a pre-processed existing two-dimensional image in which artifacts are corrected; and storing the previous verar processed the existing two-dimensional image as a texture map indexed using the map coordinates. Das Verfahren nach Anspruch 1, das ferner aufweist: Ermitteln weiterer Strahlen, Erzeugen weiterer Abbildungskoordinaten und Berechnen weiterer Farben für weitere Pixel der Mikro-Anzeige (250) um ein Mikro-Anzeigenbild (310, 360) zu erzeugen.The procedure after claim 1 , further comprising: determining additional rays, generating additional mapping coordinates, and computing additional colors for additional pixels of the micro-display (250) to generate a micro-display image (310, 360). Das Verfahren nach Anspruch 1, das ferner aufweist Speichern der Farbe für das Pixel in einer Datenstruktur für ein Mikro-Anzeigebild (310, 360) in einem Speicher (404)The procedure after claim 1 further comprising storing the color for the pixel in a data structure for a micro-display image (310, 360) in a memory (404) Das Verfahren nach Anspruch 5, wobei das Mikro-Anzeigebild (310, 360) einem Bild für das linke Auge oder einem Bild für das rechte Auge eines stereoskopischen Bildpaares entspricht.The procedure after claim 5 wherein the micro-display image (310, 360) corresponds to a left eye image or a right eye image of a stereoscopic image pair. Das Verfahren nach Anspruch 5, wobei das Mikro-Anzeigebild (310, 360) einem Bild einer multiskopischen Bildgruppe entspricht.The procedure after claim 5 , wherein the micro-display image (310, 360) corresponds to an image of a multiscopic image group. Das Verfahren nach Anspruch 1, das ferner aufweist: Abtasten mehrerer Texturelemente einer Textur-Abbildung auf der Grundlage der Abbildungskoordinaten; und Kombinieren der mehreren Texturelemente, um die Farbe für das Pixel zu berechnen.The procedure after claim 1 , further comprising: sampling a plurality of texture elements of a texture map based on the map coordinates; and combining the multiple texture elements to calculate the color for the pixel. Das Verfahren nach Anspruch 1, wobei eine Tiefe der zweidimensionalen virtuellen Anzeigeebene (210) relativ zu dem Auge des Betrachters auf einem Brillenrezept beruht.The procedure after claim 1 wherein a depth of the two-dimensional virtual display plane (210) relative to the viewer's eye is based on an eyeglass prescription. Das Verfahren nach Anspruch 1, wobei mehrere Verarbeitungsstränge ausgebildet sind, ein Fragmentschattierungsprogramm auszuführen, um Farben für Pixel der Mikro-Anzeige (250) parallel zu berechnen.The procedure after claim 1 wherein multiple processing threads are configured to execute a fragment shader program to compute colors for pixels of the micro-display (250) in parallel. Das Verfahren nach Anspruch 1, wobei die Farbe Schwarz ist, wenn die Abbildungskoordinaten außerhalb der virtuellen Anzeigeebene (210) liegen.The procedure after claim 1 , where the color is black if the mapping coordinates are outside the virtual display plane (210). Das Verfahren nach Anspruch 1, wobei das virtuelle Bild ein enthält, das für einen Anwender der augennahen Lichtfeldanzeigeeinrichtung (200) an einer Tiefe erscheint, die zu der virtuellen Anzeigeebene (210) verschoben ist.The procedure after claim 1 wherein the virtual image includes one that appears to a user of the near-eye light field display device (200) at a depth that is offset from the virtual display plane (210). Das Verfahren nach Anspruch 1, wobei Erzeugen der Abbildungskoordinaten aufweist ein Ermitteln einer Verschiebung des Pixels relativ zum Referenzpunkt auf der Mikro-Anzeige (250)The procedure after claim 1 , wherein generating the mapping coordinates comprises determining a displacement of the pixel relative to the reference point on the micro-display (250) Das Verfahren nach Anspruch 1, wobei Erzeugen der Abbildungskoordinaten aufweist ein Ermitteln einer Verschiebung eines Punkts innerhalb der zweidimensionalen virtuellen Anzeigeebene (210) die von dem Strahl geschnitten wird.The procedure after claim 1 , wherein generating the mapping coordinates comprises determining a displacement of a point within the two-dimensional virtual display plane (210) intersected by the ray. Ein System aufweisend: eine Mikro-Anzeige (250) die zwischen einer Nah-Fokusebene (220) und einer Pupille angeordnet ist; eine Mikrolinse (253) die zwischen der Mikro-Anzeige (250) und der Pupille angeordnet ist; und einem Prozessor (714) der ausgebildet ist, um: einen Strahl zu identifizieren, der durch ein Pixel der Mikro-Anzeige (250) und die optische Vorrichtung definiert ist; Abbildungskoordinaten zu erzeugen, die dem Pixel entsprechen, indem der Stahl mit einer zweidimensionalen virtuellen Anzeigeebene (210) geschnitten wird; wobei Erzeugen der Abbildungskoordinaten ein Ermitteln einer Verschiebung eines optischen Mittelpunkts der Mikrolinse (253) relativ zu einem Referenzpunkt auf der Mikro-Anzeige (250) aufweist; und eine Farbe für das Pixel auf der Grundlage der Abbildungskoordinaten zu berechnen.Having a system: a microdisplay (250) positioned between a near focal plane (220) and a pupil; a microlens (253) positioned between the microdisplay (250) and the pupil; and a processor (714) configured to: identify a ray defined by a pixel of the micro-display (250) and the optical device; generate mapping coordinates corresponding to the pixel by intersecting the beam with a two-dimensional virtual display plane (210); wherein generating the mapping coordinates comprises determining a displacement of an optical center of the microlens (253) relative to a reference point on the microdisplay (250); and calculate a color for the pixel based on the mapping coordinates. Das System nach Anspruch 15, das ferner einen Speicher (404) aufweist, der ausgebildet ist, ein bestehendes zweidimensionales Bild (300, 350) als eine Textur-Abbildung zu speichern, die unter Anwendung der Texturkoordinaten indiziert ist.The system after claim 15 , further comprising a memory (404) configured to store an existing two-dimensional image (300, 350) as a texture map indexed using the texture coordinates. Das System nach Anspruch 15, wobei der Prozessor (714) ferner ausgebildet ist, mehrere Verarbeitungsstränge zu verarbeiten, die jeweils ein Fragmentschattierungsprogramm ausführen, um Farben für Pixel der Mikro-Anzeige (250) parallel zu berechnen.The system after claim 15 wherein the processor (714) is further configured to process multiple threads of processing, each executing a fragment shader program to compute colors for pixels of the micro-display (250) in parallel. Ein computerlesbares Speichermedium, das Befehle speichert, die, wenn sie von einem Prozessor (714) ausgeführt werden, den Prozessor veranlassen, Schritte auszuführen, die aufweisen: Identifizieren (105) eines Strahls, der durch ein Pixel einer Mikro-Anzeige (250) und eine Mikrolinse (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; und Berechnen (115) einer Farbe für das Pixel auf der Grundlage der Abbildungskoordinaten.A computer-readable storage medium that stores instructions that, when executed by a processor (714), cause the processor to perform steps comprising: Identifying (105) a ray passing through a pixel of a micro-display (250) and a microlens (253) of a near-eye light field display device (200); Generating mapping coordinates corresponding to the pixel by intersecting (100) the beam with a two-dimensional virtual display plane (210), wherein generating the mapping coordinates includes 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.
DE112014002469.4T 2013-05-17 2014-05-15 System and method for generating images for a near-eye light field display Active DE112014002469B4 (en)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (4)

* Cited by examiner, † Cited by third party
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