DE112014002469T5 - System, Verfahren und Computerprogrammprodukt zur Erzeugung von Bildern für eine augennaheLichtfeldanzeige - Google Patents

System, Verfahren und Computerprogrammprodukt zur Erzeugung von Bildern für eine augennaheLichtfeldanzeige Download PDF

Info

Publication number
DE112014002469T5
DE112014002469T5 DE112014002469.4T DE112014002469T DE112014002469T5 DE 112014002469 T5 DE112014002469 T5 DE 112014002469T5 DE 112014002469 T DE112014002469 T DE 112014002469T DE 112014002469 T5 DE112014002469 T5 DE 112014002469T5
Authority
DE
Germany
Prior art keywords
image
display
pixel
micro
eye
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.)
Granted
Application number
DE112014002469.4T
Other languages
English (en)
Other versions
DE112014002469B4 (de
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/de
Application granted granted Critical
Publication of DE112014002469B4 publication Critical patent/DE112014002469B4/de
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 System, Verfahren und ein Computer Programmprodukt werden für die Erzeugung von Bildern für eine augennahe Lichtfeldanzeige bereitgestellt. Ein Stahl, der durch ein Pixel einer Mikro-Anzeige und eine optische Vorrichtung einer augennahen Lichtfeldanzeigeeinrichtung definiert ist, wird identifiziert und der Stahl wird mit einer zweidimensionalen virtuellen Anzeigeebene geschnitten, um Abbildungskoordinaten zu erzeugen, die dem Pixel entsprechen. Eine Farbe für das Pixel wird auf der Grundlage der Abbildungskoordinaten berechnet. Die optische Vorrichtung der augennahen Lichtfeldanzeigeeinrichtung kann beispielsweise eine Mikrolinse eines Mikrolinsen-Arrays, das zwischen einem Betrachter und einer emittierenden Mikro-Anzeige angeordnet ist, oder ein Lichtpunkt eines Lichtpunkte-Arrays sein, das relativ zu dem Betrachter hinter einer durchlässigen Mikro-Anzeige angeordnet ist.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft die Erzeugung von Bildern und betrifft insbesondere die Erzeugung von Bildern für eine augennahe Lichtfeldanzeige.
  • HINTERGRUND
  • 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.
  • 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.
  • ÜBERBLICK
  • Es werden ein System, Verfahren und Computerprogrammprodukt 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.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • 1 zeigt ein Flussdiagramm eines Verfahrens zur Erzeugung von Bildern für eine augennahe Lichtfeldanzeige gemäß einer Ausführungsform.
  • 2A zeigt ein Auge eines Betrachters und eine augennahe Lichtfeldanzeige gemäß einer Ausführungsform.
  • 2B zeigt eine augennahe Brillen-Lichtfeldanzeige gemäß einer Ausführungsform.
  • 2C zeigt eine weitere augennahe Brillen-Lichtfeldanzeige gemäß einer Ausführungsform.
  • 3A zeigt ein bestehendes Bild, das zur Anzeige durch eine augennahe Lichtfeldanzeigeeinrichtung gemäß einer Ausführungsform zu verarbeiten ist.
  • 3B zeigt ein entsprechendes Mikro-Anzeigebild mit einem elementaren Bild, das jeder Mikrolinse entspricht, gemäß einer Ausführungsform.
  • 3C zeigt das Bild der Mikro-Anzeige aus 3B, wenn es gemäß einer Ausführungsform durch ein Mikrolinsen-Array betrachtet wird.
  • 3D zeigt ein elementares Bild, das ohne Bildfehlerbehebung erzeugt ist, und ein elementares Bild, das mit Bildfehlerbehebung erzeugt ist, gemäß einer Ausführungsform.
  • 3E zeigt ein weiteres bestehendes Bild, das für die Anzeige mittels einer augennahen Lichtfeldanzeigeeinrichtung gemäß einer Ausführungsform zu verarbeiten ist.
  • 3F zeigt ein Bild einer Mikro-Anzeige mit einem elementaren Bild, das jedem Lichtpunkt in einem Lichtpunkte-Array entspricht, gemäß einer Ausführungsform.
  • 4 zeigt eine Parallelverarbeitungseinheit gemäß einer Ausführungsform;
  • 5A zeigt einen allgemeinen Verarbeitungs-Cluster der Parallelverarbeitungseinheit aus 4 gemäß einer Ausführungsform.
  • 5B zeigt eine Partitionseinheit der Parallelverarbeitungseinheit aus 4 gemäß einer Ausführungsform.
  • 6A zeigt den Datenstrom-Multiprozessor aus 5A gemäß einer Ausführungsform.
  • 6B zeigt ein Flussdiagramm eines Verfahrens zur Erzeugung von Bildern für die augennahen Lichtfeldanzeigeeinrichtungen der 2A, 2D und 2C gemäß einer Ausführungsform.
  • 7 zeigt ein anschauliches Computersystem, in welchem die diversen Architekturen und/oder Funktionen der diversen vorhergehenden Ausführungsformen umgesetzt werden können.
  • DETAILLIERTE BESCHREIBUNG
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 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 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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
    Figure DE112014002469T5_0002
  • 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.
  • 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.
  • 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
    Figure DE112014002469T5_0003
    Figure DE112014002469T5_0004
  • 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
    Figure DE112014002469T5_0005
  • 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
    Figure DE112014002469T5_0006
  • 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:
    Figure DE112014002469T5_0007
  • 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.
  • Der in TABELLE 5 gezeigte Pseudo-Code kann in einem Fragmentschattierungsprogramm für xv (screenCoord) enthalten sein. TABELLE 5
    Figure DE112014002469T5_0008
  • 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 microlensExcludeBorder WAHR ist. TABELLE 6
    Figure DE112014002469T5_0009
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 xi 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.
  • 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:
    Figure DE112014002469T5_0010
  • 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.
  • 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.
  • Die Farbe des Pixels gl_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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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:
    Figure DE112014002469T5_0011
    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.
  • 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
    Figure DE112014002469T5_0012
    Figure DE112014002469T5_0013
  • 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).
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Die TPC-Einheit 515 ist ausgebildet, Daten, die von der Rastereinheit 525 und den TPCs 520 erzeugt werden, an eine Rasteroperations-(ROP-)Einheit in der Partitionseinheit 480 weiterzuleiten, wie dies detaillierter nachfolgend beschrieben ist. Die PROP-Einheit 515 kann ferner ausgebildet sein, Optimierungen für die Farbmischung auszuführen, Pixeldaten zu organisieren, Adressenübersetzungen auszuführen, und dergleichen.
  • Die Rastereinheit 525 enthält eine Reihe von Hardwareeinheiten mit festgelegter Funktion, die ausgebildet sind, diverse Rasteroperationen auszuführen. In einer Ausführungsform umfasst die Rastereinheit 525 eine Einricht-Einheit, eine Grob-Rastereinheit, eine Aussonderungseinheit, eine Abschneideeinheit, eine Fein-Rastereinheit und eine Kachel-Vereinigungseinheit. Die Einricht-Einheit empfängt transformierte Vertices bzw. Eckpunkte und erzeugt Ebenengleichungen, die der geometrischen Grundform zugeordnet sind, die durch die Eckpunkte definiert ist. Die Ebenengleichungen werden an die Grob-Rastereinheit übermittelt, um Abdeckungsinformation (beispielsweise eine x, y-Abdeckungsmaske für eine Kachel) für die Grundform zu erzeugen. Die Ausgabe der Grob-Rastereinheit kann an die Aussonderungseinheit übermittelt werden, in welcher Fragmente, die zu der Grundform gehören, die eine z-Prüfung nicht bestehen, ausgesondert werden, und kann dann zu einer Abschneideeinheit übertragen werden, in der Fragmente, die außerhalb eines Betrachtungskegelstumpfes liegen, abgeschnitten werden. Jene Fragmente, die das Abschneiden und das Aussondern überstehen, können einer Fein-Rastereinheit übergeben werden, um Attribute für die Pixelfragmente auf der Grundlage der Ebenengleichungen, die von der Einricht-Einheit erzeugt werden, zu erzeugen. Die Ausgabe der Rastereinheit 580 umfasst Fragmente, die beispielsweise durch eine Fragmentschattierungseinheit, die in einem TPC 520 implementiert ist, zu verarbeiten sind.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 (SDC) 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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 645672 (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.
  • 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 645672 parallel ausgeführt werden, berechnet jeder Strang eine Farbe für die linke Mikro-Anzeige 251 oder die rechte Mikro-Anzeige 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.
  • 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.
  • Der Prozessor 714 repräsentiert generell eine beliebige Art oder eine Form einer Verarbeitungseinheit, die in der Lage ist, Daten zu verarbeiten oder Befehle zu übersetzen und auszuführen. In gewissen Ausführungsformen kann der Prozessor 714 Befehle aus einer Software-Anwendung oder Modul empfangen. Diese Befehle können den Prozessor 714 veranlassen, die Funktionen einer oder mehrerer der anschaulichen Ausführungsformen auszuführen, die hierin beschrieben und/oder dargestellt sind.
  • Der Systemspeicher 716 repräsentiert generell eine beliebige Art oder Form eines flüchtigen oder nicht-flüchtigen Speichergeräts oder eines Mediums, das in der Lage ist, Daten und/oder andere computerlesbare Befehle zu speichern. Zu Beispielen des Systemspeichers 716 gehören, ohne Einschränkung, Einrichtungen in Form von RAM, ROM, eines Flash-Speichers oder eines anderen geeigneten Speichers. Obwohl dies nicht erforderlich ist, kann in gewissen Ausführungsformen das Rechensystem 710 sowohl eine flüchtige Speichereinheit (beispielsweise den Systemspeicher 716) und eine nicht-flüchtige Speichereinrichtung (beispielsweise eine primäre Speichereinrichtung 732) aufweisen.
  • Das Rechensystem 710 kann ferner eine oder mehrere Komponenten oder Elemente zusätzlich zu dem Prozessor 714 und Systemspeicher 716 aufweisen. Beispielsweise weist in der Ausführungsform der 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 (PCIe) oder ein ähnlicher Bus) und ein Netzwerk.
  • Die Speichersteuerung 718 repräsentiert in allgemeiner Weise eine beliebige Art oder Form einer Einrichtung, die in der Lage ist, einen Speicher oder Daten zu handhaben, oder eine Kommunikation zwischen einer oder mehreren Komponenten des Rechensystems 710 zu steuern. Beispielsweise kann die Speichersteuerung 718 die Kommunikation zwischen dem Prozessor 714, dem Systemspeicher 716 und der I/O-Steuerung 720 über die Kommunikationsinfrastruktur 712 steuern.
  • Die I/O-Steuerung 720 repräsentiert in allgemeiner Weise eine beliebige Art oder Form eines Moduls, das in der Lage ist, die Eingabe- und Ausgabefunktionen einer Recheneinrichtung zu koordinieren und/oder zu steuern. Beispielsweise kann die I/O-Steuerung 720 den Austausch von Daten zwischen einem oder mehreren Elementen des Rechensystems 710, etwa dem Prozessor 714, dem Systemspeicher 716, der Kommunikationsschnittstelle 722, einem Anzeige-Adapter 726, der Eingabeschnittstelle 730 und der Speicherschnittstelle 734 steuern oder ermöglichen.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • 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.
  • Die vorhergehende Beschreibung ist zum Zwecke der Erläuterung mit Bezug zu speziellen Ausführungsformen angegeben. Jedoch sollen die vorhergehenden anschaulichen Erläuterungen die Erfindung nicht auf die offenbarten genauen Formen einschränken oder sollen nicht umfassend sein. Viele Modifizierungen und Variationen sind im Lichte der vorhergehenden Lehren möglich.
  • Die Ausführungsformen wurden ausgewählt und beschrieben, um Prinzipien der Erfindung und ihrer praktischen Anwendungen am besten zu erläutern, um damit andere Fachleute in die Lage zu versetzen, die Erfindung und diverse Ausführungsformen mit diversen Modifizierungen, wie sie für die spezielle betrachtete Anwendung geeignet sind, einzusetzen.
  • Es sind somit Ausführungsformen gemäß der Erfindung beschrieben. Obwohl die vorliegende Offenbarung in Form spezieller Ausführungsformen beschrieben ist, sollte beachtet werden, dass die Erfindung nicht als auf derartige Ausführungsformen eingeschränkt erachtet werden sollte, sondern dass sie entsprechend den folgenden Patentansprüchen ausgelegt werden soll.

