Vorrichtung zur photorealistischen Darstellung von dynamischen komplexen dreidimensionalen Szenen mittels des Ray-Tracing Verfahrens Device for the photorealistic representation of dynamic complex three-dimensional scenes using the ray tracing method
Die Erfindung betrifft eine Vorrichtung, mit der dynamische, komplexe dreidimensionale Szenen mit hohen Bildwiederholraten unter Verwendung einer Echtzeit Ray-Tracing Hardwarearchitektur auf einem zweidimensionalen Display dargestellt werden können. Dynamische Szenen sind Szenen, in denen sich neben der Kameraposition auch die Geometrie der darzustellenden Objekte von Frame zu Frame ändern kann. Die Erfindung zeichnet sich vor allem dadurch aus, dass sie eine Hierarchiestruktur von Objekten unterstützt, das heißt die Hauptszene kann aus mehreren Objekten bestehen, die jeweils aus weiteren Objekten aufgebaut sind, wobei diese Schachtelung beliebig fortgeführt werden kann. Die auf den einzelnen Hierarchieebenen befindlichen Objekte können sowohl einzeln, als auch im Verbund bewegt werden. Hierdurch ist es möglich, komplexe Szenen mit hoher Dynamik zu erstellen und durch Verwendung des gleichen Objektes an mehreren Stellen der Szene die Repräsentation der Szene im Speicher klein zu halten.The invention relates to a device with which dynamic, complex three-dimensional scenes with high refresh rates can be represented on a two-dimensional display using real-time ray tracing hardware architecture. Dynamic scenes are scenes in which, in addition to the camera position, the geometry of the objects to be displayed can change from frame to frame. The invention is characterized above all by the fact that it supports a hierarchy structure of objects, that is to say the main scene can consist of several objects, each of which is composed of further objects, this nesting being able to be continued as desired. The objects located on the individual hierarchy levels can be moved individually as well as in a group. This makes it possible to create complex scenes with high dynamics and to keep the representation of the scene in memory small by using the same object at several points in the scene.
Zur erfindungsgemäßen Realisierung dieser verschachtelten Objektebenen, wird die hardwaremäßige Umsetzung der bekannten Ray-Tracing-Pipeline um eine hardwaremäßig realisierte Transformationseinheit erweitert, welche die Strahlen in die Objekte hinein transformiert. Diese Einheit ist zur optimalen Ausnutzung der Hardwareressourcen nur einmal vorhanden und wird neben der Objektraumtransformation auch zur Berechnung des Schnittpunktes des Strahles mit einem Dreieck, der Erstellung von Primärstrahlen und zur Erstellung von Sekundärstrahlen verwendet.To implement these nested object levels according to the invention, the hardware implementation of the known ray tracing pipeline is expanded by a hardware-implemented transformation unit which transforms the beams into the objects. This unit is only available once for optimal utilization of the hardware resources and is used in addition to the object space transformation also for calculating the point of intersection of the beam with a triangle, for creating primary beams and for creating secondary beams.
Durch die Verwendung von speziellen auf Ray-Tracing ausgelegten Prozessoren gestattet die Erfindung dem Anwender die volle Programmierbarkeit des Systems, indem erfindungsgemäß eine neuartige Prozessorarchitektur, bestehend aus der Kombination eines Standard Prozessorkerns mit einem, oder mehreren speziellen Ray-Tracing Befehlen verwendet wird. Die Verwendung dieser Ray-Tracing Prozessoren erlaubt die Programmierung verschiedenster Ray-Tracing-Verfahren. Primitive Objekte der Szene können programmierbar gestaltet werden, so dass im Gegensatz zu heutigen Grafikkarten auch die Verwendung von Spline Flächen möglich ist, indem ein spezieller
Schnittpunktberechnungsalgorithmus eines Strahles mit der Splinefläche programmiert wird. Wie in heutiger Rasterisierungshardware üblich können verschiedenste Shadingmodelle für Oberflächen programmiert werden.Through the use of special processors designed for ray tracing, the invention allows the user to fully program the system by using a novel processor architecture consisting of the combination of a standard processor core with one or more special ray tracing commands. The use of these ray tracing processors allows the programming of various ray tracing processes. Primitive objects in the scene can be designed to be programmable, so that, in contrast to today's graphics cards, the use of spline surfaces is also possible by using a special one Intersection calculation algorithm of a beam with the spline surface is programmed. As is common in today's rasterization hardware, a wide variety of shading models can be programmed for surfaces.
Zur Ausgabe der Bilddaten auf einem Display kann die Erfindung durch die Verwendung gemeinsamer Frame-Buffer und Z-Buffer mit einer dem Stand der Technik entsprechenden Rasterisierungshardware kombiniert werden.To output the image data on a display, the invention can be combined by using common frame buffers and Z buffers with rasterization hardware corresponding to the prior art.
Stand der TechnikState of the art
Der Stand der Technik bezüglich der Darstellung von dreidimensionalen Szenen ist derzeit in zwei Haupt-Sektoren einzuteilen, das Rasterisierungsverfahren und dasThe prior art regarding the representation of three-dimensional scenes can currently be divided into two main sectors, the rasterization method and the
Ray-Tracing Verfahren (siehe Computer Graphics / Addison-Wesley ISBN 0201848406 ).Ray tracing method (see Computer Graphics / Addison-Wesley ISBN 0201848406).
Das bekannte, vor allem in Computer-Graphikkarten zum Einsatz kommende Rasterisierungsverfahren beruht auf dem Prinzip, jede Geometrie der Szene auf einen Frame-Buffer und Z-Buffer zu projizieren. Hierzu werden die Färb- und Helligkeitswerte der Pixel im Frame-Buffer und die geometrischen Tiefenwerte im Z-Buffer gespeichert, jedoch nur dann, wenn der vorherige geometrische Wert im Z-Buffer größer (weiter vom Betrachter entfernt liegend) als der neue ist. Hierdurch wird sichergestellt, dass nähere Objekte fernere überschreiben und nach Ablauf des Verfahrens nur noch die wirklich sichtbaren Objekte im Frame-Buffer abgebildet sind.The known rasterization method, which is mainly used in computer graphics cards, is based on the principle of projecting every geometry of the scene onto a frame buffer and Z buffer. For this purpose, the color and brightness values of the pixels are saved in the frame buffer and the geometric depth values in the Z buffer, but only if the previous geometric value in the Z buffer is larger (further away from the viewer) than the new one. This ensures that nearer objects overwrite further ones and that only the really visible objects are shown in the frame buffer after the procedure has been completed.
Dieses Verfahren hat jedoch den entscheidenden Nachteil, dass aufwändige Szenen mit Millionen von Objekten mit der bisher bekannten Hardware nicht in Echtzeit dargestellt werden können, da es in der Regel erforderlich ist, alle Dreiecke (Objekte) der Szene zu projizieren. Des weiteren wird ein Frame-Buffer und Z-Buffer benötigt, auf dem viele Milliarden Schreiboperationen in der Sekunde durchgeführt werden müssen, wobei zum Bildaufbau die meisten Pixel mehrfach pro Frame überschrieben werden. Das Überschreiben des zum Betrachter weiter entfernten Pixels durch Pixel näherer Objekte hat zur Folge, dass bereits berechnete Daten verworfen werden, wodurch eine optimale Systemleistung nicht realisiert werden kann.However, this method has the decisive disadvantage that complex scenes with millions of objects cannot be displayed in real time with the hardware known to date, since it is generally necessary to project all triangles (objects) of the scene. In addition, a frame buffer and Z buffer are required, on which many billions of write operations have to be carried out per second, with most pixels being overwritten several times per frame for image construction. The overwriting of the pixel further away from the viewer by pixels of closer objects has the consequence that already calculated data is discarded, as a result of which optimal system performance cannot be realized.
Schatten können mit aufwändigen Techniken auf heutiger Rasterisierungshardware berechnet werden, jedoch ergeben sich bei komplexen Szenen Probleme hinsichtlich der
Genauigkeit. Spiegelungen an gekrümmten Flächen, sowie die Berechnung von Lichtbrechungen sind mit dieser Technik nicht physikalisch korrekt zu realisieren.Shadows can be calculated using today's rasterization hardware using complex techniques, but problems arise regarding complex scenes Accuracy. Reflections on curved surfaces as well as the calculation of light refractions cannot be realized physically correctly with this technology.
Leistungssteigernde Verbesserung schafft ein zweites Verfahren, das Ray-Tracing Verfahren, das durch seine photorealistischen Bilder, aber auch durch die Rechenkomplexität bekannt ist. Die Grundidee von Ray-Tracing steht in nahem Bezug zu physikalischen Lichtverteilungsmodellen (siehe Computer Graphics / Addison-Wesley ISBN 0201848406 ).A second process, the ray tracing process, is an improvement in performance, which is known for its photorealistic images, but also for its computational complexity. The basic idea of ray tracing is closely related to physical light distribution models (see Computer Graphics / Addison-Wesley ISBN 0201848406).
In einer realen Umgebung wird Licht von Lichtquellen emittiert und nach physikalischen Gesetzen in der Szene verteilt. Mit einer Kamera kann das Bild der Umgebung eingefangen werden. Ray-Tracing geht den umgekehrten Weg und verfolgt das Licht von der Kamera, welche die Betrachterposition darstellt, zurück zu ihrer Quelle. Hierzu wird für jedes Pixel des Bildes ein virtueller Strahl in die, das Pixel beleuchtende, Richtung geschossen. Dieses Schießen des Strahles nennt man Ray-Casting. Trifft der Strahl ein Objekt so berechnet sich die Farbe des Pixels unter anderem aus der Farbe des getroffenen Objektes, der Oberflächennormalen und den vom Auftreffpunkt sichtbaren Lichtquellen. Die sichtbaren Lichtquellen sind durch die Verfolgung der Sekundärstrahlen, die von jeder Lichtquelle zu dem Auftreffpunkt geschossen werden, zu ermitteln. Treffen diese Schattenstrahlen ein Objekt zwischen Lichtquelle und Auftreffpunkt, so liegt der Punkt im Schatten bezüglich der Lichtquelle.In a real environment, light is emitted from light sources and distributed in the scene according to physical laws. The image of the surroundings can be captured with a camera. Ray tracing goes the opposite way and traces the light from the camera, which represents the viewer's position, back to its source. For this purpose, a virtual beam is fired in the direction illuminating the pixel for each pixel of the image. This shooting of the beam is called ray casting. If the beam hits an object, the color of the pixel is calculated from the color of the object hit, the surface normal and the light sources visible from the point of impact. The visible light sources are determined by tracking the secondary rays that are fired from each light source to the point of impact. If these shadow rays hit an object between the light source and the point of impact, the point lies in the shadow with respect to the light source.
Dieses Verfahren ermöglicht neben der beschriebenen Schattenberechnung auch noch die Berechnung von Spiegelungen und der Brechungen des Lichtes, indem Reflexionsstrahlen bzw. gebrochene Sekundärstrahlen berechnet werden. Des weiteren können Szenen nahezu beliebiger Größe gehandhabt und dargestellt werden. Der Grund hierfür liegt in der Anwendung einer Beschleunigungsstruktur. Dies ist ein spezielles Verfahren mit entsprechender Datenstruktur, die es ermöglicht, den virtuellen Strahl schnell durch die Szene zu „schießen" bzw. zu traversieren. Auf dem Weg werden einige Objekte selektiert, die mögliche Trefferkandidaten sind, wodurch der Auftreffpunkt schnell gefunden wird. Theoretische Untersuchungen haben ergeben, dass die Komplexität des Ray-Tracing Verfahrens im Mittel logarithmisch mit der Szenengröße wächst. Das heißt, eine Quadrierung der Zahl der Objekte der Szene bedeutet lediglich den doppelten Rechenaufwand.In addition to the shadow calculation described, this method also enables the calculation of reflections and the refractions of the light by calculating reflection rays or refracted secondary rays. Furthermore, scenes of almost any size can be handled and displayed. The reason for this lies in the use of an acceleration structure. This is a special procedure with a corresponding data structure, which makes it possible to "shoot" or traverse the virtual beam quickly through the scene. On the way, some objects are selected that are possible candidate candidates, so that the point of impact is found quickly. Theoretical Studies have shown that the complexity of the ray tracing process grows logarithmically with the size of the scene, which means that squaring the number of objects in the scene means only twice the computing effort.
Typische Beschleunigungsstrukturen sind zum Beispiel das regelmäßige Grid, der k-D Baum, der Octree und die Bounding-Volume-Hierarchy (siehe Computer Graphics / Addison-Wesley ISBN 0201848406). Allen diesen Verfahren liegt die Idee zu Grunde, den
Raum in viele Teilräume aufzuteilen und für jeden solchen Teilraum die dort vorhandene Geometrie zu speichern. Das Traversierungsverfahren verfolgt den Strahl dann von Teilraum zu Teilraum und schneidet diesen immer mit genau den Objekten, die sich in dem Teilraum befinden. Die vier Verfahren unterscheiden sich nur in der Anordnung der Teilräume. Bei dem regelmäßigen Grid ist der Raum in würfelförmige Teilräume gleicher Größe unterteilt. Zur Veranschaulichung wird in diesem Zusammenhang auf die Darstellung der Figur 7 verwiesen. Die drei anderen Verfahren beruhen auf einer rekursiven Unterteilung des Raumes. Beim k-D Baum Verfahren wird der Startraum rekursiv an einer beliebigen Stelle achsenparallel geteilt. Hierzu wird zur Veranschaulichung auf Figur 8 verwiesen. Diese Aufteilung des Raumes wird in einer rekursiven Datenstruktur (einem binären Baum) gespeichert. Das dritte Verfahren namens Octree, ist ebenfalls rekursiv, nur werden die betrachteten Teilräume immer in 8 gleichgroße rechteckige Teilräume unterteilt. Zur Veranschaulichung wird hierzu auf Figur 9 verwiesen. Die Bounding-Volume-Hierarchie unterteilt den Raum in n beliebige Volumina, die sogar überlappen dürfen, was bei den anderen Verfahren nicht erlaubt ist.Typical acceleration structures include the regular grid, the kD tree, the octree and the bounding volume hierarchy (see Computer Graphics / Addison-Wesley ISBN 0201848406). All of these processes are based on the idea that Divide space into many subspaces and save the geometry there for each such subspace. The traversing process then traces the beam from subspace to subspace and always intersects it with exactly the objects that are in the subspace. The four methods differ only in the arrangement of the subspaces. In the regular grid, the room is divided into cubic parts of the same size. In this connection, reference is made to the illustration in FIG. 7 for illustration purposes. The three other methods are based on a recursive division of the space. With the kD tree method, the starting space is recursively divided at any point along the axis. For this purpose, reference is made to FIG. 8 for illustration. This division of space is stored in a recursive data structure (a binary tree). The third method, called Octree, is also recursive, except that the subspaces under consideration are always divided into 8 rectangular subspaces of the same size. Reference is made to FIG. 9 for this purpose. The bounding volume hierarchy divides the space into n arbitrary volumes, which may even overlap, which is not permitted with the other methods.
Im Gegensatz zum Rasterisierungsverfahren existiert momentan keine reine Hardwarelösung, die das Ray-Tracing-Verfahren umsetzt, sondern nur softwarebasierende Systeme, die vergleichsweise viel Rechenleistung und Rechenzeit erfordern. Zur Veranschaulichung des zeitlichen Umfanges der Berechnungen sei bemerkt, dass abhängig von der Komplexität des Bildes und der verwendeten Software mit der momentan dem Stand der Technik entsprechenden PC Hardware eine Rechenzeit von einigen Sekunden bis zu mehreren Stunden benötigt wird, um ein einzelnes Standbild nach diesem Verfahren zu erstellen. Die Berechnungen von Bewegtbildern erfordert entsprechend viel Rechenzeit und/oder die Verfügbarkeit von speziellen Großrechnern.In contrast to the rasterization process, there is currently no pure hardware solution that implements the ray tracing process, but only software-based systems that require a comparatively large amount of computing power and computing time. To illustrate the extent of the calculations over time, it should be noted that depending on the complexity of the image and the software used with the PC hardware currently corresponding to the state of the art, a computing time of a few seconds to several hours is required in order to produce a single still image using this method to create. The calculation of moving images requires a lot of computing time and / or the availability of special mainframes.
Der Lehrstuhl Computergraphik an der Universität des Saarlandes hat ein softwarebasiertes Echtzeit Ray-Tracing System entwickelt, das auf einem Cluster von über 20 Rechnern zum Einsatz kommt.The Chair of Computer Graphics at Saarland University has developed a software-based real-time ray tracing system that is used on a cluster of over 20 computers.
Im US Patent 6,597,359 B1 ist eine Hardwarelösung für das Ray-Tracing Verfahren beschrieben, der sich jedoch auf statische Szenen beschränkt.US Pat. No. 6,597,359 B1 describes a hardware solution for the ray tracing method, which is, however, limited to static scenes.
Das US Patent 5,933,146 beschreibt ebenfalls eine Hardwarelösung für das Ray-Tracing- Verfahren, auch eingeschränkt auf statische Szenen.US Pat. No. 5,933,146 also describes a hardware solution for the ray tracing method, also restricted to static scenes.
Das Paper „SaarCOR - A Hardware Architecture for Ray-Tracing" vom Lehrstuhl Computergraphik der Universität des Saarlandes beschreibt eine Hardwarearchitektur für Ray-Tracing jedoch wiederum limitiert auf statische Szenen.
Das Paper „A Simple and Practical Method for Interactive Ray-Tracing of Dynamic Scenes" vom Lehrstuhl Computergraphik der Universität des Saarlandes beschreibt einen Softwareansatz zur Unterstützung von dynamischen Szenen in einem Ray-Tracer. Das beschriebene Software Verfahren verwendet jedoch nur eine Stufe von Objekten, kann also keine Schachtelung in mehreren Stufen durchführen.The paper "SaarCOR - A Hardware Architecture for Ray-Tracing" from the Chair of Computer Graphics at the University of Saarland describes a hardware architecture for ray-tracing but again limited to static scenes. The paper "A Simple and Practical Method for Interactive Ray-Tracing of Dynamic Scenes" from the Chair of Computer Graphics at Saarland University describes a software approach to support dynamic scenes in a ray tracer. However, the software method described uses only one level of objects, cannot carry out nesting in several stages.
Der beschriebene Stand der Technik bietet momentan weder Software- noch Hardwarelösungen, mit denen komplexe dynamische Szenen in Echtzeit dargestellt werden können. Bei den bekannten Rasterisierungsverfahren liegt die Leistungsbegrenzung in der Zahl der darzustellenden Objekte.The described prior art currently offers neither software nor hardware solutions with which complex dynamic scenes can be displayed in real time. In the known rasterization methods, the performance limitation lies in the number of objects to be displayed.
Ray-Tracing Systeme können zwar viele Dreiecke darstellen, sind jedoch wegen der benötigten Vorberechnungen darin beschränkt, dass die Position nur eingeschränkt geändert werden kann. Szenen aus einigen Milliarden Dreiecken erfordern sehr viel Rechenleistung und Speicher und sind nur auf schnellen und komplexen Großrechnern oder Clusterlösungen zu handhaben.Ray tracing systems can represent many triangles, but due to the pre-calculations required, they are limited in that the position can only be changed to a limited extent. Scenes from a few billion triangles require a lot of computing power and memory and can only be handled on fast and complex mainframes or cluster solutions.
Deshalb sind mit der verfügbaren Personal-Computerhardware softwarebasierte dynamische Echtzeit Ray-Tracing Systeme nicht realisierbar. Die beschriebene Clusterlösung dürfte aus Kostengründen auf Spezialanwendungen beschränkt bleiben.Therefore, software-based dynamic real-time ray tracing systems cannot be implemented with the available personal computer hardware. For reasons of cost, the cluster solution described should remain limited to special applications.
Demgegenüber liegt der vorliegenden Erfindung die Aufgabe zu Grunde, eine Vorrichtung vorzuschlagen, mit der sich Ray-Tracing-Verfahren schneller - vorzugsweise auch in Echtzeit - in dynamischen komplexen dreidimensionalen Szenen derart ausführen lassen, dass sich eine photorealistische Darstellung ergibt.In contrast, the present invention is based on the object of proposing a device with which ray tracing methods can be carried out more quickly — preferably also in real time — in dynamic complex three-dimensional scenes in such a way that a photorealistic representation results.
Diese Aufgabe wird durch eine Vorrichtung nach Anspruch 1 gelöst, indem diese Vorrichtung wenigstens einen programmierbaren Ray-Tracing Prozessor aufweist, in dem implementiert sind: • spezielle Traversierungsbefehle und/oder • Vektorarithmetikbefehle und/oder • Befehle zur Erstellung von Ray-Tracing Beschleunigungsstrukturen und/oder • wenigstens eine Entscheidungseinheit (Mailbox), mit der unterdrückt wird, dass bei Ausführung des Ray-Tracing-Verfahrens beim Schießen eines Strahles bereits mit dem Strahl geschnittene Objekte oder Dreiecke mehrfach mit dem Strahl geschnitten werden.This object is achieved by a device according to claim 1, in that this device has at least one programmable ray tracing processor, in which the following are implemented: • special traversing commands and / or • vector arithmetic commands and / or • commands for creating ray tracing acceleration structures and / or • at least one decision unit (mailbox) with which it is suppressed that when the ray tracing method is executed when shooting a beam, objects or triangles already cut with the beam are cut several times with the beam.
Der Aufbau der Vorrichtung ist so organisiert, dass mehrere Threads parallel abgearbeitet werden und mehrere Threads automatisch synchron abgearbeitet werden können.
Weiterhin verfügt die Vorrichtung über eine n-level Cache Hierarchie und / oder über ein virtuelles Speichermanagement und/oder eine direkte Verbindung mit dem Hauptspeicher.The structure of the device is organized in such a way that several threads can be processed in parallel and several threads can be processed automatically and synchronously. Furthermore, the device has an n-level cache hierarchy and / or a virtual memory management and / or a direct connection to the main memory.
Diese Vorrichtung kann vorzugsweise als FPGA und / oder in ASIC Technologie und / oder einer anderen logikbasierten Halbleitertechnologie oder in diskreter integrierter Logik, oder in der Kombination dieser Technologien realisiert sein.This device can preferably be implemented as FPGA and / or in ASIC technology and / or another logic-based semiconductor technology or in discrete integrated logic, or in the combination of these technologies.
Zur näheren Erörterung der Entscheidungseinheit wird auf Figur 2 verwiesen, aus der zu sehen ist, dass die Listen Einheit um eine Mailbox erweitert wird. Diese Mailbox verhindert, dass ein Dreieck oder Objekt beim Schießen eines Strahles mehrfach mit dem Strahl geschnitten wird, indem es sich bereits mit dem Strahl geschnittene Objekte oder Dreiecke merkt. Dadurch müssen nicht so viele Strahl-Objekt- bzw. Strahl-Dreiecks- Schnittpunktberechnungen durchgeführt werden, was die Berechnung beschleunigt. Die Mailbox kann als eine Art Schnittpunktberechnungscache angesehen werden, der im Gegensatz zu einem Speichercache nicht Speicheranfragen zum Speicher verhindert, sondern Schnittpunktberechnungen. Zur Implementierung der Mailbox können standardmäßige Cachingverfahren wie 4-Wege-Caches verwendet werden.For a more detailed discussion of the decision unit, reference is made to FIG. 2, from which it can be seen that the list unit is expanded by a mailbox. This mailbox prevents a triangle or object from being cut multiple times with the beam when a beam is shot by remembering objects or triangles already cut with the beam. As a result, not so many beam-object or beam-triangle intersection calculations need to be carried out, which speeds up the calculation. The mailbox can be seen as a kind of intersection calculation cache, which, in contrast to a storage cache, does not prevent storage requests for storage, but rather intersection calculations. Standard caching methods such as 4-way caches can be used to implement the mailbox.
Anspruch 2 betrifft eine Vorrichtung zur photorealistischen Darstellung von dynamischen komplexen dreidimensionalen Szenen mittels des Ray-Tracing Verfahrens, wobei diese wenigstens eine spezielle Traversierungs-Einheit aufweist und wenigstens eine Listen- Einheit und wenigstens eine Entscheidungseinheit (Mailbox), mit der unterdrückt wird, dass bei Ausführung des Ray-Tracing-Verfahrens beim Schießen eines Strahles bereits mit dem Strahl geschnittene Objekte oder Dreiecke mehrfach mit dem Strahl geschnitten werden, und wenigstens eine Schnittpunktberechnungs-Einheit und wenigstens eine Einheit zum Erstellen von Beschleunigungsstrukturen und wenigstens eine Transformations-Einheit und/oder wenigstens eine Einheit zum Lösen von linearen Gleichungssystemen und dass mehrere Strahlen oder Threads parallel abgearbeitet werden können und mehrere Strahlen bzw. Threads automatisch synchron abgearbeitet werden können und beliebig viele Stufen von dynamischen Objekten in dynamischen Objekten realisiert werden können und dass die Vorrichtung über eine n-level Cache Hierarchie und / oder über ein virtuelles Speichermanagement und/oder eine direkte Verbindung mit dem Hauptspeicher verfügt.Claim 2 relates to a device for the photorealistic representation of dynamic complex three-dimensional scenes by means of the ray tracing method, which has at least one special traversing unit and at least one list unit and at least one decision unit (mailbox) with which is suppressed that at Execution of the ray tracing method when shooting a beam, objects or triangles already cut with the beam are cut several times with the beam, and at least one intersection calculation unit and at least one unit for creating acceleration structures and at least one transformation unit and / or at least a unit for solving linear systems of equations and that several beams or threads can be processed in parallel and several beams or threads can be processed automatically synchronously and any number of levels of dynamic objects in dynamic objects n can be realized and that the device has an n-level cache hierarchy and / or a virtual memory management and / or a direct connection to the main memory.
Bei der Ausgestaltung nach Anspruch 3 ergibt sich als Unterschied zu der Ausgestaltung nach Anspruch 2, dass die wenigstens eine Transformations-Einheit und / oder die wenigstens eine Einheit zum Lösen von linearen Gleichungssystemen und / oder die wenigstens eine Schnittpunktberechnungs-Einheit im Anspruch 2 bei dem Anspruch 3
durch einen Ray-Tracing Prozessor ergänzt wurde, der bereits in Anspruch 1 erläutert wurde.In the embodiment according to claim 3, the difference from the embodiment according to claim 2 is that the at least one transformation unit and / or the at least one unit for solving linear systems of equations and / or the at least one intersection calculation unit in claim 2 Claim 3 was supplemented by a ray tracing processor, which was already explained in claim 1.
Diese auf dem Ray-Tracing Verfahren basierende Vorrichtung zur photorealistischen Darstellung dreidimensionaler bewegter Szenen, bei der die softwaremäßig definierten Beschleunigungsstrukturen und Verfahren in entsprechende Hardwarestrukturen umgesetzt sind, ist vorrangig zum Echtzeiteinsatz vorgesehen.This device, based on the ray tracing method, for the photorealistic representation of three-dimensional moving scenes, in which the software-defined acceleration structures and methods are implemented in corresponding hardware structures, is primarily intended for real-time use.
Zur Realisierung beliebiger ungeordneter Dynamik in einer Szene muss für jedes Bild der Bildfolge die Beschleunigungsstruktur neu berechnet werden. Dies bedeutet bei großen Szenen einen enorm großen Rechenaufwand da die gesamte Geometrie der Szene „angefasst" werden muss. Hierbei verschwindet der Vorteil der logarithmischen Komplexität in der Szenengröße.In order to realize any disordered dynamics in a scene, the acceleration structure has to be recalculated for each image in the sequence. In the case of large scenes, this means an enormous amount of computing effort since the entire geometry of the scene has to be "touched". The advantage of the logarithmic complexity in the scene size disappears.
Eine im Paper „A Simple and Practical Method for Interactive Ray-Tracing" beschriebene Lösung zu diesem Problem ist die Unterteilung der Szene in Objekte und ausschließlich das Bewegen dieser Objekte als Ganzes zu erlauben. Hierbei werden zwei Beschleunigungsstrukturen benötigt.A solution to this problem described in the paper "A Simple and Practical Method for Interactive Ray Tracing" is to allow the scene to be divided into objects and only to move these objects as a whole. Two acceleration structures are required.
Eine Top-Level Beschleunigungsstruktur über den Objekten der Szene und jeweils eine Bottom-Level Beschleunigungsstruktur für jedes der Objekte. Die Objekte werden hierbei in Form von Instanzen von Objekten in der Szene positioniert.A top-level acceleration structure over the objects of the scene and a bottom-level acceleration structure for each of the objects. The objects are positioned in the scene in the form of instances of objects.
Der Unterschied eines Objektes zu der Instanz desgleichen liegt darin, dass eine Instanz eines Objektes aus einem Objekt und einer Transformation besteht. Die Transformation ist eine affine Funktion, die das Objekt an eine beliebige Stelle der Szene verschiebt. Affine Transformationen erlauben des weiteren ein Skalieren, Rotieren und Scheren (engl. shearing) von Objekten. Im folgenden wird der Einfachheit halber auch für Instanzen von Objekten der Begriff Objekt verwendet, falls keine Verwechslungsmöglichkeit besteht.The difference between an object and the instance is that an instance of an object consists of an object and a transformation. The transformation is an affine function that moves the object anywhere in the scene. Affine transformations also allow objects to be scaled, rotated and sheared. In the following, for the sake of simplicity, the term object is also used for instances of objects if there is no possibility of confusion.
Ein Strahl wird zunächst durch die Top-Level Beschleunigungsstruktur traversiert (Strahl durch die Szene verfolgen) bis ein mögliches Treffer-Objekt (das vom Strahl getroffene Objekt) gefunden wird. Nun transformiert man den Strahl in das lokale Koordinatensystem des Objektes und traversiert in der Bottom-Level Beschleunigungsstruktur des Objektes weiter bis ein Treffpunkt mit einem Primitiven Objekt gefunden ist. Primitive Objekte sind Objekte, die in sich keine weitere Struktur besitzen. Bei Ray-Tracern sind das in der Regel Dreiecke und Kugeln.
Diese Methode funktioniert in der Praxis sehr gut, jedoch nur so lange die Zahl der Objekte nicht zu groß wird, da die Top-Level Beschleunigungsstruktur in jedem Bild neu aufgebaut werden muss. Das neue Aufbauen dieser Beschleunigungsstruktur ist erforderlich, wenn die Objekte in dieser bewegt wurden.A beam is first traversed through the top-level acceleration structure (track beam through the scene) until a possible hit object (the object hit by the beam) is found. Now transform the beam into the local coordinate system of the object and continue traversing in the bottom-level acceleration structure of the object until a meeting point with a primitive object is found. Primitive objects are objects that have no other structure in themselves. For ray tracers, these are usually triangles and spheres. This method works very well in practice, but only as long as the number of objects does not become too large, since the top-level acceleration structure has to be rebuilt in every picture. It is necessary to rebuild this acceleration structure if the objects have been moved in it.
Die Erfindung stellt nun eine Hardwarelösung dar, die obige Aufteilung der Szene in Objekte rekursiv unterstützt. Das heißt, sie schränkt sich nicht auf Objekte ein, die aus Primitiven Objekten bestehen, sondern erlaubt ebenfalls, dass sich diese Objekte wieder aus Objekten zusammensetzen, die wiederum aus Objekten bestehen können usw. Fig.1 zeigt wie aus mehreren Stufen von Objekten ein Baum erstellt werden kann. Zunächst wird als Objekt der Stufe 1 ein Blatt modelliert. Dieses Blatt wird nun mehrfach instantiiert und an einen Ast gesetzt, wodurch ein weiteres Objekt entsteht, jedoch jetzt ein Objekt der Stufe 2. Diese kleinen Äste können nun wieder mehrfach instantiiert werden zu einem größeren Ast oder Baum als Objekt der Stufe 3 usw. Es ist anzumerken, dass hier mehrere Ebenen von Objekten in Objekten vorkommen und dass die Repräsentation der Szene durch das mehrmalige Benutzen gleicher Geometrien klein ist.The invention now represents a hardware solution that supports the above division of the scene into objects recursively. This means that it is not restricted to objects that consist of primitive objects, but also allows these objects to be composed again of objects, which in turn can consist of objects, etc. Fig. 1 shows how a tree consists of several levels of objects can be created. First, a leaf is modeled as a level 1 object. This leaf is now instantiated several times and placed on a branch, which creates another object, but now an object of level 2. These small branches can now be instantiated several times again to form a larger branch or tree as an object of level 3 etc. It is It should be noted that there are several levels of objects in objects and that the representation of the scene is small due to the repeated use of the same geometries.
Das in der Erfindung nach Anspruch 2 zum Einsatz kommende Verfahren für das Ray- Casting sieht wie folgt aus:The method for ray casting used in the invention according to claim 2 looks as follows:
Der Strahl wird durch die Beschleunigungsstruktur der obersten Stufe traversiert bis ein mögliches Treffer-Objekt gefunden ist. Falls das Objekt ein Primitives Objekt ist, so wird der Schnittpunkt des Strahles mit dem Objekt berechnet. Ist das Objekt kein Primitives Objekt, so wird der Strahl in das lokale Koordinatensystem des Objektes transformiert und setzt dort die Traversierung rekursiv fort.The beam is traversed through the acceleration structure of the top level until a possible hit object is found. If the object is a primitive object, the intersection of the beam with the object is calculated. If the object is not a primitive object, the beam is transformed into the local coordinate system of the object and continues traversing there recursively.
Ein wesentlicher Teil des Verfahrens ist die Transformation des Strahles in das lokale Koordinatensystem des Objektes, wodurch im Prinzip die Positionierung des Objektes durch die affine Transformation rückgängig gemacht wird. Das heißt, der transformierte Strahl sieht das Objekt nun nicht mehr transformiert. Dieser Transformationsschritt erfordert eine recht aufwändige affine Transformation des Strahlstartpunktes und der Strahlrichtung, wobei jedoch die dazu erforderliche aufwändige Hardwareeinheit zusätzlich noch für weitere Aufgaben einsetzbar ist. Es stellt sich heraus, dass die Transformationseinheit ebenfalls zur Berechnung des Schnittpunktes mit vielen Arten von Primitiven Objekten, zur Berechnung von Primärstrahlen und zur Berechnung vieler Arten von Sekundärstrahlen verwendet werden kann.An essential part of the process is the transformation of the beam into the local coordinate system of the object, which in principle reverses the positioning of the object through the affine transformation. This means that the transformed ray no longer sees the object transformed. This transformation step requires a fairly complex affine transformation of the beam starting point and the beam direction, although the complex hardware unit required for this can also be used for further tasks. It turns out that the transformation unit can also be used to calculate the intersection with many types of primitive objects, to calculate primary rays and to calculate many types of secondary rays.
Zur Berechnung der Primärstrahlen wird eine ähnliche Kameratransformationsmatrix angewandt, wie bei den bekannten Rasterisierungsverfahren. Zunächst werden
Pre-Primärstrahlen der Gestalt R=((0,0,0),(x,y,1)) , also Strahlen mit dem Startpunkt (0,0,0) und der Richtung (x,y,1) definiert, wobei x und y die Koordinaten des Pixels zu dem ein Primärstrahl berechnet werden soll darstellt. Zu jeder Kameraposition und Ausrichtung gibt es eine affine Transformation, die den Strahl R derart transformiert, dass er genau der Einfallsrichtung des Pixel (x,y) der Kamera entspricht.A similar camera transformation matrix is used to calculate the primary beams as in the known rasterization methods. First of all Pre-primary rays of the shape R = ((0,0,0), (x, y, 1)), i.e. rays with the starting point (0,0,0) and the direction (x, y, 1), where x and y represent the coordinates of the pixel to which a primary beam is to be calculated. There is an affine transformation for each camera position and orientation, which transforms the beam R in such a way that it corresponds exactly to the direction of incidence of the pixel (x, y) of the camera.
Um den Schnittpunkt mit einem Primitiven Objekt zu berechnen, wird der Strahl in einen Raum transformiert, in dem das Primitive Objekt normiert ist. Im Falle eines Dreiecks als Primitives Objekt, wird der Strahl beispielsweise derart in einen Raum transformiert, dass das Dreieck die Gestalt Δnorm=((1 , 0,0), (0,0,0), (0,1 ,0)) hat. Zur Veranschaulichung wird auf Figur 10 verwiesen. Diese Transformation kann durch eine affine Transformation • geschehen. Die anschließende Schnittpunktberechnung mit dem Normdreieck ist im Gegensatz zum allgemeinen Fall sehr einfach in Hardware zu lösen. Wird die Transformation derart gewählt, dass die Dreiecksnormale auf den Vektor (0,0,1) im Dreiecksraum transformiert werden, so lässt sich das Skalarprodukt aus Strahl und Dreiecksnormale sehr einfach im Dreiecksraum berechnen, da das Skalarprodukt aus Strahlrichtung (xt.yt.zt) und der Dreiecksnormalen (0,0,1) gerade 0*xt+0*yt+1*zt = zt ist.In order to calculate the intersection with a primitive object, the beam is transformed into a space in which the primitive object is normalized. In the case of a triangle as a primitive object, the beam is transformed into a space, for example, such that the triangle has the shape Δ norm = ((1, 0.0), (0.0.0), (0.1, 0) ) Has. For illustration, reference is made to FIG. 10. This transformation can be done through an affine transformation. In contrast to the general case, the subsequent intersection calculation with the standard triangle is very easy to solve in hardware. If the transformation is chosen in such a way that the triangle normal is transformed to the vector (0,0,1) in the triangle space, the scalar product of the ray and triangle normal can be calculated very easily in the triangle space, since the scalar product from the beam direction (xt.yt.zt ) and the triangle normal (0,0,1) is even 0 * xt + 0 * yt + 1 * zt = zt.
Die Transformation kann des weiteren so gewählt werden, dass nur 9 Fließkommazahlen für deren Repräsentation benötigt werden, indem die Dreiecksnormale auf eine geeignete Normale im Norm-Dreiecksraum abgebildet wird. Dies verhindert jedoch die Möglichkeit, das Skalarprodukt im Norm-Dreiecksraum zu berechnen.The transformation can also be selected so that only 9 floating point numbers are required for its representation by mapping the triangle normal to a suitable normal in the norm triangle space. However, this prevents the possibility of calculating the dot product in the standard triangular space.
Es ist klar ersichtlich, dass diese Normobjekttransformation auch für andere Arten von Objekten verwendet werden kann, wie beispielsweise Kugeln, Ebenen, Quader, Zylinder und viele weitere geometrische Gebilde, es ist jeweils nur eine andere Schnittpunktberechnungseinheit zu erstellen.It is clearly evident that this standard object transformation can also be used for other types of objects, such as spheres, planes, cuboids, cylinders and many other geometric structures, only one different intersection calculation unit has to be created in each case.
Ein großer Vorteil hierbei ist die Tatsache, dass jede Art von Primitivem Objekt die gleiche Repräsentation im Speicher besitzt, nämlich eine affine Transformation, die in den Objektnormraum transformiert. Dies erleichtert die Konzeption des Speicherinterface einer Hardwarelösung. Die Transformation in den Objektnormraum nennt man die Normraumtransformation.A great advantage here is the fact that every type of primitive object has the same representation in memory, namely an affine transformation that transforms into the object's normal space. This simplifies the design of the memory interface of a hardware solution. The transformation into the object norm space is called the norm space transformation.
Schattenstrahlen sowie Spiegelungen lassen sich durch die Berechnung geeigneter Transformationen und geeigneter Strahlen effizient durch die Transformationseinheit berechnen.
Des weiteren ist es möglich, mit der Transformationseinheit Normalen (Vektoren die senkrecht auf einer Fläche stehen) zu transformieren. Diese Normalentransformation ist deswegen nötig, da einige Shadingmodelle die Normale der Geometrie am Auftreffpunkt benötigen. Diese Normale muss jedoch im Weltkoordinatensystem vorliegen, was bei obigem Verfahren nicht zwangsläufig der Fall ist. Vielmehr liegt die Normale erstmals nur im lokalen Koordinatensystem des getroffenen Objektes vor. Sie muss von dort wieder zurück in das Weltkoordinatensystem transformiert werden.Shadow rays and reflections can be efficiently calculated by the transformation unit by calculating suitable transformations and suitable rays. It is also possible to use the transformation unit to transform normals (vectors that are perpendicular to a surface). This normal transformation is necessary because some shading models require the normal of the geometry at the point of impact. However, this normal must exist in the world coordinate system, which is not necessarily the case with the above method. Rather, for the first time, the normal is only available in the local coordinate system of the object hit. From there it must be transformed back into the world coordinate system.
Die Transformationseinheit hat jedoch auch einen Nachteil. Da die affinen Transformationen, die als Matrizen gespeichert werden können, sowohl für Dreiecke also auch für die Objekte der Szene vorberechnet werden müssen, ist es nicht ohne weiteres möglich, die Position der Dreieckseckpunkte effizient von Frame zu Frame zu ändern. Dies ist in Vertexshadern auf heutigen Grafikkarten jedoch möglich. Vertexshader sind programmierbare Spezialeinheiten, die darauf optimiert sind, Bewegungen von Punkten im Raum zu berechnen.However, the transformation unit also has a disadvantage. Since the affine transformations, which can be saved as matrices, have to be pre-calculated for triangles as well as for the objects of the scene, it is not easily possible to change the position of the triangle corner points efficiently from frame to frame. However, this is possible in vertex shaders on today's graphics cards. Vertex shaders are programmable special units that are optimized to calculate movements of points in space.
Um dies zu ermöglichen, muss man sich von der Vorberechnung der Daten lösen. Demzufolge ist es dann erforderlich, zur Schnittpunktsberechnung mit einem Dreieck ein lineares Gleichungssystem mit drei Unbekannten zu lösen. Dieses explizite Lösen erfordert zwar mehr Fließkomma-Operationen, ist jedoch in Verbindung mit Vertexshadern erforderlich. Demzufolge kann es sinnvoll sein, obige Transformationseinheit durch eine Einheit, die ein lineares Gleichungssystem löst, zu ersetzen. Diese Einheit kann unter anderem dazu verwendet werden, um mit Dreiecken zu schneiden oder Strahlen in das lokale Koordinatensystem eines Objektes zu transformieren.To make this possible, you have to move away from the precalculation of the data. As a result, it is then necessary to solve a system of linear equations with three unknowns to calculate the intersection with a triangle. This explicit solving requires more floating point operations, but is required in conjunction with vertex shaders. As a result, it may make sense to replace the above transformation unit with a unit that solves a linear system of equations. Among other things, this unit can be used to cut with triangles or to transform rays into the local coordinate system of an object.
Das in der Erfindung nach Anspruch 1 zum Einsatz kommende Verfahren für das Ray- Casting gliedert sich analog zu dem nach Anspruch 2 beschriebenen Verfahren, mit dem Unterschied, dass die Transformation und die Schnittpunktberechnung durch geeignete Anweisungen für den Ray-Tracing Prozessor umgesetzt werden. Hierbei bietet sich insbesondere die Möglichkeit alternative Verfahren zur Objekt-Strahl- Schnittpunktberechnung einzusetzen. Beispielsweise ermöglicht die Verwendung des Plücker-Strahl-Dreieckstests den effizienten Einsatz von Vertexshadern.The method for ray casting used in the invention according to claim 1 is structured analogously to the method described according to claim 2, with the difference that the transformation and the intersection calculation are implemented by suitable instructions for the ray tracing processor. Here, in particular, there is the possibility of using alternative methods for object-beam intersection calculation. For example, the use of the Plücker ray triangle test enables the efficient use of vertex shaders.
Ein Problem von detailreichen Szenen sind unerwünschte Aliasing Effekte, die vor allem dann entstehen, wenn die Objektdichte in einer Richtung sehr hoch ist. Dann kann es passieren, dass ein Strahl beispielsweise ein schwarzes Dreieck trifft und bei einer minimalen Bewegung der Kamera plötzlich ein weißes Dreieck getroffen wird. Solche
Effekte führen zu einem zeitlichen und örtlichen Rauschen im Bild. Der Grund liegt darin, dass Ray-Tracing in der Regel unendlich schmale Strahlen verwendet und nicht berücksichtigt, dass sich das Licht, das einen Pixel beeinflusst, pyramidenförmig ausbreitet und sich der Strahl mit der Entfernung aufweitet. So müssten eigentlich alle Objekte, die sich in dieser Strahlenpyramide befinden, zur Berechnung der Pixelfarbe herangezogen werden, was in einem Echtzeitsystem nicht möglich ist. Abhilfe schafft hier eine neue vereinfachte Form des Cone-Tracings. Anstatt einen beliebig schmalen Strahl zu betrachten, wird zusätzlich der Öffnungswinkel des Strahles bewertet. So kann je nach Entfernung zur Kamera die entsprechende Strahlbreite berechnet werden. Trifft man bei der Traversierung auf einen Teilraum, der zu einem Großteil von dem Strahl überdeckt wird, so ist es unter Umständen nicht sinnvoll, weiter zu traversieren. An dieser Stelle kann vorteilhaft eine vereinfachte Geometrie des Volumeninneren zur Berechnung verwendet werden. Dabei kann dann ignoriert werden, dass in dem Volumina vielleicht eine Million Dreiecke sind. Diese Dreiecke bilden unter Umständen nur die Wand eines Gebirges, die wegen der Größe des Strahles auch durch eine farbige Ebene approximiert werden kann.A problem with detailed scenes is unwanted aliasing effects, which arise especially when the object density in one direction is very high. Then it can happen that a beam hits a black triangle, for example, and suddenly a white triangle is hit with a minimal movement of the camera. Such Effects lead to temporal and local noise in the picture. The reason is that ray tracing generally uses infinitely narrow rays and does not take into account that the light that affects a pixel spreads out in a pyramid shape and the beam expands with distance. All objects that are in this pyramid of rays should actually be used to calculate the pixel color, which is not possible in a real-time system. This is remedied by a new, simplified form of cone tracing. Instead of looking at an arbitrarily narrow beam, the opening angle of the beam is also assessed. Depending on the distance to the camera, the corresponding beam width can be calculated. If you encounter a sub-area during traversal that is largely covered by the beam, it may not make sense to continue traversing. At this point, a simplified geometry of the volume interior can advantageously be used for the calculation. It can then be ignored that there are perhaps a million triangles in the volume. These triangles may only form the wall of a mountain range, which can also be approximated by a colored plane due to the size of the beam.
Falls die Dreiecke jedoch ein löchriges Gebilde wie zum Beispiel den Eifelturm modellieren, ist als Approximation eher die Farbe der konstruktiven Gitterelemente und ein Transparenzwert zu wählen.However, if the triangles model a hole-like structure such as the Eiffel Tower, the approximation should rather be the color of the constructive grid elements and a transparency value.
Vorteilhaft lassen sich solche vereinfachten Geometrierepräsentationen in der Beschleunigungsstruktur unterstützen. Figur 6 zeigt das Konzept am Beispiel eines Octrees. Zu dem fett umrandeten Volumina, zu dem ein Knoten in der Beschleunigungsstruktur gehört, ist die vereinfachte Geometrie abgebildet. Der Strahl überlappt fast mit dem gesamten Volumen des Knotens, so dass die vereinfachte Geometrie zur Schnittpunktsberechnung verwendet wird.Such simplified geometry presentations can advantageously be supported in the acceleration structure. Figure 6 shows the concept using the example of an octree. The simplified geometry is shown for the volume with a bold outline, to which a node belongs in the acceleration structure. The beam overlaps almost the entire volume of the node, so the simplified geometry is used to calculate the intersection.
Eine alternative Methode besteht darin, die Objekte der Szene mit unterschiedlichen Detaillevel abzuspeichern. Das heißt, dass die Objekte mit unterschiedlicher Auflösung oder Anzahl von Dreiecke modelliert werden und dass weiterhin abhängig von der Entfernung der Objekte zur Kamera detailreiche oder vereinfachte Objekte verwendet werden.An alternative method is to save the objects of the scene with different levels of detail. This means that the objects are modeled with different resolutions or numbers of triangles and that depending on the distance of the objects from the camera, detailed or simplified objects are still used.
Als nachteilig könnte bei der oben beschriebenen festverdrahteten, hardwarebasierten Ray-Tracing-Pipeline angesehen werden, dass es aufwändig ist, sie programmierbar zu gestalten. Im Vergleich zu einem Software Ray-Tracing Ansatz, wirkt die hardwarebasierte Pipeline sehr starr und speziell.
Abhilfe schafft die Entwicklung einer speziell auf das Ray-Tracing Verfahren angepassten CPU. Dieser spezielle Ray-Tracing Prozessor besteht aus einer Standard CPU, wie beispielsweise einem RISC Prozessor, dessen Befehlssatz um spezielle Befehle erweitert wird. Insbesondere ist ein Traversierungs-Befehl wichtig, der den Strahl durch eine Beschleunigungsstruktur traversiert. Einige Stellen des Verfahrens erfordern des weiteren aufwändige arithmetische Operationen, die vorwiegend im dreidimensionalen Raum geschehen. Es ist demnach sinnvoll, die CPU mit einer Vektorarithmetikeinheit auszustatten, ähnlich den heute geläufigen SSE2 Befehlssätzen.A disadvantage of the hard-wired, hardware-based ray tracing pipeline described above could be that it is complex to make it programmable. Compared to a software ray tracing approach, the hardware-based pipeline looks very rigid and special. This is remedied by the development of a CPU specially adapted to the ray tracing process. This special ray tracing processor consists of a standard CPU, such as a RISC processor, whose instruction set is expanded to include special instructions. In particular, a traversal command that traverses the beam through an acceleration structure is important. Some parts of the method also require complex arithmetic operations, which mainly take place in three-dimensional space. It therefore makes sense to equip the CPU with a vector arithmetic unit, similar to the SSE2 instruction sets currently used.
Eine weitere Optimierung der CPU kann dadurch erreicht werden, dass die Parallelisierbarkeit des Verfahrens ausgenutzt wird. Es ist demnach möglich, sehr effektiv mehrere Threads (Programmabläufe) auf einer CPU laufen zu lassen, was die Auslastung und Effektivität der CPU deutlich erhöht. Dies gilt vor allem im Hinblick auf die Speicherwartezeiten. Macht ein Thread eine Speicheranfrage, so kann ein anderer während der Anfrage ausgeführt werden. Ein beispielhafter Aufbau solch einer CPU ist in Figur 5 zu sehen.A further optimization of the CPU can be achieved by taking advantage of the fact that the method can be parallelized. It is therefore possible to run several threads (program sequences) on one CPU very effectively, which significantly increases the utilization and effectiveness of the CPU. This is especially true with regard to storage latency. If one thread makes a memory request, another thread can be executed during the request. An exemplary structure of such a CPU can be seen in FIG. 5.
Da bei dynamischen Szenen für jedes Frame Neuberechnungen von Beschleunigungsstrukturen durchgeführt werden müssen, ist es erforderlich, den Befehlssatz der CPU um spezielle Befehle zur Erstellung von Beschleunigungsstrukturen zu erweitern. Bei der Erstellung von Beschleunigungsstrukturen muss oft entschieden werden, ob sich ein Objekt in einem gegebenen Teilraum befindet, in den es einsortiert werden soll, oder nicht. Eine spezielle Einheit, welche die Erstellung von Beschleunigungsstrukturen optimiert, kann die erforderliche Berechnung dadurch beschleunigen, dass diese eine sehr einfach zu berechnende Vorabentscheidung fällt. Als Teilräume werden häufig Boxen verwendet, deren 6 Begrenzungsflächen senkrecht auf der x,y bzw z- Achse stehen. Solch eine Box kann durch ihre Eckpunkte charakterisiert werden, wobei die Definition von lediglich zwei Punkten sogar ausreicht. Die Bestimmung/Entscheidung, ob sich das Dreieck in dieser Box befindet, kann in vielen Fällen mittels simpler Vergleiche der Koordinaten der Punkte erfolgen. Liegt das Dreieck zum Beispiel in X-Richtung weit links von der Box so sind die X - Koordinaten der 3 Eckpunkte des Dreiecks alle kleiner als die kleinste X- Koordinate der Eckpunkte der Box (siehe Fig. 13). Auch viele andere Konstellationen können so entschieden werden, zum Beispiel, ob sich das Dreieck vollständig in der Box befindet. Falls keine Entscheidung möglich ist, so müssen aufwändige mathematische Formeln wie das SAP (Separating Axis Theorem) angewendet werden. Die Entscheidung, ob eine Box mit einer anderen Box überlappt, kann ebenfalls mit den Eckpunktvergleichen entschieden werden.
Zur weiteren Optimierung wird eine Entscheidungseinheit eingesetzt, die verhindert, dass beim Schießen eines Strahles bereits mit dem Strahl geschnittene Objekte oder Dreiecke mehrfach mit dem Strahl geschnitten werden. Dies geschieht dadurch, dass die Listen Einheit wie in Figur 2 zu sehen um eine Mailbox erweitert wird. Diese Mailbox verhindert, dass ein Dreieck oder Objekt beim Schießen eines Strahles mehrfach mit dem Strahl geschnitten wird, indem es sich bereits mit dem Strahl geschnittene Objekte oder Dreiecke merkt. Dadurch müssen nicht so viele Strahl-Objekt- bzw. Strahl-Dreiecks- Schnittpunktberechnungen durchgeführt werden, was die Berechnung beschleunigt. Die Mailbox kann als eine Art Schnittpunktberechnungscache angesehen werden, der im Gegensatz zu einem Speichercache nicht Speicheranfragen zum Speicher verhindert, sondern Schnittpunktberechnungen. Zur Implementierung der Mailbox können standardmäßige Cachingverfahren wie 4-Wege-Caches verwendet werden.Since dynamic scenes have to be recalculated for acceleration structures for every frame, it is necessary to expand the instruction set of the CPU with special instructions for creating acceleration structures. When creating acceleration structures, it often has to be decided whether an object is in a given subspace into which it should be sorted or not. A special unit that optimizes the creation of acceleration structures can accelerate the required calculation by making a very easy-to-calculate preliminary decision. Boxes are often used as subspaces, the 6 boundary surfaces of which are perpendicular to the x, y or z axis. Such a box can be characterized by its corner points, whereby the definition of just two points is even sufficient. The determination / decision whether the triangle is in this box can in many cases be made by simply comparing the coordinates of the points. For example, if the triangle lies in the X direction far to the left of the box, the X coordinates of the 3 corner points of the triangle are all smaller than the smallest X coordinate of the corner points of the box (see Fig. 13). Many other constellations can also be decided in this way, for example whether the triangle is completely in the box. If no decision is possible, complex mathematical formulas such as the SAP (Separating Axis Theorem) must be used. The decision whether a box overlaps with another box can also be decided using the corner point comparisons. For further optimization, a decision unit is used which prevents objects or triangles already cut with the beam from being cut several times with the beam when a beam is fired. This is done by adding a mailbox to the list unit as shown in Figure 2. This mailbox prevents a triangle or object from being cut multiple times with the beam when a beam is shot by remembering objects or triangles already cut with the beam. As a result, not so many beam-object or beam-triangle intersection calculations need to be carried out, which speeds up the calculation. The mailbox can be seen as a kind of intersection calculation cache, which, in contrast to a storage cache, does not prevent storage requests for storage, but intersection calculations. Standard caching methods such as 4-way caches can be used to implement the mailbox.
Die Einheiten der Ray-Tracing Architektur benötigen eine sehr hohe Speicherbandbreite, das heißt, es müssen sehr viele Daten pro Zeiteinheit übertragen werden. Normalerweise ist dies nur zu realisieren, indem sehr viele Speicherchips parallel geschaltet werden. Die erforderliche Speicherbandbreite kann jedoch auch durch eine geeignete Verschaltung von mehreren Cachestufen (n-Level Caches) sichergestellt werden. Wesentlich ist hier eine Eigenschaft des Ray-Tracing Verfahrens, die als Kohärenz bezeichnet wird. Kohärenz bezeichnet die Tatsache, dass Strahlen, die ähnliche Bereiche des 3D Raumes durchlaufen, auch auf nahezu die gleichen Daten in der Beschleunigungsstruktur zugreifen und dementsprechend also auch auf die gleichen Objekte. Wird diese Eigenschaft ausgenutzt, können hohe Cache Hitraten erzielt werden. Das heißt, die benötigten Daten werden mit großer Wahrscheinlichkeit im Cache wiedergefunden und brauchen nicht zeitaufwändig aus dem Hauptspeicher geladen zu werden. Die Caches an sich sind entsprechend der Darstellung in Figur 4 beispielsweise in einem binären Baum angeordnet, um mehrere Ray-Tracing Einheiten zu versorgen.The units of the ray tracing architecture require a very high memory bandwidth, which means that a lot of data has to be transmitted per unit of time. Usually this can only be achieved by connecting a large number of memory chips in parallel. However, the required memory bandwidth can also be ensured by a suitable interconnection of several cache levels (n-level caches). What is essential here is a property of the ray tracing method, which is referred to as coherence. Coherence refers to the fact that rays that pass through similar areas of 3D space also access almost the same data in the acceleration structure and accordingly also the same objects. If this property is used, high cache hit rates can be achieved. This means that the required data will most likely be found in the cache and does not need to be loaded from the main memory in a time-consuming manner. As shown in FIG. 4, the caches themselves are arranged in a binary tree, for example, in order to supply several ray tracing units.
Die erfindungsgemäße Vorrichtung kann in Verbindung mit einem 3D Display natürlich auch zur photorealistischen dreidimensionalen Echtzeitdarstellung komplexer bewegter Szenen verwandt werden. Abhängig von der Technologie des eingesetzten Displays sind hierbei drei Ausführungsformen der Bildausgabe zu unterscheiden.The device according to the invention can of course also be used in conjunction with a 3D display for the photorealistic three-dimensional real-time representation of complex moving scenes. Depending on the technology of the display used, three types of image output can be distinguished.
Erstens eine Ausführungsform, bei der abwechselnd zwei den Stereoeindruck beinhaltende Bilder horizontal versetzt im Zeitmultiplexverfahren auf einem Display dargestellt werden.
Zweitens eine Ausführungsform, bei der zwei den Stereoeindruck repräsentierende, horizontal versetzte Bilder, die in abwechselnden senkrechten, die Bildinformation der beiden Bilder beinhaltende Streifen auf einem Display dargestellt werden.Firstly, an embodiment in which two images containing the stereo impression are alternately displayed horizontally offset on the display in time-division multiplexing. Secondly, an embodiment in which two horizontally offset images representing the stereo impression are shown on a display in alternating vertical stripes containing the image information of the two images.
Drittens eine Ausführungsform, bei der die beiden horizontal versetzten Bilder auf zwei getrennten Displays gleichzeitig oder im Zeitmultiplexverfahren dargestellt werden.Thirdly, an embodiment in which the two horizontally offset images are shown on two separate displays simultaneously or in time-division multiplexing.
Die beiden horizontal versetzten Bilder, die jeweils dem rechten oder linken Auge zuzuordnen sind, werden durch entsprechend räumliche Displayanordnungen oder durch den Einsatz von Bildtrennvorrichtungen (z.B. Shutterbrillen, streifenförmige Fresnel- Prismen/Linsen, Polarisationsfilter) jeweils nur einem Auge sichtbar. Die einzusetzenden 3D Displays und deren Erfordernisse der Videosignalansteuerung entsprechen dem Stand der Technik und werden nicht näher beschrieben. Weitere Ausführungen zum Stand der Technik von 3D Displays sind folgenden, beispielhaft genannten Schriften zu entnehmen : Computer Graphics / Addison-Wesley ISBN 0201848406, DE 4331715, DE 4417664, DE 19753040, DE 19827590, DE 19737449The two horizontally offset images, each of which can be assigned to the right or left eye, can only be seen by one eye through appropriate spatial display arrangements or through the use of image separation devices (e.g. shutter glasses, strip-shaped Fresnel prisms / lenses, polarization filters). The 3D displays to be used and their requirements for video signal control correspond to the prior art and are not described in detail. Further explanations regarding the state of the art of 3D displays can be found in the following typefaces: Computer Graphics / Addison-Wesley ISBN 0201848406, DE 4331715, DE 4417664, DE 19753040, DE 19827590, DE 19737449
Der Einsatz computeranimierter photorealistischer Echtzeitdarstellung dreidimensionaler bewegter Szenen und Bilder erstreckt sich über die Darstellung dreidimensionaler CAD Daten, die Darstellung medizinischer und technisch- analytischer Daten, über die Filmanimation sowie dem Einsatz in Flug- und Fahrsimulatoren, bis zu den sogenannten Home Anwendungen in Computerspielen mit aufwändiger Echtzeitgraphik.The use of computer-animated, photo-realistic, real-time display of three-dimensional moving scenes and images extends from the display of three-dimensional CAD data, the display of medical and technical-analytical data, film animation and use in flight and driving simulators to the so-called home applications in computer games with complex real-time graphics.
Darüber hinaus können die gleichen Verfahren ohne weitere Änderungen an der funktionalen Ausführung auch zur nicht-photorealistischen Bilderzeugung (z.B. Strichzeichnungen oder Comic-Stil Darstellungen) verwendet werden. Ebenso sind ohne weitere technische Änderungen Berechnungen durchführbar, die üblicherweise nicht direkt mit Bildberechnung in Verbindung gebracht werden. Beispielsweise gehören hierzu die Kollisionserkennung zwischen geometrischen Objekten (engl. Collision Detection) und das diskrete Lösen von numerischen Problemen. Alle beschriebenen Anwendungen sind nicht auf den interaktiven Bereich beschränkt und können ohne Änderungen an Verfahren oder Vorrichtung auch im Offline-Bereich, beispielsweise bei der Berechnung von Kinofilmen oder sehr aufwändigen physikalischen Simulationen, eingesetzt werden.In addition, the same methods can also be used for non-photorealistic image generation (e.g. line drawings or comic style representations) without further changes to the functional design. Calculations can also be carried out without further technical changes, which are usually not directly associated with image calculation. For example, this includes collision detection between geometric objects (English collision detection) and the discrete solving of numerical problems. All of the applications described are not limited to the interactive area and can also be used in the offline area without changes to the method or device, for example in the calculation of cinema films or very complex physical simulations.
Die funktioneile Realisierung und die Hardwareimplementierung der Ray-Tracing Verfahren erfolgt in komplexen und schnellen Logiktechnologien, wobei deren Umsetzung sowohl als festverdrahtete Digital-Logik in Form von diskreter Digital-Logik bestehend aus einzelnen Standard IC, oder Kunden- oder Anwendungsspezifisch gefertigten IC beispielsweise ASIC, oder von komplexen programmierbaren Logikbausteinen /
Logikschaltkreisen, beispielsweise CPLD oder FPGA Technologien mit oder ohne CPU Kern, oder der Kombination dieser Technologien erfolgt.The functional implementation and the hardware implementation of the ray tracing processes takes place in complex and fast logic technologies, their implementation both as hardwired digital logic in the form of discrete digital logic consisting of individual standard ICs, or customer or application-specific ICs, for example ASIC, or of complex programmable logic modules / Logic circuits, for example CPLD or FPGA technologies with or without CPU core, or the combination of these technologies.
Die nachfolgend beschriebene, beispielhafte Ausführungsform der Erfindung beschreibt die Ray-Tracing Einheit einer Computer-Graphikkarte, bei der die Hardwareimplementierung der Ray-Tracing Verfahren beispielsweise in einem freiprogrammierbaren Logikbaustein FPGA, in ASIC Technologie, oder in einem festverdrahteten Spezial Chip erfolgen kann.The exemplary embodiment of the invention described below describes the ray tracing unit of a computer graphics card, in which the hardware implementation of the ray tracing method can take place, for example, in a freely programmable logic module FPGA, in ASIC technology, or in a hard-wired special chip.
Soweit Verfahren und Funktionsabläufe beschrieben werden, so sind diese rein hardwaremäßig zu realisieren. Das bedeutet, dass entsprechende Logikeinheiten und hardwaremäßig realisierte Arithmetikeinheiten zu gestalten sind.Insofar as methods and functional sequences are described, they can be implemented purely in terms of hardware. This means that appropriate logic units and hardware-implemented arithmetic units must be designed.
Die Standardfunktion der Ansteuerelektronik zur Ansteuerung des Datendisplays (Kathodenstrahlröhre, TFT-, LCD- oder Plasmamonitor) und deren Timing entsprechen dem Stand der Technik, werden als bekannt vorausgesetzt und sind nicht Gegenstand der Beschreibung. Eine Schnittstelle zwischen dem Bildspeicher dieser Standardfunktion und der erfindungsgemäßen Umsetzung der Ray-Tracing Verfahren wird beschrieben.The standard function of the control electronics for controlling the data display (cathode ray tube, TFT, LCD or plasma monitor) and their timing correspond to the prior art, are assumed to be known and are not the subject of the description. An interface between the image memory of this standard function and the implementation of the ray tracing method according to the invention is described.
Die Beschreibung gliedert sich in zwei Teile. Zunächst wird die Ray-Casting-Pipeline abgekürzt RCP beschrieben. Dabei handelt es sich um den Kern des Designs, der Strahlen durch die Szene traversiert und den Auftreffpunkt zurückliefert.The description is divided into two parts. First, the ray casting pipeline is abbreviated to RCP. This is the core of the design, which traverses rays through the scene and returns the point of impact.
Im zweiten Teil wird für die Ray-Casting-Pipeline eine optimierte Ray-Tracing Architektur beschrieben, in der mehrere dieser Ray-Casting-Pipelines zusammenarbeiten.The second part describes an optimized ray tracing architecture for the ray casting pipeline, in which several of these ray casting pipelines work together.
Die Figur 2 zeigt die Ray-Casting-Pipeline Einheit (RCP), die aus mehreren Untereinheiten besteht. Die Traversierungs-Einheit traversiert den Strahl durch eine geeignete Beschleunigungsstruktur, vorzugsweise einen k-D Baum. Der Strahl wird so lange traversiert, bis er in einen Bereich der Szene kommt, in dem sich mögliche Treffer- Objekte befinden. Die Objekte dieses Bereiches sind in einer Liste gespeichert, die von der Listen-Einheit bearbeitet wird. Die Listen-Einheit beinhaltet auch eine Mailbox, die verhindert, dass ein Dreieck oder Objekt beim Schießen eines Strahles mehrfach mit dem Strahl geschnitten wird, indem es sich bereits mit dem Strahl geschnittene Objekte oder Dreiecke merkt. Dadurch müssen nicht so viele Strahl-Objekt- bzw. Strahl-Dreiecks- Schnittpunktberechnungen durchgeführt werden, was die Berechnung beschleunigt.FIG. 2 shows the ray casting pipeline unit (RCP), which consists of several subunits. The traversing unit traverses the beam through a suitable acceleration structure, preferably a k-D tree. The beam is traversed until it reaches an area of the scene in which there are possible hit objects. The objects in this area are stored in a list that is processed by the list unit. The list unit also includes a mailbox that prevents a triangle or object from being cut several times with the beam when a beam is shot, by remembering objects or triangles already cut with the beam. As a result, not so many beam-object or beam-triangle intersection calculations need to be carried out, which speeds up the calculation.
Diese Objekte müssen nun auf einen möglichen Schnittpunkt hin untersucht werden. Falls es keinen gültigen Schnittpunkt gibt, muss mit der Traversierung fortgesetzt werden. Die
Listen-Einheit sendet die möglichen Treffer-Objekte, die nicht bereits bearbeitet wurden, eins nach dem anderen, zur Matrix-Lade-Einheit, die die zu dem Objekt gehörige affine Transformation lädt. Diese affine Transformation kann durch eine 4x3 Matrix dargestellt werden. Es kann sich dabei um Objektraumtransformationsmatrizen oder um Matrizen handeln, die in den Normraum eines Primitiven Objektes transformieren. Nachdem die Matrix-Lade-Einheit die Matrix in der Transformationseinheit gespeichert hat, werden die Strahlen von der Strahl-Einheit durch die Transformationseinheit geschickt.These objects must now be examined for a possible intersection. If there is no valid intersection, the traversing must be continued. The List unit sends the possible hit objects, which have not already been processed, one by one to the matrix loading unit, which loads the affine transformation associated with the object. This affine transformation can be represented by a 4x3 matrix. These can be object space transformation matrices or matrices that transform into the normal space of a primitive object. After the matrix loading unit has stored the matrix in the transformation unit, the beams are sent from the beam unit through the transformation unit.
Nach der Transformation sind nun zwei Szenarien möglich. Zum einen kann es sich um ein Objekt handeln, das noch weitere Objekte beinhaltet. Ist dies der Fall, so wandern die Strahlen wieder zurück in die Traversierungs-Einheit und der transformierte Strahl wird in dem Objekt weiter traversiert. Handelt es sich jedoch um ein Primitives Objekt, so geht der Strahl direkt weiter in die Schnittpunktberechnungs-Einheit, die den Stahl mit dem Normobjekt schneidet. Die Schnittpunktberechnungs-Einheit kann wie zuvor beschrieben mehrere Normobjekte (Dreiecke, Kugeln usw.) unterstützen.After the transformation, two scenarios are now possible. On the one hand, it can be an object that contains other objects. If this is the case, the rays migrate back into the traversing unit and the transformed ray is traversed further in the object. However, if it is a primitive object, the beam goes directly to the intersection calculation unit, which cuts the steel with the standard object. The intersection calculation unit can support several standard objects (triangles, spheres, etc.) as described above.
Die berechneten Schnittpunkt-Daten werden in der Schnittpunkt-Einheit gesammelt. Die Schnittpunkt-Einheit liefert einen Rückkanal zur Traversierungs-Einheit, so dass diese erkennen kann, ob schon gültige Schnittpunkt-Daten vorhanden sind.The calculated intersection data is collected in the intersection unit. The intersection unit supplies a return channel to the traversing unit, so that it can recognize whether there are already valid intersection data.
Die Traversierungs-Einheit, Listen-Einheit und Matrix-Lade-Einheit sind die einzigen Einheiten der Ray-Casting-Pipeline, die auf externen Speicher zugreifen. Die Traversierungs-Einheit greift auf die Beschleunigungsstruktur zu, die Listen-Einheit auf Listen von Objektadressen und die Matrix-Lade-Einheit auf affine Transformationen in Form von Matrizen. Alle drei Einheiten sind über einen eigenen Cache mit dem Hauptspeicher verbunden, um die nötige Speicherbandbreite zu gewährleisten.The traversing unit, list unit and matrix loading unit are the only units of the ray casting pipeline that access external memory. The traversing unit accesses the acceleration structure, the list unit on lists of object addresses and the matrix loading unit on affine transformations in the form of matrices. All three units are connected to the main memory via their own cache in order to ensure the necessary memory bandwidth.
Eine vereinfachte Version der Ray-Casting-Pipeline ist in Figur 12 dargestellt, wobei nur die wichtigsten Einheiten abgebildet sind: die Traversierungs-Einheit, welche die Strahlen durch die Beschleunigungsstruktur traversiert, die Listen-Einheit, welche die Listen bearbeitet, die Transformations-Einheit, welche die geladene Transformation auf die Strahlen anwendet, und die Schnittpunktberechnungs-Einheit, die den transformierten Strahl mit dem Norm-Objekt schneidet.A simplified version of the ray casting pipeline is shown in FIG. 12, only the most important units being shown: the traversing unit, which traverses the beams through the acceleration structure, the list unit, which processes the lists, the transformation unit which applies the loaded transformation to the rays and the intersection calculation unit which intersects the transformed ray with the norm object.
Die Ray-Casting-Pipeline ist entsprechend der Darstellung der Figur 3 in eine geeignete Ray-Tracing Architektur eingebettet. Die Abbildung zeigt 4 Ray-Casting-Pipeline Einheiten mit ihren jeweils 3 Caches. Es sind hier jeweils 2 Einheiten mit einer Shading Einheit verbunden. Diese Shading Einheiten verwenden die Ray-Casting-Pipeline Einheiten, um die Farben der Pixel des Bildes zu berechnen. Hierzu schießt die Shading Einheit
Primärstrahlen, verarbeitet die Auftreffinformationen, die die Ray-Casting-Pipeline zurückliefert, und schießt Sekundärstrahlen beispielsweise zu Lichtquellen. Bei den Shadingeinheiten kann es sich um festverdrahtete Hardware oder um die später beschriebenen programmierbaren Ray-Tracing Prozessoren handeln.As shown in FIG. 3, the ray casting pipeline is embedded in a suitable ray tracing architecture. The figure shows 4 ray casting pipeline units, each with 3 caches. There are 2 units each connected to a shading unit. These shading units use the ray casting pipeline units to calculate the colors of the pixels of the image. The shading unit shoots for this Primary rays, processes the impact information that the ray casting pipeline returns, and shoots secondary rays, for example, into light sources. The shading units can be hard-wired hardware or the programmable ray tracing processors described later.
Die Shading Einheiten besitzen einen Kanal zur Transformationseinheit der Ray-Casting- Pipeline. Dieser wird verwendet, um Kameramatrizen und Matrizen für Sekundärstrahlen zu laden und dadurch den Rechenaufwand für die Shading Einheit zu minimieren. Es ist vorteilhaft, wenn die Shading Einheiten jeweils einen getrennten Textur Cache und Shading Cache besitzen. Der Shading Cache enthält Shadinginformationen zu der Geometrie der Szene wie zum Beispiel Farben und Materialdaten. Der Texturcache ist mit dem Texturspeicher verbunden und ermöglicht den Shading Einheiten Zugriff auf Texturen. Es ist vorteilhaft, wenn jede Shading Einheit ihren eigenen lokalen Frame-Buffer besitzt, auf dem sie die Farben und Helligkeitswerte der gerade bearbeiteten / berechneten Pixel ablegt. Des weitern ist es von Vorteil, falls ein Z-Buffer vorhanden ist, da dieser für die nachfolgend beschriebene Anbindung an die Standard- Rasterisierungshardware benötigt wird.The shading units have a channel to the transformation unit of the ray casting pipeline. This is used to load camera matrices and matrices for secondary beams, thereby minimizing the computing effort for the shading unit. It is advantageous if the shading units each have a separate texture cache and shading cache. The shading cache contains shading information about the geometry of the scene, such as colors and material data. The texture cache is connected to the texture memory and gives the shading units access to textures. It is advantageous if each shading unit has its own local frame buffer, on which it stores the colors and brightness values of the pixels just processed / calculated. Furthermore, it is advantageous if a Z-buffer is available, since it is required for the connection to the standard rasterization hardware described below.
Ist die Farbe eines Pixels von der Shading Einheit vollständig berechnet, so kann diese Farbe über die optionale Tone-Mapping-Einheit in den globalen Frame-Buffer geschrieben werden. Die Tone-Mapping-Einheit wendet eine einfache Funktion auf die Farbe an, um diese in dem 24 Bit RGB Raum abzubilden. Auch die geometrischen Tiefenwerte (Z- Werte), die im optionalen lokalen Z-Buffer gespeichert sind, können nun in den optionalen globalen Z-Buffer übertragen werden.Once the color of a pixel has been fully calculated by the shading unit, this color can be written to the global frame buffer using the optional tone mapping unit. The tone mapping unit applies a simple function to the color to map it in the 24 bit RGB space. The geometric depth values (Z values), which are stored in the optional local Z buffer, can now also be transferred to the optional global Z buffer.
Die Farbe bzw. der neue Z-Wert werden jedoch nur dann in den Frame-Buffer bzw. Z-Buffer geschrieben, wenn der zuvor im Z-Buffer vorhandene Z-Wert größer ist. Hierdurch ist sichergestellt, dass nur dann Pixel geschrieben werden, wenn sie geometrisch vor bereits von der Rasterisierungshardware oder anderen Ray-Tracing Passes berechneten Werten liegen. So ist es möglich, die Ray-Tracing Hardware mit einer Standard Rasterisierungshardware zu kombinieren, die auf dem gleichen Frame- Buffer bzw. Z-Buffer arbeitet, der hierbei auch die Schnittstelle zu dieser Standard Rasterisierungshardware darstellt.However, the color or the new Z value are only written to the frame buffer or Z buffer if the Z value previously present in the Z buffer is larger. This ensures that pixels are only written if they are geometrically in front of values already calculated by the rasterization hardware or other ray tracing passes. It is thus possible to combine the ray tracing hardware with a standard rasterization hardware that works on the same frame buffer or Z-buffer, which also represents the interface to this standard rasterization hardware.
Zur weiteren Erhöhung der Systemleistung können optional noch weitere Shading- Einheiten mit den zugehörigen Ray-Casting-Pipelines und Caches parallel geschaltet werden. Der leistungssteigemde Effekt liegt hierbei in der Verbreiterung der Daten- und Verarbeitungsstruktur.
Es ist nicht zu erwarten, dass die gesamte Szene in den lokalen Hauptspeicher eines Ray- Tracing Chips passt. Um dieses Problem zu lösen, kann der lokale Hauptspeicher als ein großer Cache verwendet werden, der größere Blöcke der Szene cached. Die eigentliche Szene befindet sich an anderer Stelle und wird über DMA bei Bedarf nachgeladen. Dieses Verfahren zur virtuellen Speicherbehandlung ermöglicht es, sehr große Szenen zu visualisieren, die nicht in den Hauptspeicher des Ray-Tracing Chips passen.To further increase the system performance, additional shading units can optionally be connected in parallel with the associated ray casting pipelines and caches. The performance-enhancing effect lies in the broadening of the data and processing structure. It is not to be expected that the entire scene will fit into the local main memory of a ray tracing chip. To solve this problem, local memory can be used as a large cache that caches larger blocks of the scene. The actual scene is located elsewhere and is reloaded via DMA if necessary. This procedure for virtual memory treatment makes it possible to visualize very large scenes that do not fit into the main memory of the ray tracing chip.
Photon Mapping ist ein Standardverfahren, indem virtuelle Photonen von den Lichtquellen aus in die Szene geschossen und auf den Flächen der Szene angesammelt werden. Die Lichtverteilung der Szene kann somit simuliert werden. Dies gilt vor allem auch für Kaustiken. Werden Photonen geschossen, so wird eine Beschleunigungsstruktur über den Photonen aufgebaut, die beispielsweise ein k-d Baum sein kann. Nun kann ein Abbild dieser berechneten Photonenlichtverteilung erfolgen, indem die Szene mit standardmäßigen Ray-Tracing Verfahren visualisiert wird und an jedem Auftreffpunkt die dort eintreffende Lichtintensität derart in die Farbberechnung einfließt, dass die Energie aller in der Nähe dieses Punktes auftreffenden Photonen aufsummiert wird. Hierzu müssen alle benachbarten Photonen in der Beschleunigungsstruktur der Photonen gesucht werden. Diese Aufgabe kann von der Traversierungseinheit unterstützt werden, indem nicht an einem Strahl entlang, sondern ein Volumina traversiert wird. Auf diese Weise können alle benachbarten Photonen bearbeitet werden, indem beispielsweise ihre Energie aufsummiert wird.Photon mapping is a standard process in which virtual photons are shot into the scene from the light sources and accumulated on the surfaces of the scene. The light distribution of the scene can thus be simulated. This applies especially to caustics. If photons are shot, an acceleration structure is built up over the photons, which can be a k-d tree, for example. This calculated photon light distribution can now be reproduced by visualizing the scene using standard ray tracing methods and by including the light intensity arriving at each point of impact in the color calculation in such a way that the energy of all the photons hitting in the vicinity of this point is added up. For this purpose, all neighboring photons must be searched for in the acceleration structure of the photons. This task can be supported by the traversing unit by traversing a volume rather than along a beam. In this way, all neighboring photons can be processed, for example by summing up their energy.
In der Regel arbeiten Ray-Tracing Verfahren mit unendlich schmalen Strahlen, was zu Samplingartefakten (Aliasing) führt. Eine viel bessere Approximation ergibt sich durch die Verwendung von Strahlkegeln anstelle von Strahlen. Das Licht, das ein Pixel der Kamera beleuchtet, kommt nicht nur aus einer diskreten Richtung, sondern aus einer Art Pyramide, die durch einen Kegel sehr gut approximiert werden kann. Das Traversieren dieses Raumvoluminas von vorne nach hinten, beschrieben durch einen Strahlkegel oder eine Strahlpyramide, kann ebenfalls von der Traversierungseinheit als Spezialfunktion durchgeführt werden. Figur 6 zeigt eine zweidimensionale Abbildung eines Strahlkegels.As a rule, ray tracing methods work with infinitely narrow rays, which leads to sampling artifacts (aliasing). A much better approximation results from using beam cones instead of beams. The light that illuminates a pixel of the camera comes not only from a discrete direction, but from a kind of pyramid that can be approximated very well by a cone. Traversing this room volume from front to back, described by a beam cone or a beam pyramid, can also be carried out by the traversing unit as a special function. Figure 6 shows a two-dimensional image of a beam cone.
Die Signalaufbereitung zur Ansteuerung des Displays und die Timinggenerierung für das Display bzw. den Monitor kann in bekannter Art durch die optionale Rasterisierungshardware erfolgen oder durch geeignete funktionale Einheiten umgesetzt werden falls vorteilhaft für die gewünschte Anwendung. So können die Grundfunktionen der Standard Rasterisierungshardware mit den hardwareimplementierten Ray-Tracing
Verfahren und Funktionen zu einer sehr leistungsfähigen Echtzeit Hardwarearchitektur verbunden werden.The signal processing for controlling the display and the timing generation for the display or the monitor can be carried out in a known manner by means of the optional rasterization hardware or can be implemented by suitable functional units if advantageous for the desired application. So the basic functions of the standard rasterization hardware with the hardware-implemented ray tracing Procedures and functions can be combined to a very powerful real-time hardware architecture.
Eine zweite, weitere beispielhafte Ausführungsform der Erfindung basiert auf der Gestaltung und Anwendung von frei programmierbaren Ray-Tracing CPUs oder Ray- Tracing Prozessoren, die programmgesteuert die erfindungsgemäß beschriebenen, speziellen Ray-Tracing Funktionen und Verfahren ausführen. Hierbei werden durch entsprechende Logik- und Funktionsparallelität jeweils nur wenige, vorzugsweise ein oder zwei CPU Taktzyklen, zur Abarbeitung der Einzelfunktion benötigt.A second, further exemplary embodiment of the invention is based on the design and application of freely programmable ray tracing CPUs or ray tracing processors, which program-controlled execute the special ray tracing functions and methods described according to the invention. Due to the corresponding logic and function parallelism, only a few, preferably one or two CPU clock cycles are required to process the individual function.
Soweit interne Algorithmen, Verfahren und Funktionsabläufe der Ray-Tracing Prozessoren, beschrieben werden, sind diese mittels einer Hardwarebeschreibungssprache, zum Beispiel HDL, VHDL, oder JHDL zu erstellen und auf die entsprechende Hardware zu übertragen. Die Hardwareimplementierung der Ray-Tracing Prozessoren mit den implementierten Verfahren und Funktionen kann beispielsweise in einem freiprogrammierbaren Logikbaustein FPGA, in ASIC Technologie, in der Kombination von digitalen Signalprozessoren mit FPGA / ASIC oder in einem festverdrahteten Spezial Chip erfolgen.Insofar as internal algorithms, procedures and functional sequences of the ray tracing processors are described, they must be created using a hardware description language, for example HDL, VHDL or JHDL and transferred to the corresponding hardware. The hardware implementation of the ray tracing processors with the implemented methods and functions can take place, for example, in a freely programmable logic module FPGA, in ASIC technology, in the combination of digital signal processors with FPGA / ASIC or in a hard-wired special chip.
Dies bedeutet, dass entsprechende Logikeinheiten und hardwaremäßig realisierte Arithmetikeinheiten zu gestalten sind, deren Einzelfunktionen programmgesteuert abgerufen werden können. Abhängig von der Komplexität der eingesetzten Hardwaretechnologie können pro Chip eine oder mehrere Ray-Tracing Prozessoren, mit oder ohne weiteren Logikfunktionen realisiert werden.This means that appropriate logic units and hardware-implemented arithmetic units are to be designed, the individual functions of which can be called up under program control. Depending on the complexity of the hardware technology used, one or more ray-tracing processors can be implemented per chip, with or without additional logic functions.
Ray-Tracing Prozessoren sind voll programmierbare Recheneinheiten, die auf die Ausführung von Vektorarithmetikbefehlen und speziellen Ray-Tracing Befehlen wie "Traversieren" und "Erstellen von Beschleunigungsstrukturen" ausgelegt sind. Hierbei kann eine Auslegung unter Hinzunahme von Funktionseinheiten erfolgen oder aber auch mit bereits vorhandenen Funktionseinheiten unter Hinzunahme von ggf. wenigen Logikbausteinen. Beispielsweise kann das Traversieren durch spezielle Funktionseinheiten erfolgen oder durch eine Erweiterung der vorhandenen arithmetischen Funktionseinheiten um wenige logische Funktionseinheiten.Ray tracing processors are fully programmable computing units that are designed to execute vector arithmetic instructions and special ray tracing instructions such as "traversing" and "creating acceleration structures". This can be done with the addition of functional units or with existing functional units with the addition of possibly a few logic modules. For example, traversing can be carried out using special functional units or by expanding the existing arithmetic functional units by a few logical functional units.
Wie in Figur 11 zu sehen ist werden mehrere der in Figur 5 dargestellten Ray-Tracing Prozessoren parallel geschaltet. Das Speicherinterface wird von einer Cache-Hierarchie gebildet, welche die nötige Speicherbandbreite bereitstellt. Dieses Vorgehen ist wegen der starken Kohärenz benachbarter Strahlen effizient möglich. Bei dem Ray-Tracing Prozessor Konzept bearbeitet jeder Ray-Tracing Prozessor entweder genau ein Pixel des
Bildes oder ein Paket von mehreren Pixeln. Hierbei entspricht die Berechnung jedes einzelnen Pixels einem Berechnungsthreads. Mehrere dieser Threads werden zu einem Paket gebündelt und als ganzes synchronisiert abgearbeitet. Synchron abgearbeitete Threads zeichnen sich dadurch aus, dass diese immer gemeinsam die gleiche Instruktion ausführen. Dies ermöglicht die Erstellung effizienter Hardware und die Durchführung von Speicheranfragen pro ganzem Paket und nicht einzeln für jeden Thread. Vor allem diese Reduktion der Speicheranfragen ist ein wesentlicher Vorteil der Bearbeitung von Paketen von Threads.As can be seen in FIG. 11, several of the ray tracing processors shown in FIG. 5 are connected in parallel. The memory interface is formed by a cache hierarchy, which provides the necessary memory bandwidth. This approach is efficient because of the strong coherence of neighboring rays. With the ray tracing processor concept, each ray tracing processor processes either exactly one pixel of the Image or a package of several pixels. The calculation of each individual pixel corresponds to a calculation thread. Several of these threads are bundled into a package and processed as a whole, synchronized. Threads processed synchronously are characterized by the fact that they always execute the same instruction together. This enables the creation of efficient hardware and the execution of memory requests per whole package and not individually for each thread. Above all, this reduction in memory requests is a major advantage of processing packets of threads.
Der Thread Generator von Figur 11 erstellt Threads, die auf den Ray-Tracing Prozessoren ausgeführt werden. Der Thread Generator kann auch von den Ray-Tracing Prozessoren programmiert werden. Spezielle Funktionen zum Abtasten der Pixel des Bilder auf eine Cache-kohärente Art und Weise (zum Beispiel Hubert Kurve) erlaubt es, die Ray-Tracing Prozessoren optimal mit kohärenten Threads zu versorgen. Dies reduziert die benötigte Speicherbandbreite. Der Thread Generator hat auch Zugriff über ein DMA-Interface auf den Hauptspeicher. Es können also auch die Startwerte für die einzelnen Threads in einem vorherigen Bearbeitungsschritt erstellt und in den Speicher geschrieben werden, um später aus diesen Daten wieder neue Threads zu generieren.The thread generator of FIG. 11 creates threads that are executed on the ray tracing processors. The thread generator can also be programmed by the ray tracing processors. Special functions for scanning the pixels of the image in a cache-coherent manner (for example Hubert curve) allow the ray tracing processors to be optimally supplied with coherent threads. This reduces the memory bandwidth required. The thread generator also has access to the main memory via a DMA interface. The start values for the individual threads can also be created in a previous processing step and written to the memory in order to later generate new threads from this data.
Das Bearbeiten eines Pixels geschieht durch ein Softwareprogramm, das auf dem Ray- Tracing Prozessor läuft. Dieses Softwareprogramm beschreibt einen rekursiven Verfahrensablauf zum Berechnen des Farbwertes eines Pixels, selbst wenn die Hardware auf Paketen von Strahlen arbeitet. Das Paketmanagement ist also transparent zum Programmiermodell.A pixel is processed by a software program that runs on the ray tracing processor. This software program describes a recursive procedure for calculating the color value of a pixel, even if the hardware works on packets of rays. Package management is therefore transparent to the programming model.
Figur 5 zeigt einen beispielhaften Aufbau eines Ray-Tracing Prozessors. Zu sehen ist ein Standard-Prozessorkern (RISC Kern), dem zwei SpezialCoprozessoren parallel geschaltet sind. Die Coprozessoren besitzen jeweils ihre eigenen Register. Es ist jedoch auch möglich, durch Spezialbefehle diese Registerinhalte von einem Coprozessor in einen anderen zu überführen. Der Traversierungs-Kern ist ein spezieller Coprozessor, der Strahlen effizient durch eine Beschleunigungsstruktur traversieren kann. Hierzu benötigt er ein spezielles Speicherinterface zu den Knoten der Beschleunigungsstruktur (Knoten- Cache). Der Vektor Arithmetik Kern ist ein SpezialCoprozessor, der effizient Operationen im 3D Raum durchführen kann. Die von jeder Ray-Tracing Software benötigten Vektoradditionen, Skalarmultiplikationen, Kreuzprodukte und Vektorprodukte können mittels dieser Einheit schnell berechnet werden. Die Vektorarithmetikeinheit benötigt Zugriff auf einen Spezialcache, der es ermöglicht, ganze Vektoren in einem Takt zu laden.
Die Semantik des Traversierungsbefehls könnte folgendermaßen aussehen. Die Ray- Tracing CPU beschreibt spezielle Register mit dem Ursprung und der Richtung des Strahles und der Adresse der Beschleunigungsstruktur, die traversiert werden soll. Nun wird ein spezieller Befehl aufgerufen, der eine spezielle Traversierungseinheit startet. Diese Einheit traversiert die Beschleunigungsstruktur und sendet alle Knoten, die Objekte enthalten, zu einer Listeneinheit, die einen Mailboxingmechanismus enthalten kann, der auch schon in der ersten beispielhaften Ausführungsform der Erfindung beschrieben wurde. Für jedes Objekt wird nun ein kleines Programm auf der CPU ausgeführt, das den Strahl mit diesem Objekt schneidet. Ist ein gültiger Schnittpunkt des Strahles mit einem Objekt gefunden, so wird zu dem Programm zurückgekehrt welches den Strahl geschossen hatte.FIG. 5 shows an exemplary structure of a ray tracing processor. You can see a standard processor core (RISC core) with two special coprocessors connected in parallel. The coprocessors each have their own registers. However, it is also possible to transfer these register contents from one coprocessor to another using special instructions. The traversing core is a special coprocessor that can efficiently traverse beams through an acceleration structure. For this he needs a special memory interface to the nodes of the acceleration structure (node cache). The vector arithmetic core is a special coprocessor that can efficiently perform operations in 3D space. The vector additions, scalar multiplications, cross products and vector products required by each ray tracing software can be calculated quickly using this unit. The vector arithmetic unit needs access to a special cache which enables whole vectors to be loaded in one cycle. The semantics of the traversal command could look like this. The ray tracing CPU describes special registers with the origin and the direction of the beam and the address of the acceleration structure that is to be traversed. Now a special command is called that starts a special traversing unit. This unit traverses the acceleration structure and sends all nodes that contain objects to a list unit, which can contain a mailboxing mechanism, which was also described in the first exemplary embodiment of the invention. A small program is now executed on the CPU for each object, which cuts the beam with this object. If a valid point of intersection of the beam with an object is found, the program returns to the program that shot the beam.
Die in dem Ray-Tracing Prozessor hardwaremäßig implementierten Einzelbefehle oder Logikfunktionen beinhalten die gleichen Algorithmen, die schon bei der festverdrahteten ersten Ausbildungsform der Erfindung beschrieben sind. Ergänzend hierzu kann dieser Befehlssatz jedoch um weitere festverdrahtete Befehle und Funktionen ergänzt werden, die wiederum programmgesteuert zu aktivieren sind. Durch spezielle Traversierungs- Operationen, durch Vektorarithmetik, sowie durch die parallele Abarbeitung mehrer Threads auf einem Ray-Tracing Prozessor wird die für Echtzeitanwendung erforderliche Rechenleistung bereitgestellt und gleichzeitig werden die Auswirkungen der Speicherlatenzen (Wartezeiten auf Speicheranfragen) auf die Systemgeschwindigkeit minimiert oder sogar irrelevant.The individual instructions or logic functions implemented in hardware in the ray tracing processor contain the same algorithms that have already been described in the hard-wired first embodiment of the invention. In addition to this, this command set can be supplemented by further hard-wired commands and functions, which in turn are to be activated under program control. Special traversing operations, vector arithmetic, and the parallel processing of multiple threads on a ray tracing processor provide the computing power required for real-time use and at the same time the effects of memory latencies (waiting times for memory requests) on system speed are minimized or even irrelevant.
Dadurch, dass die - RTPU programmgesteuert dazu verwandt werden kann, rekursiv Sokundärstrαhlon durch die Szene zu schießen, wird das Programmiermodell im Vergleich zur festverdrahteten Hardware erheblich vereinfacht.The fact that the - RTPU can be used in a program-controlled manner to recursively shoot the secondary beam through the scene, considerably simplifies the programming model compared to the hard-wired hardware.
Ist die Farbe des Pixels vollständig berechnet, kann diese in den Frame-Buffer geschrieben werden. Gegebenenfalls kann zusätzlich die Distanz in den Z-Buffer geschrieben werden. Hierdurch ist eine Anbindung an Rasterisierungshardware und die entsprechende Darstellung auf einem Display möglich.Once the color of the pixel has been fully calculated, it can be written into the frame buffer. If necessary, the distance can also be written to the Z buffer. This enables a connection to rasterization hardware and the corresponding representation on a display.
Anspruch 10 beschreibt die Verwendung einer zusätzlichen raumaufteilenden Datenstruktur, die keine geometrischen Objekte speichert oder referenziert, sondern Raumeinflüsse oder materialverändernde Parameter enthält. Solche Raumeinflüsse können beispielsweise Nebel, Dunst, Staubpartikel oder heißer Rauch sein, wobei beispielsweise heißer Rauch auch eine Veränderung der durch das Volumen des Rauchs sichtbaren Szene zur Folge haben kann. Weitere Raumeinflüsse sind Lichtquellen oder
materialverändernde Auren wie sie beispielsweise in der Darstellung von Fantasiewesen verwendet werden können. Hierbei erlaubt die Verwendung der raumaufteilenden Datenstruktur den Berechnungsaufwand erheblich zu reduzieren, da nur Einflüsse berücksichtigt werden müssen, die räumlich so gelegen sind, dass sie einen Einfluss haben können.Claim 10 describes the use of an additional space-dividing data structure that does not store or reference geometric objects, but rather contains spatial influences or material-changing parameters. Such room influences can be, for example, fog, haze, dust particles or hot smoke, whereby hot smoke, for example, can also result in a change in the scene visible through the volume of the smoke. Other room influences are light sources or material-changing auras as they can be used in the representation of fantasy creatures, for example. Here, the use of the space-dividing data structure allows the computational effort to be reduced considerably, since only influences that are spatially located in such a way that they can have an influence need to be taken into account.
Anspruch 11 beschreibt eine Erweiterung, die es ermöglicht, dreidimensionale Szenen zu verarbeiten, die nicht bzw. nicht ausschließlich aus Dreiecken aufgebaut sind und die bei Bedarf andere geometrische Primitive in Dreiecke oder eine einfach zu verarbeitende Zwischendarstellung überführt. Hierbei wird die zusätzliche Funktionalität dadurch erreicht, dass die Hardware entweder um Funktionseinheiten erweitert wird oder vorhandene Einheiten die Funktionalität umsetzen.Claim 11 describes an extension that makes it possible to process three-dimensional scenes that are not or not exclusively made up of triangles and that, if necessary, convert other geometric primitives into triangles or an easy-to-process intermediate representation. The additional functionality is achieved in that the hardware is either expanded by functional units or existing units implement the functionality.
Anspruch 12 beschreibt eine Erweiterung, die es ermöglicht, pro Strahl nicht nur den nächstgelegenen, sondern zusätzlich weitere Objekt-Strahl-Schnittpunkte als Ergebnis einer Strahlverarbeitung zu berechnen. Hierbei ist es vorteilhaft, wenn die Ergebnisse nach der Entfernung vom Strahlursprung sortiert sind. Die maximale Anzahl der Schnittpunkte pro Ergebnis kann als Konstante festgelegt werden oder pro Strahl in Abhängigkeit von Parametern der geschnittenen Objekte erfolgen. Diese Technik kann verwendet werden, um Strahlen durch transparente Objekte effizienter zu berechnen.Claim 12 describes an extension that makes it possible to calculate not only the closest, but also additional object-beam intersection points per beam as a result of beam processing. It is advantageous here if the results are sorted according to the distance from the beam origin. The maximum number of intersections per result can be set as a constant or per beam depending on parameters of the cut objects. This technique can be used to calculate rays through transparent objects more efficiently.
Anspruch 13 beschreibt eine Erweiterung, die mit zusätzlichen und/oder den vorhandenen Funktionseinheiten zählen kann, wie oft ein bestimmtes Element in den Berechnungen eines Bildes verwendet wurde. Hierbei können die zu zählenden Elemente sehr unterschiedlich sein und eine mögliche Klassifizierung der Elemente könnte über die Adresse im Speicher oder die ID eines Elementes erfolgen. Zu diesen Elementen gehören:Claim 13 describes an extension that can count with additional and / or the existing functional units, how often a certain element was used in the calculations of an image. The elements to be counted can be very different and the elements could be classified using the address in the memory or the ID of an element. These elements include:
dynamische und geometrische Objekte, Teile oder vollständige Materialbeschreibungen, Elemente oder Teilgruppen einer Raumbeschreibungsdatenstruktur, Programme oder Programmfunktionen, einzelne Speicherzellen und ganze Speicherseiten oder -bereiche.dynamic and geometric objects, parts or complete material descriptions, elements or subgroups of a room description data structure, programs or program functions, individual memory cells and entire memory pages or areas.
Anspruch 14 beschreibt eine Erweiterung der Funktionalität zum Berechnen der Raumbeschreibungsdatenstrukturen zu Teilen oder vollständigen dreidimensionalen Szenen, wobei zusätzliche Parameter pro dynamischem Objekt oder dynamischem Teilobjekt oder geometrischem Objekt einen Einfluss auf die Berechnungsweise der Raumbeschreibungsdatenstruktur haben. Solche Einflüsse können beispielsweise sein, dass ein Objekt spezifiziert, dass es in bestimmten Raumvolumina keine geometrischen
Objekte besitzt. Dies erlaubt es, die Raumbeschreibungsdatenstruktur effizienter zu berechnen und zusätzlich den Berechnungsaufwand pro Bild weiter zu reduzieren.Claim 14 describes an extension of the functionality for calculating the spatial description data structures to parts or complete three-dimensional scenes, additional parameters per dynamic object or dynamic partial object or geometric object having an influence on the calculation method of the spatial description data structure. Such influences can be, for example, that an object specifies that it does not have any geometrical dimensions in certain spatial volumes Owns objects. This allows the space description data structure to be calculated more efficiently and the calculation effort per image to be further reduced.
Beschreibung der ZeichnungenDescription of the drawings
Figur 1 zeigt, wie aus mehreren Stufen von Objekten ein Baum erstellt werden kann. Zunächst wird als Objekt 101 der Stufe 1 ein Blatt modelliert. Dieses Blatt 101 wird nun mehrfach instantiiert und an einen Ast 102 gesetzt, wodurch ein weiteres Objekt entsteht, jedoch jetzt ein Objekt der Stufe 2. Diese kleinen Äste 102 können nun wieder mehrfach instantiiert werden zu einem Baum 103 als Objekt der Stufe 3.Figure 1 shows how a tree can be created from several levels of objects. First, a leaf is modeled as object 101 of stage 1. This leaf 101 is now instantiated several times and placed on a branch 102, which creates a further object, but now an object of level 2. These small branches 102 can now be instantiated several times again to a tree 103 as an object of level 3.
Figur 2 zeigt die Ray-Casting-Pipeline 200 mit den wichtigsten Datenpfaden, sowie der Schnittstelle zu den Caches. Der Pfeil 201 geht zur Shading-Einheit, der Pfeil 202 kommt von der Shading-Einheit. Weiterhin bedeuten:FIG. 2 shows the ray casting pipeline 200 with the most important data paths and the interface to the caches. Arrow 201 goes to the shading unit, arrow 202 comes from the shading unit. Furthermore mean:
203 Traversierungs-Einheit 204 Listen-Einheit welche eine Mailbox enthält 205 Matrix-Lade-Einheit 206 Strahl-Einheit 207 Transformations-Einheit 208 Schnittpunktberechnungs-Einheit 209 Schnittpunkt-Einheit 210 Knoten Cache 211 Listen Cache 212 Matrix Cache203 traversing unit 204 list unit which contains a mailbox 205 matrix loading unit 206 beam unit 207 transformation unit 208 intersection calculation unit 209 intersection unit 210 node cache 211 list cache 212 matrix cache
Figur 3 zeigt das Top-Level Diagramm einer beispielhaften Implementierung der Erfindung. Die 4 Ray-Casting-Pipelines (RCP) sind über eine Cache-Hierarchie mit den getrennten Speichern für Knoten, Listen und Matrizen verbunden. In diesem Beispieldesign sind je zwei RCP's mit einer Shadingeinheit verbunden, die Zugriff auf einen lokalen Frame-Buffer und Z-Buffer hat. Über diese werden Farbwerte mittels einer Tone-Mapping-Einheit in einen globalen Frame-Buffer geschrieben und Tiefenwerte direkt in einen globalen Z-Buffer geschickt. An diesen Z-Buffer und Frame-Buffer kann eine dem Stand der Technik entsprechende Rasterisierungshardware (Rasterisierungs Pipeline) angeschlossen werden.Figure 3 shows the top level diagram of an exemplary implementation of the invention. The 4 ray casting pipelines (RCP) are connected via a cache hierarchy to the separate memories for nodes, lists and matrices. In this example design, two RCPs are connected to a shading unit, which has access to a local frame buffer and Z buffer. These are used to write color values to a global frame buffer using a tone mapping unit and to send depth values directly to a global Z buffer. State-of-the-art rasterization hardware (rasterization pipeline) can be connected to this Z-buffer and frame buffer.
Dabei bedeuten:Mean:
301 Rasterisierungshardware301 rasterization hardware
302 Frame Buffer302 frame buffer
303 Video Out303 Video Out
304 Tone Mapping Einheit304 tone mapping unit
305 Z-Buffer305 Z buffer
306 Frame Buffer 1306 frame buffer 1
307 Z-Buffer 1
308 Textur-Cache 1 309 Shading Cache 1 310 Shading Einheit 1 311 Knoten Cache 1 312 Listen Cache 1 313 Matrix Cache 1 314 RCP 1 315 Knoten Cache 2 316 Listen Cache 2307 Z-buffer 1 308 Texture cache 1 309 Shading cache 1 310 Shading unit 1 311 node cache 1 312 list cache 1 313 matrix cache 1 314 RCP 1 315 node cache 2 316 list cache 2
317 Matrix Cache 2317 Matrix Cache 2
318 RCP 2318 RCP 2
319 Frame Buffer 2319 frame buffer 2
320 Z-Buffer 2320 Z buffer 2
321 Textur-Cache 2321 texture cache 2
322 Shading Cache 2322 Shading Cache 2
323 Shading Einheit 2323 shading unit 2
324 Knoten Cache 3324 node cache 3
325 Listen Cache 3325 list cache 3
326 Matrix Cache 3326 Matrix Cache 3
327 RCP 3327 RCP 3
328 Knoten Cache 4328 node cache 4
329 Listen Cache 4329 Listen Cache 4
330 Matrix Cache 4330 matrix cache 4
331 RCP 4331 RCP 4
Figur 4 zeigt die Cache-Infrastruktur, welche die nötige interne Speicherbandbreite im Chip bereitstellt. In der Abbildung handelt es sich um einen binären n-stufigen Cache, es sind jedoch auch andere hierarchische Strukturen denkbar.Figure 4 shows the cache infrastructure, which provides the necessary internal memory bandwidth in the chip. The figure shows a binary n-level cache, but other hierarchical structures are also conceivable.
Dabei bedeuten:Mean:
401 Knoten Cache 1401 node cache 1
402 Knoten Cache 2402 nodes cache 2
403 Knoten Cache 3403 node cache 3
404 Knoten Cache 4404 node cache 4
405 Knoten Cache 5405 node cache 5
406 Knoten Cache 6406 node cache 6
407 Knoten Cache 7407 node cache 7
408 Knoten Speicher408 nodes of storage
409 Listen Cache 1409 listen cache 1
410 Listen Cache 2410 listen cache 2
411 Listen Cache 3411 list cache 3
412 Listen Cache 4412 list cache 4
413 Listen Cache 5413 list cache 5
414 Listen Cache 6414 list cache 6
415 Listen Cache 7415 list cache 7
416 Listen Speicher416 lists of memory
417 Matrix Cache 1417 Matrix cache 1
418 Matrix Cache 2418 matrix cache 2
419 Matrix Cache 3419 matrix cache 3
420 Matrix Cache 4420 matrix cache 4
421 Matrix Cache 5421 Matrix Cache 5
422 Matrix Cache 6
423 Matrix Cache 7422 Matrix cache 6 423 Matrix Cache 7
424 Matrix Speicher424 matrix memory
425 Texture Cache 1425 Texture Cache 1
426 Texture Cache 2426 Texture Cache 2
427 Texture Speicher427 texture memory
428 Shading Cache 1428 Shading Cache 1
429 Shading Cache 2429 Shading Cache 2
430 Shading Cache 3430 shading cache 3
431 Shading Speicher431 shading memory
Figur 5 zeigt die beispielhafte Ausführungsform einer Ray-Tracing CPU. Dabei haben die Blöcke folgende Bedeutung:FIG. 5 shows the exemplary embodiment of a ray tracing CPU. The blocks have the following meaning:
501 Instruktion Laden 502 Befehlsspeicher 503 RISC Kern 504 Cache 505 Traversierungs Kern 506 Knoten Cache 507 Vektor Arithmetik Kern 508 Vektor Cache501 load instruction 502 instruction memory 503 RISC core 504 cache 505 traversal core 506 node cache 507 vector arithmetic core 508 vector cache
Figur 6 zeigt ein Beispiel der vereinfachten Geometrie in den Octreeknoten. Dabei ist mit der Bezugsziffer 601 der Strahlkegel bezeichnet und mit der Bezugsziffer 602 eine "Vereinfachte Geomtrie".Figure 6 shows an example of the simplified geometry in the octre nodes. Reference number 601 denotes the beam cone and reference number 602 a "simplified geometry".
Figur 7 zeigt ein Beispiel der regelmäßigen Grid Beschleunigungsstruktur an einer einfachen Szene. Der Raum ist der Einfachheit halber nur in 2D gezeichnet. Mit der Bezugsziffer 701 ist der Strahl bezeichnet.Figure 7 shows an example of the regular grid acceleration structure on a simple scene. For the sake of simplicity, the room is only drawn in 2D. The beam is designated by the reference number 701.
Figur 8 zeigt ein Beispiel der k-D Baum Beschleunigungsstruktur an einer einfachen Szene. Der Raum ist der Einfachheit halber nur in 2D gezeichnet. Mit der Bezugsziffer 801 ist der Strahl bezeichnet.Figure 8 shows an example of the k-D tree acceleration structure on a simple scene. For the sake of simplicity, the room is only drawn in 2D. The beam is designated by reference number 801.
Figur 9 zeigt ein Beispiel der Octree Beschleunigungsstruktur an einer einfachen Szene. Der Raum ist der Einfachheit halber nur in 2D gezeichnet. Mit der Bezugsziffer 901 ist der Strahl bezeichnet.Figure 9 shows an example of the octree acceleration structure on a simple scene. For the sake of simplicity, the room is only drawn in 2D. The beam is designated by the reference number 901.
Figur 10 zeigt die Dreieckstransformation aus dem Globalen Raum in den Norm-Dreiecks Raum. Es ist ein Strahl 1001 zu sehen sowie ein Dreieck 1002. Durch eine affine Transformation, die durch den Pfeil 1003 repräsentiert wird, entsteht ein transformierter Strahl 1004 sowie ein Normdreieck 1005. Der Globale Raum wird durch das linke Koordinatensystem repräsentiert und der Norm-Dreiecksraum durch das rechte Koordinatensystem.
Figur 11 zeigt eine beispielhafte Ausführungsform der Erfindung basierend auf speziellen Ray-Tracing Prozessoren. Dabei haben die Blöcke folgende Bedeutung:FIG. 10 shows the triangular transformation from the global space into the standard triangular space. A ray 1001 can be seen and a triangle 1002. An affine transformation, which is represented by the arrow 1003, results in a transformed ray 1004 and a standard triangle 1005. The global space is represented by the left coordinate system and the standard triangle space by the right coordinate system. FIG. 11 shows an exemplary embodiment of the invention based on special ray tracing processors. The blocks have the following meaning:
1101: Rasterisierungshardware1101: Rasterization hardware
1102: Thread Generator1102: Thread generator
1103: Z-Buffer / Frame Buffer1103: Z buffer / frame buffer
1104: Video - Out1104: Video Out
1105: Ray-Tracing Prozessor 11105: Ray tracing processor 1
1106: Ray-Tracing Prozessor 21106: Ray tracing processor 2
1107: Ray-Tracing Prozessor 31107: Ray tracing processor 3
1108: Ray-Tracing Prozessor 41108: Ray tracing processor 4
1109: Cache 11109: cache 1
1110: Cache 21110: cache 2
1111: Cache 31111: cache 3
1112: Cache 41112: cache 4
1113: Cache 51113: cache 5
1114: Cache 61114: cache 6
1115: Cache 71115: cache 7
1116: Hauptspeicher1116: main memory
Figur 12 zeigt eine vereinfachte Version der in Figur 2 gezeigten Ray-Casting-Pipeline. Dabei haben die Blöcke folgende Bedeutung:FIG. 12 shows a simplified version of the ray casting pipeline shown in FIG. 2. The blocks have the following meaning:
1201 Traversierungs-Einheit 1202 Knoten Cache 1203 Listen-Einheit 1204 Listen Cache 1205 Transformations-Einheit 1206 Matrix-Cache 1207 Schnittpunktberechnungs-Einheit1201 traversal unit 1202 node cache 1203 list unit 1204 list cache 1205 transformation unit 1206 matrix cache 1207 intersection calculation unit
Der Pfeil 1208 kommt von der Shading-EinheitArrow 1208 comes from the shading unit
Figur 13 zeigt einen einfachen Fall, in dem durch das Auswerten Vergleichen der Eckpunkte eines Dreiecks und der Eckpunkte einer Box entschieden werden kann, ob das Dreieck mit der Box überlappt oder nicht. Falls die X-Koordinaten des Dreiecks kleiner sind als die kleinste X-Koordinate der Box, so liegt das Dreieck außerhalb der Box. Das Dreieck ist mit der Bezugsziffer 1301 bezeichnet, die Box mit der Bezugsziffer 1302.
FIG. 13 shows a simple case in which, by evaluating the corner points of a triangle and the corner points of a box, it can be decided whether the triangle overlaps the box or not. If the X coordinates of the triangle are smaller than the smallest X coordinate of the box, the triangle is outside the box. The triangle is identified by reference number 1301, the box by reference number 1302.