DE10331231B4 - Method for transferring depth information into the depth memory of a graphics card for displaying 3D panoramic images - Google Patents

Method for transferring depth information into the depth memory of a graphics card for displaying 3D panoramic images Download PDF

Info

Publication number
DE10331231B4
DE10331231B4 DE2003131231 DE10331231A DE10331231B4 DE 10331231 B4 DE10331231 B4 DE 10331231B4 DE 2003131231 DE2003131231 DE 2003131231 DE 10331231 A DE10331231 A DE 10331231A DE 10331231 B4 DE10331231 B4 DE 10331231B4
Authority
DE
Germany
Prior art keywords
depth
texture
pixel
depth information
information
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.)
Expired - Fee Related
Application number
DE2003131231
Other languages
German (de)
Other versions
DE10331231A1 (en
Inventor
Peter Dr. Voigt
Christian Pick
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.)
Airbus Defence and Space GmbH
Original Assignee
EADS Deutschland GmbH
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 EADS Deutschland GmbH filed Critical EADS Deutschland GmbH
Priority to DE2003131231 priority Critical patent/DE10331231B4/en
Publication of DE10331231A1 publication Critical patent/DE10331231A1/en
Application granted granted Critical
Publication of DE10331231B4 publication Critical patent/DE10331231B4/en
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/04Texture mapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/28Indexing scheme for image data processing or generation, in general involving image processing hardware

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

Verfahren zur Übertragung von Tiefeninformationen in den Tiefenspeicher einer Grafikkarte für die Darstellung von 3D-Panoramabildern, dadurch gekennzeichnet, dass die Übertragung der Tiefeninformationen für jedes Pixel des darzustellenden 3D-Panoramabilds auf dem Grafikchip der Grafikkarte mittels eines auf dem Grafikchip ausgeführten Programms erfolgt, wobei als Eingabedaten für das Programm mindestens eine Textur, die in kodierter Form die Tiefeninformationen des darzustellenden 3D-Panoramabilds enthält, zur Verfügung gestellt werden, wobei die Tiefeninformationen des darzustellenden 3D-Panoramabilds in der mindestens einen Textur derart kodiert sind, dass die Tiefeninformation eines Pixels durch einen Quotienten zweier in der verwendeten Textur vorliegender Werte gebildet wird.method for transmission depth information into the depth memory of a video card for presentation of 3D panoramic images, characterized in that the transmission the depth information for each pixel of the 3D panoramic image to be displayed on the graphics chip the graphics card using a program running on the graphics chip takes place, wherein as input data for the program at least one Texture that encodes the depth information to be displayed Contains 3D panoramic image, to disposal where the depth information of the 3D panoramic image to be displayed is in the at least one texture are coded such that the depth information of a pixel by a quotient of two in the texture used existing values is formed.

Figure 00000001
Figure 00000001

Description

Die Erfindung betrifft ein Verfahren zur Übertragung von Tiefeninformationen in den Tiefenspeicher einer Grafikkarte für die Darstellung von 3D-Panoramabildern.The The invention relates to a method for transmitting depth information in the depth memory of a graphics card for the display of 3D panoramic images.