Claims (20)

  1. Ein Verfahren aufweisend: Identifizieren eines Strahls, der durch ein Pixel einer Mikro-Anzeige und eine optische Vorrichtung einer augennahen Lichtfeldanzeigeeinrichtung definiert ist; Erzeugen von Abbildungskoordinaten, die dem Pixel entsprechen, durch Schneiden des Strahls mit einer zweidimensionalen virtuellen Anzeigeebene; und Berechnen einer Farbe für das Pixel auf der Grundlage der Abbildungskoordinaten.
  2. Das Verfahren nach Anspruch 1, wobei ein bestehendes zweidimensionales Bild als eine Textur-Abbildung gespeichert wird, die unter Verwendung der Abbildungskoordinaten indiziert wird.
  3. Das Verfahren nach Anspruch 1, das ferner aufweist: Vorverarbeiten eines bestehenden zweidimensionalen Bildes, 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.
  4. 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, um ein Mikro-Anzeigenbild zu erzeugen.
  5. Das Verfahren nach Anspruch 1, das ferner aufweist Speichern der Farbe für das Pixel in einer Datenstruktur für ein Mikro-Anzeigebild in einem Speicher.
  6. Das Verfahren nach Anspruch 5, wobei das Mikro-Anzeigebild einem Bild für das linke Auge oder einem Bild für das rechte Auge eines stereoskopischen Bildpaares entspricht.
  7. Das Verfahren nach Anspruch 5, wobei das Mikro-Anzeigebild einem Bild einer multiskopischen Bildgruppe entspricht.
  8. 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.
  9. Das Verfahren nach Anspruch 1, wobei eine Tiefe der zweidimensionalen virtuellen Anzeigeebene relativ zu dem Auge des Betrachters auf einem Brillenrezept beruht.
  10. Das Verfahren nach Anspruch 1, wobei mehrere Verarbeitungsstränge ausgebildet sind, ein Fragmentschattierungsprogramm auszuführen, um Farben für Pixel der Mikro-Anzeige parallel zu berechnen.
  11. Das Verfahren nach Anspruch 1, wobei die Farbe Schwarz ist, wenn die Abbildungskoordinaten außerhalb der virtuellen Anzeigeebene liegen.
  12. Das Verfahren nach Anspruch 1, wobei das virtuelle Bild ein virtuelles Objekt enthält, das für einen Anwender der augennahen Lichtfeldanzeigeeinrichtung an einer Tiefe erscheint, die zu der virtuellen Anzeigeebene verschoben ist.
  13. Das Verfahren nach Anspruch 1, wobei Erzeugen der Abbildungskoordinaten aufweist ein Ermitteln einer Verschiebung des Pixels relativ zum Referenzpunkt auf der Mikro-Anzeige.
  14. Das Verfahren nach Anspruch 1, wobei die optische Vorrichtung eine Mikrolinse ist.
  15. Das Verfahren nach Anspruch 14, wobei Erzeugen der Abbildungskoordinaten aufweist ein Ermitteln einer Verschiebung eines optischen Mittelpunkts der Mikrolinse relativ zu einem Referenzpunkt auf der Mikro-Anzeige.
  16. Das Verfahren nach Anspruch 1, wobei Erzeugen der Abbildungskoordinaten aufweist ein Ermitteln einer Verschiebung eines Punkts innerhalb der zweidimensionalen virtuellen Anzeigeebene, die von dem Strahl geschnitten wird.
  17. Ein System aufweisend: eine Mikro-Anzeige, die zwischen einer Nah-Fokusebene und einer Pupille angeordnet ist; eine optische Vorrichtung, die zwischen der Mikro-Anzeige und der Pupille angeordnet ist; und einem Prozessor, der ausgebildet ist, um: einen Strahl zu identifizieren, der durch ein Pixel der Mikro-Anzeige und die optische Vorrichtung definiert ist; Abbildungskoordinaten zu erzeugen, die dem Pixel entsprechen, indem der Stahl mit einer zweidimensionalen virtuellen Anzeigeebene geschnitten wird; und eine Farbe für das Pixel auf der Grundlage der Abbildungskoordinaten zu berechnen.
  18. Das System nach Anspruch 17, das ferner einen Speicher aufweist, der ausgebildet ist, ein bestehendes zweidimensionales Bild als eine Textur-Abbildung zu speichern, die unter Anwendung der Texturkoordinaten indiziert ist.
  19. Das System nach Anspruch 17, wobei der Prozessor ferner ausgebildet ist, mehrere Verarbeitungsstränge zu verarbeiten, die jeweils ein Fragmentschattierungsprogramm ausführen, um Farben für Pixel der Mikro-Anzeige parallel zu berechnen.
  20. Ein computerlesbares Speichermedium, das Befehle speichert, die, wenn sie von einem Prozessor ausgeführt werden, den Prozessor veranlassen, Schritte auszuführen, die aufweisen: Identifizieren eines Strahls, der durch ein Pixel einer Mikro-Anzeige und eine optische Vorrichtung einer augennahen Lichtfeldanzeigeeinrichtung definiert ist; Erzeugen von Abbildungskoordinaten, die dem Pixel entsprechen, durch Schneiden des Strahls mit einer zweidimensionalen virtuellen Anzeigeebene; und Berechnen einer Farbe für das Pixel auf der Grundlage der Abbildungskoordinaten.
DE112014002469.4T 2013-05-17 2014-05-15 System und Verfahren zur Erzeugung von Bildern für eine augennaheLichtfeldanzeige Active DE112014002469B4 (de)

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 2014-01-21
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
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 true DE112014002469T5 (de) 2016-02-11
DE112014002469B4 DE112014002469B4 (de) 2022-06-15

Family

ID=51895425

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112014002469.4T Active DE112014002469B4 (de) 2013-05-17 2014-05-15 System und Verfahren zur Erzeugung von Bildern für eine augennaheLichtfeldanzeige

Country Status (4)

Country Link
US (1) US9582922B2 (de)
CN (1) CN105209960B (de)
DE (1) DE112014002469B4 (de)
WO (1) WO2014186625A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016112326A1 (de) * 2016-07-06 2018-01-11 Dr. Ing. H.C. F. Porsche Aktiengesellschaft Verfahren und System zum Betreiben einer 3D-Brille mit Blendeigenschaft

Families Citing this family (36)

* 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
JP2015230383A (ja) * 2014-06-05 2015-12-21 キヤノン株式会社 画像表示装置および画像表示システム
CN105717640B (zh) * 2014-12-05 2018-03-30 北京蚁视科技有限公司 基于微透镜阵列的近眼显示器
KR102593113B1 (ko) * 2015-07-03 2023-10-25 에씰로 앙터나시오날 증강 현실을 위한 방법 및 시스템
WO2017050975A1 (en) 2015-09-23 2017-03-30 Medintec B.V. Video glasses
JP6952713B2 (ja) * 2016-01-19 2021-10-20 マジック リープ, インコーポレイテッドMagic Leap,Inc. 反射を利用する拡張現実システムおよび方法
EP3235478A1 (de) 2016-04-18 2017-10-25 Universität Wien Schutzbrille
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 (de) * 2016-06-22 2017-12-27 Thomson Licensing Verfahren und vorrichtung zur codierung eines signals, das einen lichtfeldinhalt repräsentiert
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
US10504270B2 (en) 2016-12-22 2019-12-10 Apple Inc. Resource synchronization for graphics processing
CN106991637B (zh) * 2017-02-28 2019-12-17 浙江大学 一种利用gpu并行计算实现多分辨率光场分解的方法
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 (ja) * 2017-05-19 2018-01-24 大日本印刷株式会社 表示装置
US10764552B2 (en) 2017-05-26 2020-09-01 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
WO2019021877A1 (ja) * 2017-07-24 2019-01-31 シャープ株式会社 表示装置及びヘッドマウントディスプレイ
JP6966718B2 (ja) * 2017-08-29 2021-11-17 国立大学法人 奈良先端科学技術大学院大学 ディスプレイ装置
CN108200330A (zh) * 2017-12-11 2018-06-22 虚拟现实(深圳)智能科技有限公司 双8k图像虚拟现实处理方法及系统
US10678056B2 (en) * 2018-02-26 2020-06-09 Google Llc Augmented reality light field head-mounted displays
CN111258062B (zh) * 2018-12-03 2022-02-15 昆山工研院新型平板显示技术中心有限公司 显示单元、近眼显示光学模组和近眼显示系统
CN109379581A (zh) * 2018-12-05 2019-02-22 北京阿法龙科技有限公司 一种头戴式双屏幕立体显示系统的坐标变换及显示方法
US11200656B2 (en) 2019-01-11 2021-12-14 Universal City Studios Llc Drop detection systems and methods
CN113009692B (zh) * 2019-12-19 2023-06-16 中强光电股份有限公司 近眼光场显示装置
CN113132715B (zh) * 2019-12-31 2023-08-04 Oppo广东移动通信有限公司 一种图像处理方法、装置、电子设备及其存储介质
CN111314614B (zh) * 2020-03-11 2021-08-13 北京字节跳动网络技术有限公司 图像的处理方法、装置、可读介质和电子设备
CN111427166B (zh) * 2020-03-31 2022-07-05 京东方科技集团股份有限公司 一种光场显示方法及系统、存储介质和显示面板
EP4172739A1 (de) * 2020-06-29 2023-05-03 Snap Inc. Brille mit gemeinsamer blickempfindlicher ansicht