Die Erfindung ist insbesondere in Verfahren zur schnellen Darstellung eines Landschaftsbildes bei gleichzeitiger Darstellung einer oder mehrerer Flugobjekte anwendbar. Da sich die Flugobjekte im Raum vor dem Betrachter relativ frei bewegen können, müssen sie vom Landschaftsbild teilweise überdeckt werden können – abhängig von ihrer Entfernung zum Betrachter. Das Landschaftsbild liegt in Form einer zweidimensionalen Fotographie vor, beinhaltet also keinerlei Informationen über die Entfernung der darauf sichtbaren Gegenstände zum Betrachter. Die Information über die Entfernung zum Betrachter („Tiefeninformation") muss daher auf einem zweiten Weg in das System eingespeist werden. Für den Anwender am einfachsten geht dies mittels einer Art „Tiefenbild", in dem in Farben kodiert die Tiefeninformation individuell für jedes Pixel enthalten ist. Bei dieser Art der Datengenerierung kann der Anwender sehr leicht eine neue Landschaft mittels einer 360°-Fotographie integrieren und muss hierzu nur ein passendes Tiefenbild erzeugen.The Invention is particularly in rapid representation methods a landscape picture with simultaneous representation of one or several flying objects applicable. Because the flying objects in the room Before the viewer can move relatively freely, they must from the landscape partially covered can be - depending on their distance to the viewer. The landscape is in shape a two-dimensional photograph, so does not contain any information about the removal of objects visible to the viewer. The information about the Distance to the viewer ("depth information") must therefore a second way into the system. For the user The easiest way to do this is by means of a kind of "depth image" in which colors are used encodes the depth information individually for each pixel. With this type of data generation, the user can very easily to integrate a new landscape with a 360 ° -photography only produce a suitable depth image.

Anwendung finden derartige Verfahren u. a. in Visualisierungssystemen von militärischen Ausbildungsgeräten. Der Ubungskampfraum ROLAND 2 z.B. hat ein einkanaliges optisches Visier. Das Visierbild zeigt eine auf einen festen Augenpunkt basierende 360°-Landschaft mit einer fotorealistischen Geländedarstellung. Der Betrachter kann sich um eine virtuelle Achse drehen, so dass das Visierbild einen beliebigen Ausschnitt der Landschaft darstellt. Innerhalb dieses Visierbildes können sich Flugziele bewegen. Mit dem Einbringen von Informationen über die Entfernung zum Betrachter können die Flugziele teilweise von der Geländedarstellung überdeckt werden. Weitere Randbedingungen für das Visierbild sind eine Animationsrate von mindestens 60 Bilder pro Sekunde, eine Auflösung von mindestens 768 × 768 Bildpunkten und die Möglichkeit, dass der Betrachter sich bis zu 90° pro Sekunde um seine Achse drehen kann.application find such methods u. a. in visualization systems of military Training devices. The exercise space ROLAND 2 e.g. has a single-channel optical Visor. The visor image shows a fixed eye point 360 ° -Landscape with a photo-realistic terrain representation. The viewer can turn around a virtual axis, so that the visor image represents any part of the landscape. Within this visor image can moving flight destinations. By bringing information about the Distance to the viewer can the flight destinations partly covered by the terrain become. Other boundary conditions for the visor image are one Animation rate of at least 60 frames per second, a resolution of at least 768 × 768 Pixels and the possibility that the viewer is up to 90 ° per Second turn around its axis.

Aus Kostengründen ist für die Darstellung der Landschaft und der Flugobjekte Standard-PCs (so genannte COTS-Produkte: Commercial Oft The Shelf) anzustreben. Aufgrund der rasanten Entwicklung der Computertechnik in den letzten Jahren wurde die Leistungsfähigkeit dieser Systeme – insbesondere im Grafik-Bereich – so stark gesteigert, dass eine Realisierung grundsätzlich möglich erscheint. Allerdings sind derartige COTS-Produkte nicht für diese spezielle Aufgabe der Grafikgenerierung zur Erzeugung von 3D-Bildern mittels einer Fotographie und einem „Tiefenbild" entworfen worden, so dass es in der Regel an der notwendigen Schnelligkeit fehlen wird.Out cost reasons is for the representation of the landscape and the flying objects standard PCs (so-called COTS products: Commercial Often The Shelf). Due to the rapid development of computer technology in recent years Years became the efficiency of these systems - in particular in the graphics area - so greatly increased, that a realization seems possible in principle. Indeed Such COTS products are not for this particular task Graphic generation for the generation of 3D images by means of a photograph and a "depth image", so that it usually lacks the necessary speed becomes.

In der DE 196 20 858 A1 ist ein Verfahren zur Farbaufbereitung in Computergrafiksystemen dargestellt, und zwar insbesondere zur Erzeugung einer Farbdarstellung, die den Abstand des Betrachters zu dem dargestellten Objekt mit einbezieht. Dieser Abstand wird durch die Tiefeninformation des Objekts approximiert.In the DE 196 20 858 A1 there is shown a method of color rendering in computer graphics systems, in particular for producing a color representation involving the distance of the viewer to the displayed subject. This distance is approximated by the depth information of the object.

Die WO98/40848 beschreibt ein Verfahren zur Speicherung von Pixeldaten für eine dreidimensionale Darstellung eines Bildszene, nach dem derselbe Speicherbereich sowohl als Tiefenspeicher als auch als Bildspeicher benutzt werden kann. Da die Tiefeninformationen im Laufe des Verfahrens von den Darstellungsinformationen (Farbwerte) überschrieben werden, werden die Darstellungsinformationen als solche markiert, um ein erneutes Überschreiben zu verhindern.The WO98 / 40848 describes a method for storing pixel data for one three-dimensional representation of an image scene, after which the same Memory area as depth memory as well as image memory can be used. Because the depth information in the course of the procedure will be overwritten by the display information (color values) the presentation information marked as such, to override again to prevent.

Aufgabe der Erfindung ist es, ein Verfahren zu schaffen, das unter Einsatz von Standard-Hardware aus dem Consumer-Bereich eine schnelle Darstellung der 3D-Landschaft bei einer Auflösung von mindestens 768 × 768 Bildpunkten mit mindestens 60 Bildern pro Sekunde ermöglicht. Der Betrachter soll sich dabei sehr schnell (d.h. bis zu 90°/s) um seine Achse drehen können.task The invention is to provide a method using from standard consumer-grade hardware to a quick representation the 3D landscape at a resolution of at least 768 × 768 Pixels with at least 60 frames per second. The viewer should be very fast (i.e., up to 90 ° / s) around his Axis can rotate.

Diese Aufgabe wird mit dem Verfahren nach Patentanspruch 1 gelöst. Eine vorteilhafte Ausführung des Verfahrens ist Gegenstand eines weiteren Patentanspruchs.These Task is solved by the method according to claim 1. A advantageous embodiment of Method is the subject of another claim.

Erfindungsgemäß erfolgt innerhalb des 3D-Visualisierungsprozesses die Übertragung der Tiefeninformationen des darzustellenden 3D-Panoramabilds in den Tiefenspeicher (z.B. dem Z-Buffer, es gibt jedoch auch andere Formen von Tiefenspeicher wie z. B. den W-Buffer) der Grafikkarte auf Pro-Pixel-Basis unmittelbar auf dem Grafikchip der Grafikkarte mittels eines auf dem Grafikchip ausgeführten Programms. Hierzu werden dem Programm als Eingabedaten mindestens eine Textur, die in kodierter Form die Tiefeninformationen des darzustellenden 3D-Panoramabilds enthält, zur Verfügung gestellt.According to the invention, within the 3D visualization process, the transmission of the depth information of the 3D panoramic image to be displayed into the depth memory (eg the Z-buffer, but there are also other forms of depth memory such as the W-buffer) of the graphics card on per-pixel -Basis directly on the graphics chip of the graphics card by means of a program running on the graphics chip. For this purpose who the program as input data at least one texture that contains in coded form the depth information of the 3D panorama image to be displayed provided.

Da der Darstellungsprozess bei der Darstellung der Landschaft keine Bildbereiche mehrfach überschreibt, kann das Landschaftsbild in nahezu konstanter Geschwindigkeit inkl. der Tiefeninformationen dargestellt werden. Hierdurch werden Garantien für die Darstellungsgeschwindigkeit möglich. Die Darstellungsgeschwindigkeit der Landschaft inkl. der Tiefenwerte ist nur von der Verarbeitungsgeschwindigkeit des Programms und der notwendigen Zeit für den Transfer der Daten vom Hauptspeicher des PC in den Grafikspeicher der Grafikkarte (in aktuellen PC-Systemen kommt der AGP-Bus zum Einsatz) abhängig.There the presentation process in the representation of the landscape none Overwrites image areas several times, can the landscape in almost constant speed incl. the depth information is displayed. This will be guarantees for the Display speed possible. The presentation speed of the landscape including the depth values is only on the processing speed of the program and the necessary time for the transfer of the data from the main memory of the PC to the graphics memory the graphics card (in current PC systems, the AGP bus comes to Use).

Das auf dem Grafikchip ausgeführte Programm kann insbesondere ein in der modernen 3D-Visualisierungstechnik verwendeter so genannter „Pixel Shader" (in der Literatur oft auch als Textur Shader, Fragment Shader oder nur als Shader bezeichnet) sein. „Pixel Shader" steht allgemein als Synonym für ein auf der Grafikkarte vorhandenes Assembler-Programm, welches einen darzustellenden Punkt eines Polygons berechnet. Der Name leitet sich aus zwei Teilen ab. „Pixel" bezieht sich auf die Berechnung eines Punktes. „Shader" bezieht sich auf den eigentlichen Verwendungszweck eines Pixel Shaders – der Berechnung von Schattierungen bzw. Beleuchtungs- und Farbinformationen eines Punktes.The running on the graphics chip Program may be one in modern 3D visualization technology used so-called "pixel Shader "(in the Literature often also called texture shader, fragment shader or just as Shader). "Pixel Shader "is common as a synonym for a present on the graphics card assembler program, which calculates a point of a polygon to be displayed. The name derives is made up of two parts. "Pixel" refers to the calculation of a point. "Shader" refers to the actual purpose of a pixel shader - the calculation shades or lighting and color information of a Point.

Mit Einführung von High-End-Grafikkarten der Geforce4-Familie hat der Hersteller nVidia ein Verfahren namens „Z-Correct Bump Mapping" vorgestellt, dass speziell das Problem der Durchdringung von Wasseroberflächen beheben soll. Einzelheiten hierzu findet sich auch auf der Internetseite des Herstellers www.nvidia.com. Mit dieser Technik wurde erstmals eine Möglichkeit geschaffen, auf Pro-Pixel-Basis Einfluss auf den Tiefenwert eines Pixels im Inneren eines Polygons zu nehmen. Die vorliegende Erfindung beruht darauf, die für das „Z-Correct Bump Mapping"-Verfahren vorgesehenen Pixel-Shader-Befehle einem gänzlich anderen Zweck, nämlich für die schnelle Übertragung der Tiefenwerte in den Tiefenspeicher der Grafikkarte, zuzuführen.With introduction of high-end graphics cards of the Geforce4 family has the manufacturer nVidia a method called "Z-Correct Bump mapping "presented, that specifically fix the problem of water surface penetration should. Details can be found on the website the manufacturer www.nvidia.com. This technique was first a possibility created on a per pixel basis influence the depth value of a To take pixels inside a polygon. The present invention based on that for the "Z-Correct Bump Mapping procedure Pixel shader commands one at a time other purpose, namely for the fast transmission the depth values in the depth memory of the graphics card to feed.

Dies gelingt durch eine geeignete Kodierung der Eingabedaten. Da die verwendete Textur Tiefeninformationen enthält, wird sie im Folgenden auch als Tiefentextur bezeichnet. Dies zur Abgrenzung zu Texturen, welche die eigentlichen Bilddaten des darzustellenden 3D-Panoramabilds enthalten, wie sie üblicherweise von Pixel-Shadern verarbeitet werden.This succeeds by a suitable encoding of the input data. Because the used texture contains depth information, it will also below referred to as depth texture. This is to delineate textures, which the actual image data of the 3D panorama image to be displayed contain as they usually do from pixel shaders are processed.

Aufgrund der vorgegebenen Funktionalität der Pixel-Shader-Befehle entsprechend dem „Z-Correct Bump Mapping"-Verfahren müssen die in der Tiefentextur enthaltenen Werte derart kodiert werden, dass die vom Pixel-Shader daraus generierten und in den Tiefenspeicher übertragenen Werte den tatsächlichen Tiefenwerten der einzelnen Pixel entsprechen. Liegen zum Beispiel die vom Pixel-Shader generierten und in den Tiefenspeicher übertragenen Tiefenwerte in der Form eines Quotienten zweier in der Tiefentextur enthaltener Werte vor, so müssen die beiden Werte der Tiefentextur so vorbesetzt werden, dass ihr Quotient gerade dem tatsächlichen Tiefenwert eines Pixels entsprechen.by virtue of the given functionality The pixel shader instructions according to the "Z-Correct Bump Mapping" method must have the values contained in the depth texture are encoded in such a way that those generated by the pixel shader and transferred to the depth memory Values the actual Depth values of each pixel. Lying for example those generated by the pixel shader and transferred to the depth memory Depth values in the form of a quotient of two in depth texture contained values before, so must the two values of the deep texture are preset so that you Quotient just the actual Depth value of a pixel.

Gemäß der Erfindung erfolgt die Generierung der Tiefeninformation für die individuellen Pixel nicht durch Interpolation der nur in den Eckpunkten eines Polygons definierten Tiefeninformationen (Letzteres entspricht der Standard-Rendering-Pipeline gemäß dem Stand der Technik in der 3D-Visualisierungstechnik, wie unten näher erläutert), sondern durch Zugriff auf eine vorgefertigte Tiefentextur, die die Tiefenwerte auf Pro-Pixel-Basis und in einer der Verarbeitung durch den Pixel-Shader angepassten Form enthält. Die Verarbeitung der Tiefeninformationen mittels Pixel-Shader erfolgt auf dem Grafikchip der Grafikkarte in einem speziell hierfür optimierten Prozessorbereich und ist deshalb sehr schnell.According to the invention the generation of the depth information for the individual pixels does not occur Interpolation defined only in the vertices of a polygon Depth information (the latter corresponds to the standard rendering pipeline according to the state the technique in the 3D visualization technique, as explained in more detail below), but by accessing a pre-made depth texture that the Depth values on a per-pixel basis and in one processing by the pixel shader contains customized form. The processing of the depth information by means of pixel shaders takes place on the graphics chip of the graphics card in a specially optimized for this Processor area and is therefore very fast.

Tests bei der geforderten Auflösung von 1024 × 768 Punkten mit einem Landschaftsbereich von 768 × 768 Punkten bei einer Farbtiefe von 16 Bit und einer Geforce4 Ti4600-Grafikkarte haben gezeigt, dass die gewünschte Bilddarstellungsfrequenz von 60 Hz erreicht werden kann. Dies konnte auch bei einer Auflösung des Landschaftsbereiches von 1024 × 1024 Punkten gezeigt werden.Testing at the required resolution from 1024 × 768 Points with a landscape area of 768 × 768 points at one color depth of 16 bit and a Geforce4 Ti4600 graphics card have shown that the desired Picture display frequency of 60 Hz can be achieved. This could even with a resolution of the Landscape area of 1024 × 1024 Points are shown.

Das erfindungsgemäße Verfahren kann insbesondere unter beiden großen Graphikstandards (Open GL, DirectX) auf verschiedenen Betriebssystemen eingesetzt werden.The inventive method especially under both major graphics standards (Open GL, DirectX) can be used on different operating systems.

Es kann u. a. bei Verwendung eines Grafikprozessors der Firma nVidia als auch der Firma ATI eingesetzt werden.It can u. a. when using a graphics processor from nVidia as well as the company ATI.

Die Erfindung wird anhand konkreter Ausführungsbeispiele und unter Bezug auf Figuren näher erläutert. Sie zeigen:The Invention will be described with reference to specific embodiments and with reference closer to figures explained. They show:

1 die Rendering-Pipeline von DirectX 8.1, 1 the rendering pipeline of DirectX 8.1,

2 die vorgeschriebene Instruktionsreihenfolge eines Pixel-Shader-Programms. 2 the prescribed instruction order of a pixel shader program.

Zum besseren Verständnis wird zunächst allgemein die moderne 3D-Visualisierung, auf der auch das erfindungsgemäße Verfahren aufbaut, näher erläutert. Die Punkte, an denen das erfindungsgemäße Verfahren vom den Standardverfahren abweicht, werden ausführlich erläutert.To the better understanding will be first in general, the modern 3D visualization on which the inventive method builds, closer explained. The points at which the inventive method of the standard method deviates become detailed explained.

Die moderne 3D-Visualisierung basiert auf der Darstellung von Dreiecken (allgemein: Polygone). Alle Körper, die dargestellt werden sollen, werden in Dreiecke zerlegt. Gebogene oder runde Oberflächen werden durch ein Netz von Dreiecken angenähert und durch die verwendeten Beleuchtungsverfahren „rund gemacht". Eine darzustellende Szene wird daher durch relativ wenige Elemente beschrieben:

  • – Eine Menge von 3D-Koordinaten: Sie beschreiben alle Eckpunkte (Vertices) der verwendeten Dreiecke.
  • – Koordinaten-Systeme: Sie beschreiben den Zusammenhang von Mengen von 3D-Koordinaten. Jedes bewegliche darzustellende Objekt verwendet sein eigenes lokales Koordinatensystem. Dieses wird mittels einer Transformationsvorschrift in das Welt-Koordinatensystem eingebracht. Dieser Vorgang ist rekursiv, so dass ein bewegliches Objekt bewegliche Teile haben kann.
  • – Dreiecks-Listen: Eine Beschreibung, welche 3D-Koordinaten zu einem Dreieck zusammengefasst werden.
  • – Oberflächen-Beschreibungen: Jedes Dreieck bildet eine Fläche im Raum. Die Oberfläche wird beschrieben durch Farbeigenschaften, Beleuchtungseigenschaften und Texturierungseigenschaften. Für die Beleuchtungseigenschaften kann die Angabe von Normalen-Vektoren in den Eckpunkten der Dreiecke notwendig sein. Diese können nicht nur relativ zur Fläche des Dreiecks ausgerichtet sein, sondern auch relativ zur durch das Dreieck nachgebildeten gebogenen Oberfläche. Damit lässt sich über die Fläche des Dreiecks die Beleuchtung der gebogenen Fläche berechnen und so den Eindruck der Krümmung vermitteln. Alle verwendeten Informationen bezüglich der Oberflächen-Beschreibung werden in den Eckpunkten des Dreiecks abgelegt. Es ist nicht möglich, einem beliebigen Punkt innerhalb des Dreiecks eine individuelle Beschreibung zuzuordnen.
  • – Umweltparameter: Lichtquellen, Nebel etc.
The modern 3D visualization is based on the representation of triangles (generally: polygons). All bodies that are to be represented are split into triangles. Curved or circular surfaces are approximated by a mesh of triangles and "rounded" by the lighting techniques used, so a scene to be displayed is described by relatively few elements:
  • - A set of 3D coordinates: They describe all the vertices of the triangles used.
  • - Coordinate systems: They describe the relationship between sets of 3D coordinates. Each moving object to be displayed uses its own local coordinate system. This is introduced by means of a transformation rule in the world coordinate system. This process is recursive, so that a moving object can have moving parts.
  • - Triangle Lists: A description of which 3D coordinates are combined into a triangle.
  • - Surface Descriptions: Each triangle forms one surface in space. The surface is described by color properties, lighting properties and texturing properties. For the lighting properties, the specification of normal vectors in the vertices of the triangles may be necessary. These may be aligned not only relative to the surface of the triangle, but also relative to the curved surface simulated by the triangle. Thus, the illumination of the curved surface can be calculated over the area of the triangle and thus convey the impression of curvature. All information related to the surface description is stored in the vertices of the triangle. It is not possible to assign an individual description to any point within the triangle.
  • - Environmental parameters: light sources, fog etc.

Eine so beschriebene Szene wird von der Grafikhardware in mehreren Schritten verarbeitet. Zuerst werden alle Koordinaten transformiert, so dass deren Positionen relativ zur aktuellen Kamera bekannt sind. Da der Bildschirm nur zweidimensional ist, müssen die Koordinaten anschließend auf den sichtbaren zweidimensionalen Bereich projiziert werden. In der Regel verwendet man hierzu eine Zentralprojektion, da sie dem natürlichen Sehverhalten des Menschen entspricht. In einem weiteren Schritt werden die resultierenden zweidimensionalen Abbilder der Dreiecke so „zurechtgeschnitten", dass sie auf den Bildschirm passen, d.h. nicht über die Ränder hinausragen. Anschließend werden die noch sichtbaren Dreiecke gezeichnet. Beim Zeichnen der Dreiecke stellt sich das Problem ein, dass sich diese teilweise überdecken. Steht z.B. ein Haus in einer Landschaft, so ist auch die Landschaft hinter dem Haus vorhanden, im resultierenden Bild muss das Haus aber vor diesen Landschaftsbereichen dargestellt werden. Es ist sehr aufwändig bzw. sogar unmöglich, die Dreiecke ihrer Entfernung zum Betrachter nach zu sortieren, um sie anschließend von hinten nach vorne zu zeichnen. Stattdessen verwenden fast alle modernen Grafiksysteme einen so genannten Z-Buffer bzw. Tiefenspeicher. Jedem Bildpunkt auf dem Bildschirm wird ein Tiefenwert im Z-Buffer zugeordnet. Alle Dreiecke werden einfach berechnet und der Tiefenwert für jeden berechneten Bildpunkt wird mit dem für diesen Bildpunkt bereits vorhandenen Wert verglichen. Ist der Wert kleiner, so ist der berechnete Bildpunkt näher am Betrachter, als der an dieser Stelle zuvor berechnete Bildpunkt und wird daher inkl. Tiefenwert gespeichert. Auf diese Weise kann sehr leicht die Überdeckung der Dreiecke berechnet werden. Allerdings führt dies meistens auch zu großen Bildteilen, die mehrfach gezeichnet werden. Um ein Dreieck zeichnen zu können, wird dieses „gerastert", d.h. dass – ausgehend von den Eckpunkten – das Dreieck in horizontale und vertikale Linien in Bildschirmauflösung zerlegt wird, um die zum Dreieck gehörenden Bildpunkte zu bestimmen. Da sämtliche Informationen bezüglich des Erscheinungsbildes des Dreiecks in den Eckpunkten liegen, müssen diese zwischen den Ecken interpoliert werden. Insbesondere die Tiefeninformation wird nur zwischen den Eckpunkten interpoliert, d.h. dass ein Dreieck immer eine ebene Fläche im Raum ergibt. Bezogen auf die der Erfindung zugrunde liegende Problemstellung der 3D-Darstellung mittels einer zweidimensionalen Textur (Fotographie) und einem Tiefenbild, in der die Tiefeninformationen pixelweise in Farben kodiert sind, bedeutet dies, dass man das Tiefenbild nicht einfach übernehmen kann.Such a scene is processed by the graphics hardware in several steps. First, all coordinates are transformed so that their positions relative to the current camera are known. Since the screen is only two-dimensional, the coordinates must then be projected onto the visible two-dimensional area. As a rule, one uses a central projection for this, since it corresponds to the natural visual behavior of humans. In a second step, the resulting two-dimensional images of the triangles are "cropped" to fit on the screen, ie, do not protrude beyond the edges, and then the visible triangles are drawn, and the problem arises when drawing the triangles If, for example, a house is in a landscape, then the landscape behind the house is present, but in the resulting image the house must be presented in front of these landscape areas.It is very elaborate or even impossible, the triangles of their distance to the viewer Instead, almost all modern graphics systems use what is known as a Z-buffer or depth memory: each pixel on the screen is assigned a depth value in the Z-buffer, and all triangles are easily calculated the depth value for each calculated pixel is compared to the one for the sen pixel already existing value compared. If the value is smaller, the calculated pixel is closer to the viewer than the previously calculated pixel and is therefore stored including the depth value. In this way, the coverage of the triangles can be calculated very easily. However, this usually also leads to large image parts that are drawn several times. In order to be able to draw a triangle, it is "rasterized", ie, starting from the vertices, the triangle is split into horizontal and vertical lines in screen resolution in order to determine the pixels belonging to the triangle In particular, the depth information is only interpolated between the vertices, ie that a triangle always yields a flat surface in space, based on the problem underlying the invention of the 3D representation by means of a two-dimensional Texture (photography) and a depth image, in which the depth information is coded pixel by pixel in colors, this means that you have the depth image not easy to take over.

In den letzten Jahren haben sich zwei große Standards zur 3D-Visualisierung durchgesetzt: OpenGL und DirectX. Beide arbeiten auf sehr ähnliche Weise und unterscheiden sich in erster Linie auf die unterstützen Hardware-Plattformen, die Treiberunterstützung durch die Hersteller der Grafikkarten und die Art der Ansteuerung.In In recent years, two major standards have become 3D visualization enforced: OpenGL and DirectX. Both work on very similar Way and differ primarily on the supported hardware platforms, the driver support by the manufacturers of graphics cards and the type of control.

Im Folgenden wird die Arbeitsweise von DirectX beschrieben. Die Verarbeitung der Grafikdaten, d.h. der 3D-Koordinaten, Dreiecks-Listen, Oberflächenbeschreibungen etc., erfolgt in der so genannten Rendering-Pipeline. In DirectX 8.1 unterteilt sie sich in drei Hauptbereiche, die jeweils in verschiedene Teilbereiche untergliedert sind. Diese werden von der Grafikhardware parallel in Form einer Pipeline verarbeitet, d.h. dass verschiedene Bereiche der Grafikhardware gleichzeitig an unterschiedlichen Aufgaben arbeiten, um eine möglichst gute Gesamtperformance zu erreichen. In 1 sind die drei Hauptbereiche vereinfacht dargestellt und die für die Erfindung besonders relevanten Teilbereiche markiert. Die dargestellte Reihenfolge der Teilbe reiche kann je nach Hardware-Implementierung von DirectX durchaus von der letztendlich verwendeten Reihenfolge abweichen.The following describes how DirectX works. The processing of the graphic data, ie the 3D coordinates, triangular lists, surface descriptions, etc., takes place in the so-called rendering pipeline. In DirectX 8.1, it is divided into three main sections, each of which is divided into different sections. These are processed in parallel by the graphics hardware in the form of a pipeline, ie that different areas of the graphics hardware simultaneously work on different tasks in order to achieve the best possible overall performance. In 1 the three main areas are shown in simplified form and the subareas particularly relevant to the invention are marked. Depending on the hardware implementation of DirectX, the sequence of subsections shown may well differ from the sequence ultimately used.

Geometrie-PipelineGeometry pipeline

Die Geometry Pipeline ist auf allen modernen Grafikkarten vorhanden. Oft wird sie auch als „T&L"-Einheit (Transform & Lightning) bezeichnet. Als Eingabedaten erhält diese Pipeline-Stufe die untransformierten 3D-Koordinaten (Vertices) und Beleuchtungsparameter einer Szene. Daraus generiert sie die Position und Beleuchtung dieser Koordinaten auf dem Bildschirm aus Sicht der verwendeten Kamera.The Geometry Pipeline is present on all modern graphics cards. It is often referred to as the "T & L" unit (Transform & Lightning). Received as input data this pipeline stage the untransformed 3D coordinates (vertices) and lighting parameters of a scene. From this she generates the Position and illumination of these coordinates on the screen View of the camera used.

In der neusten Version von DirectX werden so genannte Vertex Shader eingesetzt. Dies sind kleine Programme in einem speziellen Assembler-Dialekt (Vertex Shader-Assembler), die auf jede 3D-Koordinate angewendet werden. Der Befehlssatz der Assembler-Sprache umfasst Befehle zur Koordinatentransformation, Beleuchtungsberechnungen und einige andere für 3D-Koordinaten nützliche Dinge.In The latest version of DirectX will be called vertex shaders used. These are small programs in a special assembler dialect (Vertex shader assembler), which are applied to every 3D coordinate. The instruction set of Assembler language includes commands for coordinate transformation, illumination calculations and some others for 3D coordinates useful Things.

Das Ergebnis der Geometry Pipeline sind die transformierten und beleuchteten Koordinaten bzw. Vertices inkl. der zu den Vertices korrespondierenden Texturierungsinformationen, aus denen die Polygone erzeugt werden.The The result of the Geometry Pipeline are the transformed and illuminated ones Coordinates or vertices incl. The corresponding to the vertices Texturing information from which the polygons are generated.

Pixel and Texture BlendingPixel and Texture blending

Das Ergebnis der Geometry Pipeline sind die transformierten und beleuchteten Koordinaten bzw. Vertices inkl. der zu den Vertices korrespondierenden Texturierungsinformationen, aus denen die Polygone erzeugt werden. Mit diesen Informationen werden die darzustellenden Polygone gerastert. Dieser Prozess erfolgt in mehreren Schritten. Im ersten Schritt werden die Eckpunkte (Vertices) des Polygons mit allen korrespondierenden Daten entlang der Verbindungskanten der Eckpunkte interpoliert, so dass für jede darzustellende Zeile ein Paar von Kanteninformationen entsteht – die Zustandsdaten am Beginn einer Zeile und die Zustandsdaten am Ende einer Zeile. Zu diesen Zustandsdaten gehören Informationen über die Entfernung vom Betrachter, Texturierungsinformationen und die Raumkoordinate des entsprechenden Punktes auf der Kante des Polygons. Im zweiten Schritt wird jede darzu stellende Zeile zwischen dem Paar von Kanteninformationen berechnet. Hierzu werden die Kanteninformationen entlang der Zeile interpoliert. Dieser Prozess korrespondiert zu der Interpolation entlang der Kanten. Hierbei entstehen die Informationen zur Berechnung jedes darzustellenden Punktes im Inneren des Polygons. Der letzte Schritt ist die Berechnung der für die Darstellung eines Punktes benötigten Informationen. Hierzu zählen die Farbinformationen des Punktes, dessen Alphawert und die Entfernung zum Betrachter.The The result of the Geometry Pipeline are the transformed and illuminated ones Coordinates or vertices incl. The corresponding to the vertices Texturing information from which the polygons are generated. With this information, the polygons to be displayed are rasterized. This process is done in several steps. In the first step become the vertices of the polygon with all the corresponding ones Interpolate data along the joint edges of the vertices, so for every line to be rendered creates a pair of edge information - the state data at the beginning of a line and the status data at the end of a line. These state data include information about the distance from the viewer, texturing information and the Space coordinate of the corresponding point on the edge of the polygon. In the second step, each line to be displayed is between the pair calculated from edge information. For this purpose, the edge information interpolated along the line. This process corresponds to the interpolation along the edges. This creates the information to calculate each point to be displayed inside the polygon. The last step is the calculation of the representation of a point required Information. Which includes the color information of the point, its alpha value and the distance to the viewer.

Mit DirectX Version 8 werden für diese Schritte die bereits erwähnten Pixel Shader eingesetzt. Ähnlich wie bei den Vertex Shadern kommen hier kleine in Pixel Shader-Assembler geschriebene Programme zum Einsatz, die in erster Linie die Berechnung des Farbwertes und des Alphawertes eines Punktes beschreiben. Mit Pixel Shadern ist es möglich, komplexe Berechnungen und Verknüpfungen von Texturen zu realisieren. Insbesondere können so realistisch wirkende Beleuchtungseffekte erzielt werden.With DirectX version 8 will be for these steps already mentioned Pixel shaders used. Similar to in the vertex shaders come here small written in pixel shader assembler Programs are used, primarily the calculation of the color value and the alpha value of a point. With pixel shaders Is it possible, complex calculations and joins to realize textures. In particular, can be so realistic Lighting effects are achieved.

Rasterizationrasterization

In der letzten Stufe der Rendering-Pipeline werden die berechneten Informationen für einen Bildpunkt in die dafür vorgesehen Speicherbereiche geschrieben. Bevor dies geschieht, können einige Tests erfolgen, um zu bestimmten, ob die berechneten Informationen überhaupt in das endgültige Bild gelangen sollen. Die Tests können von der Applikation jederzeit einzeln aktiviert bzw. deaktiviert werden.In the final stage of the rendering pipeline, the calculated information for a pixel is written to the designated memory areas. Before this happens, some tests can be done to determine whether the calculated information should even get into the final picture. The tests can be activated or deactivated individually by the application at any time.

Es werden drei Arten von Tests unterschieden:

  • • Alpha-Test: Sofern der Alpha-Test aktiviert ist, wird der Alphawert des Punktes mit einem Referenzwert verglichen. Ist die Bedingung des Vergleiches erfüllt, so gilt der Test als Bestanden. Andernfalls wird der Punkt nicht dargestellt und verworfen. Dieser Test wird häufig verwendet, um Punkte die sehr bzw. vollständig durchsichtig sind, möglichst frühzeitig von der Darstellung und weiteren Tests bzw. Berechnungen auszuschließen.
  • • Stencil-Test: Der Stencil-Test dient dem Maskieren von Bildschirmbereichen. Ist dieser Test aktiviert, wird überprüft, ob die Zielposition des Punktes in der resultierenden Grafik gültig ist. Es wird ein der Zielposition korrespondierender Wert aus dem so genannten Stencil-Buffer mit einem Referenzwert mittels eines Operators verglichen. Ist die Bedingung erfüllt, kann der Punkt dargestellt werden, andernfalls wird er verworfen.
  • • Depth-Test: Der abschließende Test überprüft, ob der darzustellende Punkt weiter vom Betrachter entfernt ist, als ein an der entsprechenden Position bereits dargestellter Punkt. Ist dies der Fall, wird der Punkt verworfen und nicht dargestellt. Mittels dieses Tests wird die Überdeckung von Bildbereichen bestimmt. Die Tiefeninformationen für diesen Test werden im Z-Buffer gespeichert.
There are three types of tests:
  • • Alpha Test: If the alpha test is enabled, the alpha value of the point is compared to a reference value. If the condition of the comparison is fulfilled, then the test is passed. Otherwise the point will not be displayed and discarded. This test is often used to exclude points that are very or completely transparent, as early as possible from the presentation and further tests or calculations.
  • • Stencil test: The stencil test is used to mask screen areas. If this test is activated, it is checked whether the target position of the point in the resulting graphic is valid. A value corresponding to the target position from the stencil buffer is compared with a reference value by means of an operator. If the condition is met, the point can be displayed, otherwise it is discarded.
  • • Depth Test: The final test verifies that the point to be displayed is farther from the viewer than a point already shown at the corresponding position. If this is the case, the point is rejected and not shown. This test determines the coverage of image areas. The depth information for this test is stored in the Z-buffer.

Sind alle aktivierten Tests erfolgreich bestanden, kann der Punkt dargestellt werden. Die Farbinformationen des Punktes werden in den Framebuffer geschrieben. Die Tiefeninformation des Punktes wird in den Z-Buffer geschrieben und der Alphawert wird nicht weiter benötigt und verworfen.are all activated tests passed successfully, the point can be displayed become. The color information of the dot is put into the frame buffer written. The depth information of the point is put in the Z-buffer written and the alpha value is no longer needed and discarded.

Wie vorhergehend beschrieben, muss in der Standard-Rendering-Pipeline die Generierung der Tiefeninformationen über die Polygone erfolgen. Um jedem Bildpunkt individuell einen bestimmten Tiefenwert zuzuordnen, müsste man für jeden Bildpunkt ein eigenes Polygon definieren. Bei einer Auflösung von 768 × 768 = 589.824 Bildpunkten müssten so mindestens 35.389.440 Polygone pro Sekunde dargestellt werden, um die zugrunde liegende Aufgabe (Animationsrate von 60Hz) zu erreichen. In Anbetracht der Tatsache, dass für die Berechnung dieser Polygone auch deren Basisdaten, d.h. Positionsinformationen der Ecken und Texturierung benötigt werden, ist keine heute verfügbare Grafikkarte in der Lage die Tiefeninformationen für das 2D-Foto auf dieser Basis darzustellen.As previously described, must be in the standard rendering pipeline the generation of the depth information about the polygons is done. To assign a specific depth value to each pixel individually, should one for one define each pixel its own polygon. At a resolution of 768 × 768 = 589,824 pixels would have so at least 35,389,440 polygons per second are displayed to achieve the underlying task (animation rate of 60Hz). In view of the fact that for the calculation of these polygons also their basic data, i. Position information of the corners and Texturing needed is not available today Graphics card capable of the depth information for the 2D photo represent this base.

Um nicht für jeden Bildpunkt ein Polygon zu verwenden, wurde das erfindungsgemäße Verfahren zur Übertragung der Tiefeninformationen in den Tiefenspeicher entwikkelt. Es realisiert hinsichtlich der Gewinnung der Tiefeninformation eine alternative Rendering-Pipeline, die sich vorteilhaft auf Pixel-Shader stützt, die auf eine kodierte Tiefentextur des darzustellenden 3D-Panoramabilds zugreifen. Die aus der polygonalen Berechnung erhaltenen Tiefeninformation werden dabei überschrieben.Around not for To use each pixel a polygon, was the method of the invention for transmission the depth information into the depth memory develops. It realized in terms of gaining the depth information an alternative Rendering pipeline, which relies favorably on pixel shaders, the to a coded depth texture of the 3D panorama image to be displayed access. The depth information obtained from the polygonal calculation will be overwritten.

Der Pixel Shader-Assembler ist eine Programmiersprache, die auf die Bedürfnisse der Textur- und Beleuchtungsberechnungen in einer Rendering-Pipeline zugeschnitten ist. Die Programme werden DirectX in textueller Form als ASCII-Text übergeben und dort in den Binärcode des Grafikprozessors übersetzt. Der erzeugte Binärcode kann anschließend unter Verwendung eines diesem Binärcode zugeordneten Identifikators verwendet werden.Of the Pixel Shader Assembler is a programming language that is based on the needs texture and lighting calculations in a rendering pipeline is tailored. The programs become DirectX in textual form passed as ASCII text and there in the binary code of the graphics processor. The generated binary code can subsequently using an identifier associated with this binary code be used.

Die Pixel Shader-Assembler-Sprache besteht aus einem Satz von Instruktionen, die auf Punktdaten operieren, die in Registern gehalten werden. Jede Operation besteht aus einer Instruktion und einem oder mehreren Operanden. Die Instruktionen verwenden Register, um Daten mit der ALU (arithmetic logic unit) zu verarbeiten, und um temporäre Ergebnisse zwischen zu speichern. Die gesamte Verarbeitung erfolgt auf dem Grafikchip der Grafikkarte in einem speziell hierauf optimierten Prozessorbereich. Die Ausführung von Pixel Shader-Programmen erfolgt daher sehr performant. Die Länge eines Pixel Shader-Programmes ist jedoch streng limitiert, um die für einen Punkt aufzuwendende maximale Verarbeitungszeit zu begrenzen. Bei Pixel Shader-Programmen der Version 1.3 sind z.B. nur max. 12 Instruktionen erlaubt.The Pixel Shader Assembler language consists of a set of instructions, which operate on dot data kept in registers. Each operation consists of an instruction and one or more Operands. The instructions use registers to store data with the ALU (arithmetic logic unit) to process, and to temporary results to save between. All processing is done on the graphics chip the graphics card in a specially optimized processor area. Execution Pixel shader programs are therefore very performant. The length of a Pixel shader program, however, is strictly limited to one for one Limit the maximum processing time to be expended. at Version 1.3 pixel shader programs are e.g. only max. 12 instructions allowed.

Die Technik der Pixel Shader ist noch sehr jung und erfährt eine schnelle Entwicklung. Unter DirectX 8.1 hat dies bereits zu fünf verschiedenen Versionen geführt: 1.0, 1.1, 1.2, 1.3 und 1.4. Die Versionen 1.0 bis 1.3 bauen aufeinander auf und verwenden eine sehr ähnliche Architektur. Version 1.4 basiert auf einer neuen Architektur, die auch die Basis für die kommende Version 2.0 stellen soll.The Technique of pixel shaders is still very young and learns one fast development. Under DirectX 8.1, this already has five different ones Versions led: 1.0, 1.1, 1.2, 1.3 and 1.4. Versions 1.0 to 1.3 build on each other up and use a very similar one Architecture. Version 1.4 is based on a new architecture, the also the basis for to make the upcoming version 2.0.

Das gemäß der Erfindung entwickelte Pixel Shader-Programm basiert auf einer „Zweckentfremdung" eines Befehls zur Simulation „rauher" Oberflächen mittels „Z-Correct Bump Mapping". Es handelt sich hierbei um ein Verfahren, bei dem – ähnlich wie eine Textur mit Bildinformationen – eine Art „Ablenkungstextur" auf das Polygon aufgebracht wird.The pixel shader program developed according to the invention is based on a "misappropriation" of a command for simulating "rough" surfaces by means of "Z-correct bump mapping" a method in which - similar to a texture with image information - a kind of "deflection texture" is applied to the polygon.

Die grundlegende Idee der Erfindung liegt nun darin, die speziell für „Z-Correct Bump Mapping" entwickelten und an sich bekannten Pixel-Shader-Befehle für die schnelle Übertragung von Tiefeninformationen für das darzustellende Landschaftsbild zu verwenden. Dies gelingt durch geeignete Wahl der Eingabedaten und einem geeigneten Datenformat für die verwendeten Texturen, wie im Folgenden am Beispiel eines nVidia-Grafikchips unter der Pixel-Shader Version 1.3 näher erläutert wird.The basic idea of the invention is now that specifically for "Z-Correct Bump mapping "developed and per se known pixel shader commands for fast transfer of depth information for that to be displayed landscape image. This succeeds by appropriate choice of input data and a suitable data format for the textures used, as shown below using the example of an nVidia graphics chip Under the pixel shader version 1.3 is explained in more detail.

In 2 ist die vorgeschriebene Instruktionsreihenfolge eines Pixel Shader-Programmes der Version 1.3 dargestellt. Jedes Programm hat sich an diese Vorgabe zu halten und erzeugt aus den Eingaben in den Eingaberegistern durch Ausführung der Instruktionen mit Hilfe von temporären Registern Ausgaben in den Ausgaberegistern.In 2 is the prescribed instruction order of a Version 1.3 pixel shader program. Each program must adhere to this specification and generates output from the inputs in the input registers by executing the instructions using temporary registers in the output registers.

Die Eingaberegister sind im Einzelnen:

  • • cn: Konstanten-Register. Es stehen min. 8 Konstanten-Register (c0-c7) zur Verfügung. Sie können vom Pixel Shader nicht verändert werden und müssen von der Applikation vor Anwendung des Pixel Shaders gesetzt werden. Jedes Register kann vier Festkommawerte mit Wertebereich [–1,1] enthalten.
  • • tn: Textur-Register. Es stehen min. 4 Textur-Register (t0-t3) zur Verfügung. Jedes Register besteht aus vier Festkommawerten (r, g, b, a bzw. u, v, w, q oder x, y, z, w geschrieben als tn.rgba bzw. tn.uvwq oder tn.xyzw) mit einem minimalen Wertebereich von jeweils [–1,1]. Jedes Textur-Register korrespondiert zu einer so genannten Texture-Stage. Jede Texture-Stage umfasst die Beschreibung einer verwendeten Textur und der für die Verwendung benötigten Attribute. Ein Textur-Register beinhaltet zunächst Textur-Koordinaten, die vom System automatisch interpoliert werden. Möchte man den korrespondierenden Farbwert der Textur haben, so muss man die entsprechende Textur „sampeln". Dies geschieht unter Berücksichtigung der Attribute der entsprechenden Texture-Stage.
  • • vn: Farbregister. Es stehen min. 2 Farbregister (v0-v1) zur Verfügung. Sie werden automatisch mit interpolierten Werten im Bereich [0,1] gefüllt und sind für unsere Betrachtung nicht weiter von Interesse.
The input registers are in detail:
  • • c n : constants register. There are min. 8 constant registers (c 0 -c 7 ) are available. They can not be changed by the Pixel Shader and must be set by the application before using the Pixel Shaders. Each register can contain four fixed-point values with value range [-1,1].
  • • t n : texture register. There are min. 4 texture registers (t 0 -t 3 ) available. Each register consists of four fixed-point values (r, g, b, a or u, v, w, q or x, y, z, w written as t n .rgba and t n .uvwq or t n .xyzw) a minimum value range of [-1,1]. Each texture register corresponds to a so-called texture stage. Each texture stage includes the description of a used texture and the attributes needed for its use. A texture register initially contains texture coordinates that are automatically interpolated by the system. If you want to have the corresponding color value of the texture, then you have to "sample" the corresponding texture, taking into account the attributes of the corresponding texture stage.
  • • v n : color register. There are min. 2 color registers (v 0 -v 1 ) available. They are automatically filled with interpolated values in the range [0,1] and are no longer of interest for our consideration.

Für die Verarbeitung der Instruktionen stehen zwei temporäre Register r0 und r1 mit einem minimalen Wertebereich von [–1,1] zur Verfügung. Als Ausgaberegister des Pixel Shader-Programms wird das temporäre Register r0 verwendet. Die vier darin enthaltenen Festkommawerte werden als RGBA-Farbwerte mit einem Wertebereich von [0,1] interpretiert.Two temporary registers r 0 and r 1 with a minimum value range of [-1,1] are available for the processing of the instructions. As the output register of the pixel shader program, the temporary register r 0 is used. The four fixed-point values contained therein are interpreted as RGBA color values with a value range of [0,1].

Das gemäß der Erfindung entwickelte Pixel Shader-Programm hat nachfolgende Gestalt. Dabei übernimmt dieses Programm in der hier gewählten Ausführung neben der Übertragung der Tiefenwerte zusätzlich auch die Darstellung des Landschaftsbildes. Andere und auch einfachere Ausführungen dieses Programms sind möglich. Insbesondere können andere Register verwendet werden. (1) ps.1.3 (2) tex t0 (3) tex t1 (4) texm3x2pad t2, t0 (5) texm3x2detph t3, t0 (6) mov r0, t1 The pixel shader program developed according to the invention has the following form. In addition to the transmission of the depth values, this program also adopts the representation of the landscape image in the version chosen here. Other and simpler versions of this program are possible. In particular, other registers may be used. (1) ps.1.3 (2) tex t0 (3) tex t1 (4) texm3x2pad t2, t0 (5) texm3x2detph t3, t0 (6) mov r0, t1

Der Befehl (1) gibt die Version des Pixel Shader-Programms (hier 1.3) an. Wie in der 2 zu sehen ist, muss dies immer der erste Befehl eines Pixel Shader-Programms sein. Die nächsten beiden Befehle dienen dazu, die Texturen zu „sampeln". Jede Textur, die in einem Pixel Shader-Programm verwendet wird, wird durch ein Textur-Register tn repräsentiert. Der Index n ist dabei zugleich die Nummer der Texture-Stage, die zu diesem Register korrespondiert.The command (1) indicates the version of the pixel shader program (here 1.3). Like in the 2 As you can see, this must always be the first command of a pixel shader program. The next two commands are used to the texture to "resample". Which is used in a pixel shader program Every texture, is a texture register n t represents. The index is n while at the same time the number of texture Stage, which corresponds to this register.

Zunächst enthält das Textur-Register die Textur-Koordinaten im Textur-System in tn.uvwq. Das Tripel (u,v,w) beschreibt dabei die Koordinate in einer dreidimensionalen Volumentextur. Eine normale zweidimensionale Textur verwendet als Koordina ten nur (u,v). Durch das Sampeln der Textur wird die Farbinformation und der Alphawert zu der entsprechenden Textur-Koordinate erzeugt und in tn.rgba gespeichert. Hierbei werden die Textur-Koordinaten überschrieben, da tn.uvwq und tn.rgba den gleichen Speicherbereich verwenden.First, the texture register contains the texture coordinates in the texture system in t n .uvwq. The triple (u, v, w) describes the coordinate in a three-dimensional volume texture. A normal two-dimensional texture uses as coordinates only (u, v). By sampling the texture, the color information and the alpha value are generated to the corresponding texture coordinate and stored in t n .rgba. This overwrites the texture coordinates because t n .uvwq and t n .rgba use the same memory area.

Mit dem Befehl (2) wird somit die Textur der Texture-Stage 0 in das Register t0 gesampelt und mit Befehl (3) die Textur der Texture-Stage 1 in das Register t1. In den beiden Registern stehen anschließend die Farbinformationen der beiden Texturen für diesen Punkt. Wie in der 2 zu sehen ist, bedingt die Abarbeitungsreihenfolge von Pixel Shader-Programmen, dass alle zu sampelnden Texturen vor der ersten arithmetischen Operation gesampelt werden müssen.With the instruction (2), the texture of the texture stage 0 is thus sampled in the register t 0 and with command (3) the texture of the texture stage 1 in the register t 1 . In the two registers are then the Far binations of the two textures for this point. Like in the 2 As can be seen, the processing order of pixel shader programs requires that all textures to be sampled be sampled before the first arithmetic operation.

Wesentlich für die Erfindung ist, dass eine der bei diesem Pixel Shader-Programm verwendeten Texturen Informationen (dies müssen nicht notwendigerweise Farbinformationen sein; Es existieren auch andere Texturformate, die für diese Aufgabe geeignet sind wie z.B. HILO-Texturen) enthält, die als Tiefentextur (in Register t0) genutzt wird. Eine andere enthält Informationen, die als Bildinformation (in Register t1) genutzt wird.It is essential for the invention that one of the textures used in this pixel shader program contains information (this does not necessarily have to be color information, other texture formats which are suitable for this task, such as HILO textures), which are used as deep texture ( in register t 0 ) is used. Another contains information that is used as image information (in register t 1 ).

Mit den Befehlen (4) und (5) wird der neue Tiefenwert für den aktuellen Punkt auf Basis der Tiefentextur berechnet. Der Befehl (5) kann nur in Kombination mit Befehl (4) verwendet werden und hat folgende Wirkung:

  • • texm3x2pad tm, tn Es wird das Skalarprodukt von tm und tn gebildet und in einem internen Register z gespeichert. Für die beiden Indizes m und n muss die Bedingung m > n erfüllt sein.
  • • texm3x2depth tm+1, tn Es wird das Skalarprodukt von tm+1, und tn gebildet und in einem internen Register w gespeichert. Anschließend wird der neue Tiefenwert für den aktuell berechne ten Punkt auf z/w gesetzt, falls w ≠ 0. Andernfalls wird der neue Tiefenwert auf 1 gesetzt.
Instructions (4) and (5) compute the new depth value for the current point based on depth texture. The command (5) can only be used in combination with command (4) and has the following effect:
  • • texm3x2pad t m , t n The scalar product of t m and t n is formed and stored in an internal register z. For the two indices m and n the condition m> n must be fulfilled.
  • • texm3x2depth t m + 1 , t n The scalar product of t m + 1 , and t n is formed and stored in an internal register w. Then, the new depth value for the currently calculated point is set to z / w if w ≠ 0. Otherwise, the new depth value is set to 1.

Es findet also folgende Operation statt: z = t2.uvw·t0.rgb = t2.u·t0.r + t2.v·t0.g + t2.w·t0.b (1) w = t3.uvw·t0.rgb = t3.u·t0.r + t3.v·t0.g + t3.w·t0.b (2)

Figure 00160001
So the following operation takes place: z = t 2 .uvw * t 0 .rgb = t 2 .u * t 0 .r + t 2 .v * t 0 .g + t 2 .w * t 0 .b (1) w = t 3 .uvw * t 0 .rgb = t 3 .u * t 0 .r + t 3 .v * t 0 .g + t 3 .w * t 0 .b (2)
Figure 00160001

Um jedem Punkt im dargestellten Bild einen bestimmten Tiefenwert zuzuordnen, muss also der Quotient z/w den gewünschten Tiefenwert ergeben. Um einen möglichst einfachen Zusammenhang zwischen dem Quotienten z/w und den Werten der Tiefentextur z/w zu erhalten, und zu erreichen, dass z/w nicht von den Werten der Textur-Register t2 und t3 abhängt, werden die Werte der Textur-Register t0, t2 und t3 folgendermaßen gewählt:

  • • t0.rgba: r und g ergeben den Quotienten; b = 0; a ist beliebig
  • • t2.uvwq: u = x; v = 0; w = 0; q ist beliebig
  • • t3.uvwq: u = 0; v = x; w = 0; q ist beliebig
In order to assign a specific depth value to each point in the displayed image, the quotient z / w must therefore give the desired depth value. In order to obtain as simple a relationship as possible between the quotient z / w and the values of the deep texture z / w and to ensure that z / w does not depend on the values of the texture registers t 2 and t 3 , the values of the texture become Registers t 0 , t 2 and t 3 are selected as follows:
  • • t 0 .rgba: r and g give the quotient; b = 0; a is arbitrary
  • • t 2 .uvwq: u = x; v = 0; w = 0; q is arbitrary
  • • t 3 .uvwq: u = 0; v = x; w = 0; q is arbitrary

Dies führt bei obiger Berechnung zu folgendem: z = t2.uvw·t0.rgb = x·t0.r + 0·t0.g + 0·0 = x·t0.r (4) w = t3.uvw·t0.rgb = 0·t0.r + x·t0.g + 0·0 = x·t0.g (5)

Figure 00160002
This leads to the following calculation: z = t 2 .uvw * t 0 .rgb = x · t 0 .r + 0 · t 0 .g + 0 · 0 = x · t 0 (4) w = t 3 .uvw * t 0 .rgb = 0 · t 0 .r + x · t 0 .g + 0 · 0 = x · t 0 .g (5)
Figure 00160002

Der Wert vom gewählten x muss im Bereich (0,1) liegen, da 0 zu keinem zulässigen Resultat führt und durch die Abbildungsvorschrift von Texturkoordinaten eine 1 auf 0 abgebildet wird.Of the Value of the selected x must be in the range (0,1), because 0 does not lead to an admissible result leads and through the mapping rule of texture coordinates mapped a 1 to 0 becomes.

Der Wert der Tiefeninformation eines Pixels kann somit mittels einer geeigneten Tiefentextur auf Pro-Pixel-Basis generiert werden.Of the Value of the depth information of a pixel can thus by means of a suitable depth texture can be generated on a per-pixel basis.

Mit dem letzten Befehl (6) des Pixel Shader-Programmes wird der Farbwert des darzustellenden Bildes für den aktuellen Punkt in das Ausgaberegister des Pixel Shader-Programmes übertragen. Alternativ könnte man die Erzeugung der Tiefeninformationen und das Darstellen des eigentlichen Bildes in zwei getrennten Schritten vollziehen, jedoch müssten dann vom Grafikprozessor gleichartige Polygone mehrfach verarbeitet werden. Dies kann sich auf die Gesamtperformance negativ auswirken.With the last command (6) of the Pixel Shader program becomes the color value of the picture to be displayed for transfer the current point to the output register of the Pixel Shader program. Alternatively could one the generation of the depth information and the presentation of the perform the actual image in two separate steps, however would then processed by the graphics processor similar polygons multiple times become. This can negatively affect the overall performance.

Nach Durchführung des erläuterten Pixel-Shader-Programms ist die Übertragung der Tiefeninformation für die einzelnen Pixel abgeschlossen. Daran schließen sich die weiteren Verarbeitungsschritte der Standard-Rendering-Pipeline (unter DirectX insbesondere Rasterization) an.To execution of the explained Pixel shader program is the transmission the depth information for completed the individual pixels. This is followed by the further processing steps the standard rendering pipeline (under DirectX especially rasterization) at.

Beim Einsatz einer Grafikkarte mit einem Grafikprozessor von ATI (z.B. Radeon 9700 Pro), werden Pixel Shader der Version 1.3 nicht unterstützt. ATI hat von der Version 1.2 die Version 1.4 abgeleitet, die es ermöglicht, ein zu dem oben beschriebenen Programm datenkompatibles Pixel Shader-Programm zu schreiben.At the Using a graphics card with a graphics processor from ATI (e.g. Radeon 9700 Pro), version 1.3 pixel shaders are not supported. ATI has derived version 1.4 of version 1.2, which makes it possible a data-compatible pixel shader program to the program described above to write.

Unter dieser Version des Pixel-Shaders wird anstatt des Quotienten zweier Skalarprodukte direkt der Quotient

Figure 00170001
erzeugt, so dass der Inhalt der Texturregister i2, i3 ohne Bedeutung ist.Under this version of the pixel shader, instead of the quotient of two scalar products, the quotient becomes direct
Figure 00170001
is generated, so that the content of the texture register i 2 , i 3 is meaningless.

Claims (1)

Verfahren zur Übertragung von Tiefeninformationen in den Tiefenspeicher einer Grafikkarte für die Darstellung von 3D-Panoramabildern, dadurch gekennzeichnet, dass die Übertragung der Tiefeninformationen für jedes Pixel des darzustellenden 3D-Panoramabilds auf dem Grafikchip der Grafikkarte mittels eines auf dem Grafikchip ausgeführten Programms erfolgt, wobei als Eingabedaten für das Programm mindestens eine Textur, die in kodierter Form die Tiefeninformationen des darzustellenden 3D-Panoramabilds enthält, zur Verfügung gestellt werden, wobei die Tiefeninformationen des darzustellenden 3D-Panoramabilds in der mindestens einen Textur derart kodiert sind, dass die Tiefeninformation eines Pixels durch einen Quotienten zweier in der verwendeten Textur vorliegender Werte gebildet wird.A method for transmitting depth information in the depth memory of a graphics card for the display of 3D panoramic images, characterized in that the transmission of the depth information for each pixel of the 3D panoramic image to be displayed on the graphics chip of the graphics card by means of a program executed on the graphics chip, wherein Input data for the program at least one texture that contains in coded form the depth information of the 3D panorama image to be displayed, are provided, wherein the depth information of the 3D panorama image to be displayed in the at least one texture are coded such that the depth information of a pixel by a Quotient of two values present in the texture used.
DE2003131231 2003-07-10 2003-07-10 Method for transferring depth information into the depth memory of a graphics card for displaying 3D panoramic images Expired - Fee Related DE10331231B4 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
DE2003131231 DE10331231B4 (en) 2003-07-10 2003-07-10 Method for transferring depth information into the depth memory of a graphics card for displaying 3D panoramic images

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE2003131231 DE10331231B4 (en) 2003-07-10 2003-07-10 Method for transferring depth information into the depth memory of a graphics card for displaying 3D panoramic images

Publications (2)

Publication Number Publication Date
DE10331231A1 DE10331231A1 (en) 2005-02-17
DE10331231B4 true DE10331231B4 (en) 2005-12-15

Family

ID=34071611

Family Applications (1)

Application Number Title Priority Date Filing Date
DE2003131231 Expired - Fee Related DE10331231B4 (en) 2003-07-10 2003-07-10 Method for transferring depth information into the depth memory of a graphics card for displaying 3D panoramic images

Country Status (1)

Country Link
DE (1) DE10331231B4 (en)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19620858A1 (en) * 1995-06-08 1996-12-12 Hewlett Packard Co Computer graphics system with pixel depth indication
WO1998040848A1 (en) * 1997-02-28 1998-09-17 Sp3D Chip Design Gmbh Method and device for filing 3-d picture data in a frame buffer storage

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19620858A1 (en) * 1995-06-08 1996-12-12 Hewlett Packard Co Computer graphics system with pixel depth indication
WO1998040848A1 (en) * 1997-02-28 1998-09-17 Sp3D Chip Design Gmbh Method and device for filing 3-d picture data in a frame buffer storage

Also Published As

Publication number Publication date
DE10331231A1 (en) 2005-02-17

Similar Documents

Publication Publication Date Title
DE69127915T2 (en) Priority color mapping system and method
DE112007002991B4 (en) Computer graphics shadow volume using hierarchical occlusion culling
DE3650129T2 (en) Edge smoothing method for computer imaging system.
DE60120474T2 (en) GRINDING OF THREE-DIMENSIONAL PICTURES
DE3854543T2 (en) Priority management of a depth data buffer for real-time computer systems for image generation.
DE69130545T2 (en) System for creating a textured perspective view
DE69130132T2 (en) Process for generating addresses for textured graphic primitives stored in RIP maps
DE60311359T2 (en) Apparatus and methods for controllable texture scanning
DE102019103059A1 (en) Cut and stab-proof beam-triangle intersection
DE60000447T2 (en) GRAPHIC SYSTEM THAT PRESENTS PATTERN IN A PATTERN BUFFER AND GENERATES PIXELS ACCORDING TO STORED PATTERNS
DE60000686T2 (en) GRAPHIC SYSTEM WITH SUPER-SCAN SAMPLE BUFFER WITH GENERATION OF OUTPUT PIXELS USING SELECTIVE ADJUSTMENT OF FILTERING FOR ARTIFACT REDUCTION
DE102004007835A1 (en) Device for displaying dynamic complex scenes
DE102017108096A1 (en) SYSTEM, METHOD AND COMPUTER PROGRAM PRODUCT FOR TRANSMITTING TO VARIABLE SCRAP BY MEANS OF PROJECTIVE GEOMETRIC DISTORTION
DE102015113240A1 (en) SYSTEM, METHOD AND COMPUTER PROGRAM PRODUCT FOR SHADING USING A DYNAMIC OBJECT ROOM GATE
DE202012013450U1 (en) Annotation positioning display system for reducing creep during zooming activities
DE102016103854A1 (en) Graphics processing with directional representations of illumination at probe positions within a scene
DE102012210521A1 (en) Uncut time and lens boundaries for improved sample test efficiency in image rendering
EP0789328A2 (en) Picture processing method for displaying reflective objects and device therefor
DE102006025096A1 (en) Method and device for rendering and generating computer-generated video holograms
DE69901572T2 (en) METHOD FOR VOLUMETRIC IMAGE DATA PROCESSING OF AN OBJECT VISUALIZED BY TEXTURE IMAGING
DE102017109472A1 (en) STEREO MULTIPLE PROJECTION IMPLEMENTED BY USING A GRAPHIC PROCESSING PIPELINE
DE102019005885A1 (en) Area map generation and hole filling
EP0862141A2 (en) Image presentation method and apparatus
DE3854619T2 (en) SQUARE INTERPOLATION FOR SHADED IMAGE GENERATION.
DE102019121200A1 (en) MOTION-ADAPTIVE RENDERING BY SHADING WITH A VARIABLE RATE

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8127 New person/name/address of the applicant

Owner name: EADS DEUTSCHLAND GMBH, 85521 OTTOBRUNN, DE

8364 No opposition during term of opposition
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee

Effective date: 20130201