Family Cites Families (39)

* 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
EP0627644B1 (de) 1993-06-01 2001-11-28 Sharp Kabushiki Kaisha Bildanzeigevorrichtung mit rückseitiger Beleuchtung
CA2240907C (en) 1995-12-18 2001-06-05 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
US6097394A (en) * 1997-04-28 2000-08-01 Board Of Trustees, Leland Stanford, Jr. University Method and system for light field rendering
US6160667A (en) 1997-08-11 2000-12-12 Telcordia Technologies, Inc. Apparatus and method for creating and displaying planar virtual images
WO2004043079A1 (ja) 2002-11-07 2004-05-21 Sanyo Electric Co., Ltd. 立体映像処理方法及び立体映像表示装置
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 (ko) 2003-09-18 2007-03-20 가부시끼가이샤 도시바 3차원 화상표시장치
EP1536399A1 (de) 2003-11-26 2005-06-01 Barco N.V. Methode und Vorrichtung zum visuellen Maskieren von Defekten in Matrix-Anzeigen unter Ausnutzung von Eigenschaften des menschlichen Auges
US20050280894A1 (en) 2004-04-02 2005-12-22 David Hartkop Apparatus for creating a scanning-column backlight in a scanning aperture display device
JP4227076B2 (ja) 2004-05-24 2009-02-18 株式会社東芝 立体画像を表示する表示装置及び立体画像を表示する表示方法
JP4752309B2 (ja) 2005-04-07 2011-08-17 ソニー株式会社 画像表示装置および方法
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
US8416289B2 (en) * 2009-04-28 2013-04-09 Microsoft Corporation Light-field display
JP2011145607A (ja) 2010-01-18 2011-07-28 Sony Corp ヘッドマウントディスプレイ
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
US8817015B2 (en) * 2010-03-03 2014-08-26 Adobe Systems Incorporated Methods, apparatus, and computer-readable storage media for depth-based rendering of focused plenoptic camera data
JP2012032611A (ja) 2010-07-30 2012-02-16 Sony Corp 立体画像表示装置
JP5664031B2 (ja) 2010-09-02 2015-02-04 ソニー株式会社 表示装置
JP2012053342A (ja) 2010-09-02 2012-03-15 Sony Corp 表示装置
JP2012058599A (ja) 2010-09-10 2012-03-22 Sony Corp 立体画像表示装置および画像表示素子
JP2012063704A (ja) 2010-09-17 2012-03-29 Sony Corp 表示装置
EP2628130B1 (de) 2010-10-11 2020-06-17 Graphic Security Systems Corporation Verfahren zur konstruktion eines zusammengesetzten bildes mit einem verborgenen authentifizierungsbild
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
US9179134B2 (en) * 2011-01-18 2015-11-03 Disney Enterprises, Inc. Multi-layer plenoptic displays that combine multiple emissive and light modulating planes
JP6168794B2 (ja) 2012-05-31 2017-07-26 キヤノン株式会社 情報処理方法および装置、プログラム。
US9557565B2 (en) 2012-07-02 2017-01-31 Nvidia Corporation Near-eye optical deconvolution displays
US9494797B2 (en) 2012-07-02 2016-11-15 Nvidia Corporation Near-eye parallax barrier displays
US9841537B2 (en) 2012-07-02 2017-12-12 Nvidia Corporation Near-eye microlens array displays
US8754829B2 (en) 2012-08-04 2014-06-17 Paul Lapstun Scanning light field camera and display
JP6029380B2 (ja) * 2012-08-14 2016-11-24 キヤノン株式会社 画像処理装置、画像処理装置を具備する撮像装置、画像処理方法、及びプログラム
JP6094855B2 (ja) 2012-09-27 2017-03-15 Nltテクノロジー株式会社 液晶表示素子、画像表示装置、画像表示装置の駆動方法、携帯機器
JP6449236B2 (ja) 2013-03-25 2019-01-09 インテル コーポレイション 多射出瞳頭部装着型ディスプレイのための方法および装置
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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102016112326A1 (de) * 2016-07-06 2018-01-11 Dr. Ing. H.C. F. Porsche Aktiengesellschaft Verfahren und System zum Betreiben einer 3D-Brille mit Blendeigenschaft

Also Published As

Publication number Publication date
DE112014002469B4 (de) 2022-06-15
CN105209960B (zh) 2018-05-18
WO2014186625A1 (en) 2014-11-20
US9582922B2 (en) 2017-02-28
US20140340389A1 (en) 2014-11-20
CN105209960A (zh) 2015-12-30

Similar Documents

Publication Publication Date Title
DE112014002469B4 (de) System und Verfahren zur Erzeugung von Bildern für eine augennaheLichtfeldanzeige
US10642311B2 (en) Hybrid optics for near-eye displays
DE102015113240A1 (de) System, verfahren und computerprogrammprodukt für schattierung unter verwendung eines dynamischen objektraumgitters
DE102013114542B4 (de) Augennahe Anzeige mit Parallaxen-Sperre
US9519144B2 (en) System, method, and computer program product to produce images for a near-eye light field display having a defect
DE102018132468A1 (de) Multi-gpu-frame-rendern
DE102018114929B4 (de) System und verfahren für ein rendering eines lichtfeldes
DE102017108096A1 (de) System, verfahren und computerprogrammprodukt zum rendern bei variablen abtastraten mittels projektiver geometrischer verzerrung
DE102016109905A1 (de) Stückweise lineare unregelmäßige Rasterisierung
DE102013114373A1 (de) Konsistente Vertex-Einrastung für Rendering mit variabler Auflösung
DE102018128699A1 (de) Einstellen einer Winkelabtastrate während eines Renderings unter Verwendung von Blickinformationen
US20150238076A1 (en) Simulation device, simulation system, simulation method and simulation program
US11004255B2 (en) Efficient rendering of high-density meshes
DE112009005074T5 (de) Techniken für schnelle stereo-rekonstruktion aus bildern
DE112016005809T5 (de) Lichtfeld-Rendering eines Bildes unter Verwendung variabler Rechenkomplexität
DE102013222685A1 (de) System, Verfahren und Computer-Programm-Produkt zum Abtasten einer hierarchischen Tiefe-Karte
DE112011105927T5 (de) Grafik-Renderingverfahren für autostereoskopisches dreidimensionales Display
DE112019003203T5 (de) Ratensteuerung für videocodierung und -übertragung mit niedriger latenz
DE102017109472A1 (de) Stereo-mehrfach-projektion implementiert unter verwendung einer graphikverarbeitungs-pipeline
DE112013003714T5 (de) Stochastische Tiefenpufferkompression mittels verallgemeinerter Ebenencodierung
DE102021104310A1 (de) Reservoir-basiertes räumlich-zeitliches resampling nach wichtigkeit unter verwendung einer globalen beleuchtungsdatenstruktur
DE112021000108T5 (de) Entrauschungstechniken für rekurrente unschärfen bei raytracing-anwendungen
DE102018130770A1 (de) Stereoskopische Wiedergabe von virtuellen 3D-Objekten
DE112021002237T5 (de) Weitwinkel erweiterte-realität-anzeige
DE102021120604A1 (de) Dynamische bildglättung basierend auf netzwerkbedingungen

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