-
Gebiet der Erfindung
-
Die
vorliegende Erfindung betrifft Hybrid-Raytracing-Operationen und
insbesondere einen Fragment-Shader für ein Hybrid-Raytracing-System und
sein Betriebsverfahren.
-
Hintergrund
-
Hybrid-Raytracing
ist im Stand der Technik bekannt als ein kombinierter Prozess von
Rasterung und Strahlverfolgung (Raytracing). Anfänglich werden Fragmente, z.
B. Pixel, welche keine reflektiven oder refraktiven Oberflächen aufweisen,
gerastert. Eine Raytracing-Operation wird anschließend für die Pixel
durchgeführt,
welche reflektive oder refraktive Oberflächen aufweisen. Innerhalb der
Raytracing-Operation wird der Primärstrahl typischerweise ausgelassen
und ein Sekundärstrahl
wird von dem geschnittenen Oberflächenpunkt erzeugt, welcher zum
Berechnen einer Reflexion oder Refraktion für das gerenderte Bild verwendet
wird. Die gerasterten und geraytracten Bilder werden gemischt oder
zusammengeführt,
um ein zusammengesetztes Bild (Kompositbild) zu bilden.
-
Innerhalb
des anfänglichen
Rasterprozesses werden zwei Rasteroperationen durchgeführt. In
einer ersten Operation werden die Pixel, welche nicht geraytracet
werden sollen, gerastert. In einer zweiten Operation werden die
Grundform-Identifikatoren für die
Pixel gerastert. Dieser Zweistufenrasterprozess verzögert die
Erzeugung des gerasterten Bildes und das Rendern des gesamten Kompositbildes.
-
Was
benötigt
wird ist entsprechend ein System und ein Verfahren zum Reduzieren
einer Rasterverzögerung
in Hybrid-Raytracing-Systemen.
-
Zusammenfassung
-
Ein
Fragment-Schattierer (Fragment-Shader) und ein Betriebsverfahren
werden für
ein Hybrid-Raytracing-System bereitgestellt. Das Verfahren umfasst
ein Bestimmen, ob ein Fragment gerastert oder geraytracet werden
soll. Wenn eine Bestimmung erfolgt ist, dass das Fragment gerastert
werden soll, wird ein vorbestimmter Wert für das Fragment in ein Rasterziel
(engl. rasterization target) gespeichert, wobei der vorbestimmte
Wert angibt, dass das Fragment von Raytracing-Operationen ausgeschlossen werden
soll. Wenn eine Bestimmung erfolgt ist, dass das Fragment geraytracet
werden soll, wird ein Grundform-Identifikator (engl. pimitive identifier)
des Fragments in ein Rasterziel gespeichert.
-
Diese
und andere Merkmale werden besser verstanden angesichts der folgenden
Zeichnungen und detaillierten Beschreibung von exemplarischen Ausführungsformen.
-
Kurze Beschreibung der Zeichnungen
-
1 veranschaulicht
einen exemplarischen Fragment-Shading-Prozess gemäß einer
Ausführungsform
der vorliegenden Erfindung.
-
2 veranschaulicht
einen exemplarischen Fragment-Shading-Prozess, welcher den Fragment-Shading-Prozess
von 1 gemäß einer
Ausführungsform
der vorliegenden Erfindung einschließt.
-
3 veranschaulicht
ein exemplarisches Hybrid-Raytracing-Verfahren, welches die Fragment-Shading-Prozesse
von 1 und 2 gemäß einer Ausführungsform
der vorliegenden Erfindung einschließt.
-
4 veranschaulicht
ein exemplarisches System, in welchem die Verfahren der 1 bis 3 gemäß einer
Ausführungsform
der vorliegenden Erfindung Verwendung finden.
-
Detaillierte Beschreibung
von detaillierten Ausführungsformen
-
1 veranschaulicht
einen exemplarischen Fragment-Shading-Prozess 100 gemäß einer
Ausführungsform
der vorliegenden Erfindung. Der Verfahrensprozess umfasst ein Bestimmen,
ob ein Fragment (z. B. ein Pixel) gerastert oder durch einen oder mehrere
Primärstrahlen
geschnitten werden soll (ein Prozess, welcher hierin als „geraytracet” bezeichnet wird),
und entsprechendes Anwenden von nachfolgendem Prozessieren auf das
Fragment, basierend auf dieser Bestimmung. Wie hierin verwendet,
bezeichnet der Ausdruck gerastert jegliche Technik zum Konvertieren
eines Farbwertes oder Vektors in ein Rasterformat. Weiterhin bezeichnet
der Ausdruck „Raytracing-Operationen” hierin
Raytracing-Operationen, welche das Schneiden eines Fragments durch einen
oder mehrere Primärstrahlen
mit sich bringen, wie dies in der Technik des Hybrid-Raytracing
bekannt ist.
-
Bei 102 beginnt
ein Fragmentprozessieren und bei 104 wird eine Bestimmung
durchgeführt,
ob das Fragment gerastert oder geraytracet werden soll. Wenn die
Bestimmung gemacht ist, dass das Fragment in Rasteroperationen einbezogen
werden soll, wird bei 106 ein vorbestimmter Wert erzeugt
und in ein Rasterziel gespeichert, wobei der vorbestimmte Wert angibt,
dass das Fragment nicht geraytracet werden soll. In einer Ausführungsform
ist der vorbestimmte Wert, der durch die Operation 106 erzeugt wird,
von einem Wert von –1,
obwohl jeglicher Wert oder jegliches Kennzeichen verwendet werden
kann zum Angeben, dass das Fragment von Raytracing-Operationen gemäß der vorliegenden
Erfindung ausgeschlossen werden soll. In einer bestimmten Ausführungsform
von Operation 106 wird dem Fragment ein „geraytracet-Attribut” zugeordnet,
welches entweder einen wahren oder falschen Zustand aufweist, wobei
der falsche Zustand durch einen vorbestimmten Wert (z. B. –1) angegeben
ist, welcher das Fragment als nicht-rayzutracen identifiziert.
-
Wenn
bei 104 eine Bestimmung gemacht wird, dass das Fragment
geraytracet werden soll, wird bei 108 ein Grundform-Identifikator
des Fragments in ein Rasterziel für das Fragment gespeichert. Zum
Beispiel, wenn das Fragment Dreiecksgrundformen umfasst, enthält der Prozess 108 ein
Speichern einer Dreiecks-ID in ein Rasterziel (z. B. einen Dreiecks-ID-Puffer)
für das
Fragment. Die Fachleute werden es zu schätzen wissen, dass verschiedene
geometrische Grundformen in einem Fragment eingeschlossen sein können, zum
Beispiel Polygone, Kugeln, Linien, Punkte, etc., und jeder Identifikator
von solchen Grundformen kann in einem hierzu korrespondierenden
Rasterziel gespeichert werden, gemäß der vorliegenden Erfindung.
Es sollte sich ferner verstehen, dass ein oder jede Anzahl von Fragmenten kombiniert
sein kann, um ein Pixel zu bilden, wie es im Stand der Technik bekannt
ist.
-
Die
Bestimmung bei 104 kann gemacht werden unter Verwendung
von jeglicher Technik zum Unterscheiden zwischen Raster- und Raytracing-Operationen. Zum
Beispiel, wenn bestimmt wird, dass das Fragment innerhalb einer
reflektierten oder refraktierten Oberfläche liegt, kann bestimmt werden, dass
das Fragment in Raytracing-Operationen eingeschlossen werden soll.
Die Fachleute werden schätzen,
dass andere Metriken angewandt werden können zum Bestimmen, ob das
Fragment in Raster- oder Raytracing-Operationen eingeschlossen werden
soll.
-
2 veranschaulicht
einen exemplarischen Fragment-Shader-Prozess, welcher den Fragment-Shading-Prozess
von 1 gemäß einer
Ausführungsform
der vorliegenden Erfindung einschließt. Operationen 202–208 laufen
parallel zu Operationen 102–108 von 1.
Bei 202 beginnt eine Fragmentverarbeitung und bei 204 wird
eine Bestimmung gemacht, ob das Fragment gerastert oder geraytracet werden
soll. Wenn die Bestimmung gemacht wird, dass das Fragment in Rasteroperationen
eingeschlossen werden soll, wird bei 206 ein vorbestimmter
Wert erzeugt und gespeichert in ein erstes Rasterziel, wobei der
vorbestimmte Wert angibt, dass das Fragment nicht geraytracet werden
soll. Wenn bei 204 eine Bestimmung gemacht wird, dass das
Fragment geraytracet werden soll, wird ein Grundform-Identifikator
des Fragments in ein erstes Rasterziel für das Fragment gespeichert,
bei 208. In der Praxis existiert auch eine dritte Möglichkeit,
in welcher das ausgewählte
Fragment weder gerastert noch geraytracet werden soll. Während des
Rasterns kann ein Shader zum Beispiel entscheiden, das Fragment
zu verwerfen. Wenn die gegenwärtige
Grundform nicht als geraytracet markiert ist und von dem Shader
für eine
Rasterung verworfen wird, bleibt der Farbwert unverändert. Grundform-Identifikatoren können als
ein Vertex-Attribut
implementiert werden. In diesem Fall kann die Grundform als eine
Einheitsform (engl. uniform) für
den Fragment-Shader pro Grundform spezifiziert werden. Alternativ
wird der erste Grundform-Identifikator einer Reihe von Grundformen
spezifiziert als eine Einheitsform für einen Geometrie-Shader. Der Geometrie-Shader
kann dann nachfolgende Grundform-Identifikatoren
pro Grundform erzeugen.
-
Weiter
exemplarisch, unter der Bedingung, in welcher das Fragment gerastert
werden soll, umfasst das Verfahren 200 ferner eine Operation 210,
in welcher eine Shading-Operation für das ausgewählte Fragment
aktiviert wird, wobei ein gerasterter Farbwert für das Fragment berechnet und
gespeichert wird in ein zweites Rasterziel (z. B. einen Farbpuffer) für das Fragment.
Jegliche Shading-Operation kann gemäß dieser Operation implementiert
werden.
-
Weiter
exemplarisch, unter der Bedingung, in welcher das Fragment geraytracet
werden soll, umfasst das Verfahren 200 ferner eine Operation 212,
in welcher ein Null-Farbraumwert in ein zweites Rasterziel (z. B.
einen Farbpuffer) für
das Fragment gespeichert wird. In einer bestimmten Ausführungsform
ist der Null-Farbraumwert ein Farbwert von RGBA (0, 0, 0, 0), d.
h. volltransparentes Schwarz. Die Auswahl eines solchen Farbraumwertes
erleichtert das Kombinieren der gerasterten und geraytracten Fragmente zum
Erzeugen eines finalen Frame, da nicht gerasterte Fragmente und
nicht geraytracte Fragmente als schwarzer Hintergrund wiedergegeben
werden. Jedoch werden die Fachleute anerkennen, dass andere Null-Farbraumwerte
(und/oder ein anderes Farbraumformat) implementiert werden kann
gemäß einem
anderen Kombinationsschema. In einer bestimmten Ausführungsform
wird der Fragment-Shader 200 einmal pro Grundform, welche
in dem Fragment enthalten ist, aufgerufen. Zum Beispiel können die
Operationen 202–212 durchgeführt werden
für jedes
von N Dreiecken, welches innerhalb eines Pixels, welchem der Fragment-Shader 200 zugeordnet
ist, enthalten ist. Weiter exemplarisch, können die Operationen 202–212 bis
zu N Mal für
jedes Fragment durchgeführt
werden, wenn N Dreiecke dieses Fragment abdecken.
-
Wie
verstanden werden wird, werden einige der Fragmente zur Rasterung
in der Hybrid-Raytracing-Operation ausgewählt und einige werden zum Raytracen
ausgewählt.
Entsprechend kann eine Abfolge der Operationen 202, 204, 206 und 210,
in welcher ein erstes Fragment zur Rasterung vorbereitet wird, durchgeführt werden
vor einer (oder nachfolgend auf eine) Abfolge der Operationen 202, 204, 208 und 212,
in welcher ein zweites Fragment zum Raytracen vorbereitet wird.
Auf diese Weise wird eine Vielzahl von Fragmenten (z. B. alle der
Fragmente innerhalb eines Frames) prozessiert für Rasterung oder Raytracing
in der Hybrid-Raytracing-Operation, wie hierin weiter beschrieben
ist.
-
3 veranschaulicht
ein exemplarisches Hybrid-Raytracing-Verfahren (oder „Raytracer”), welches
den Fragment-Shading-Prozess von 1 und 2 gemäß einer
Ausführungsform
der vorliegenden Erfindung einschließt. Gemäß diesem Verfahren wird eine
Rasterung von Grundformen verwendet zum Lokalisieren des sichtbaren
(d. h. nächsten
Nahebenen-)Fragments und Shading wird durchgeführt zum Berechnen eines Farbwertes
für das
Fragment. Der Raytracer 300 lässt den ersten Raytracing-Schritt
aus, da Transversaloperationen für
die Primärstrahlen,
die normalerweise in dem Raytracing-Algorithmus enthalten sind,
ersetzt werden durch den Rasterschritt, wie unten weiter erläutert. Alle
weiteren Transversalschritte werden durch den Raytracer wie gewöhnlich durchgeführt.
-
Das
Verfahren 300 repräsentiert
eine Fortsetzung des Verfahrens 200, in welcher ein bestimmtes
Fragment gerastert wurde, entweder im Hinblick auf seinen Farbwert
(Operation 210) oder im Hinblick auf den Grundform-Identifikator des
Fragments (Operation 208). Bei 302 wird das Fragment
abgefragt zum Bestimmen, ob es geraytracet werden soll. In einer
bestimmten Ausführungsform
wird eines oder beide der Rasterziele abgefragt zum Bestimmen, ob
es den nicht-rayzutracen-Wert speichert, wie oben erwähnt. In
einer anderen Ausführungsform werden
die Rasterziele auf die Anwesenheit eines Grundform-Identifikators,
welcher angeben würde, dass
das Fragment geraytracet werden soll, durchsucht. In einer exemplarischen
Ausführungsform
dieses Prozesses wird der Dreiecks-ID-Puffer des Fragments an eine
Raytracing-Engine geliefert zum Prozessieren, entweder zum Detektieren
der Anwesenheit/Abwesenheit des nicht-rayzutracen-Wertes, oder zum
Detektieren der Anwesenheit/Abwesenheit eines Grundform-Identifikators.
-
Wenn
die Bestimmung bei 302 ist, dass das Fragment nicht geraytracet
werden soll (z. B. ein nicht-rayzutracen-Wert für das Fragment gefunden wird),
endet das Verfahren bei 304. Wenn die Bestimmung bei 302 ist,
dass das Fragment geraytracet werden soll (z. B. ein Grundform-Identifikator
gefunden wird oder über
die Abwesenheit des nicht-rayzutracen-Wertes für das Fragment), fährt das
Verfahren bei 306 fort, wo der Raytracer Schnitt(Intersection)- und
Shading-Operationen durchführt.
Ferner insbesondere werden Transversaloperationen, die gewöhnlich durchgeführt werden
als ein Teil von Raytracing-Operationen, weggelassen, da die Operation 208 diese
Daten liefert, d. h. der Grundform-Identifikator gibt die Grundform
an, die geschnitten wird durch den Strahl für das Zielfragment. Die Daten, welche
durch die Operation 208 geliefert werden, werden von dem
Raytracer 300 verwendet zum Berechnen des Schnittpunktes
eines Strahls mit einer Geometrie und zum Berechnen des geraytracten Farbraumwertes
für das
Fragment. Da der Prozess 208 typischerweise wesentlich
schneller arbeiten wird zum Identifizieren des nächsten Nahebenen-Fragments
im Vergleich zu der logarithmischen Suche, die in einer Raytracing-Transversaloperation verwendet
wird (zum Beispiel in einer Szene, welche 10.000 Dreiecke enthält), liefert
das Verfahren der vorliegenden Erfindung eine erhöhte Geschwindigkeit
und Recheneffizienzen beim Rendern, jenseits der konventionellen
Methoden.
-
In
einer bestimmten Ausführungsform
wird der Hybrid-Raytracer 300 einmal pro sichtbarem Fragment
des Bildes aufgerufen. In solch einem Fall werden die Operationen 302–308 auf
einer Pro-Fragment-Basis durchgeführt und ein geraytracter Farbwert
(wenn überhaupt, über die
bedingte Operation 304) wird für jedes Fragment einmal berechnet.
Weiter beispielhaft können
die Operationen 204, 206 und 210 aufgerufen
werden zum Liefern eines ersten Fragmentes, welches einen gerasterten
Farbraumwert, wie oben definiert, aufweist und die Operationen 204, 208, 212, 302 und 306 können wiederholt werden
zum Liefern eines zweiten Fragmentes, wovon jedes einen geraytracten
Farbwert, wie oben definiert, aufweist. Ein Kompositbild der zwei Fragmente
kann erhalten werden durch Kombinieren (zum Beispiel Mischen (Blending),
Verschmelzen (Merging), oder Addieren (Adding)) der Fragmente. Fragmente,
die weder gerastert noch geraytracet sind, verbleiben in der Hintergrundfarbe,
zum Beispiel, volltransparentes Schwarz RGBA (0, 0, 0, 0) in einer exemplarischen
Ausführungsform.
-
Wie
von 3 gesehen werden kann, ist der Hybrid-Raytracer
betreibbar zum Aufrufen und Ausführen
des Fragment-Shader-Programms des Benutzers in der Operation 210,
während
er ebenfalls betreibbar ist zum Bereitstellen von Grundform-Identifikatoren
für Fragmente,
welche geraytracet werden sollen (Operation 208). Der Benutzer
ist daher in der Lage, die Szene wie benötigt zu rastern und kann danach
den Dreiecks-ID-Puffer abfragen (Operation 304) auf nachfolgende
Raytracing-Operationen (Operation 306). Auf diese Weise
liefert der Hybrid-Raytracer 300 für den Benutzer ein transparentes Prozessieren
von beiden Fragmenttypen. Ferner tritt die Rasterung jedes Fragmenttyps
nur einmal auf, entweder mittels der Operationen 206 und 210 für gerasterte
Farbraumwert-Fragmente, oder mittels der Operationen 208 und 212 für geraytracte
Farbraumwert-Fragmente. Die Operationen in den Verfahren 100, 200 und 300 können jeweils
implementiert sein als ausführbare
Instruktionen in jeder geeigneten Programmiersprache, von denen
einige Beispiele Open-GL-Shading
Language (GLSL), Cg-Shading Language, High Level Shader Language
(HLSL) oder die Compute Unified Device Architecture (CUDATM) GPU-Programmiersprache sind, zur Verwendung
mit entsprechenden Compilern für
solche Sprachen. Zusätzlich
können
die veranschaulichten Operationen ausgeführt werden mittels Hardware oder
Firmware, zum Beispiel, mittels einer anwendungsspezifischen integrierten
Schaltung (Application Specific Integrated Circuitry, ASIC), einem
programmierbaren Logik-Array (Programmable Logic Array, PLA), einem
feldprogrammierbaren Gate-Array (Field Programmable Gate Array,
FPGA) oder anderer solcher Vorrichtungen.
-
4 veranschaulicht
ein exemplarisches System 400, in welchem die Verfahren
der 1–3 Verwendung
finden gemäß der vorliegenden
Erfindung. Das System 400 umfasst ein Grafikprozessier-Subsystem 420 und
eine Ausgabevorrichtung 440, wie beispielsweise einen Monitor
oder Drucker. Das Grafikprozessier-Subsystem 420 umfasst
einen Prozessor 422, ein Speicher-Interface 424, einen Frame-Puffer 425 und
einen Ausscan-Prozessor 426. Der Prozessor 422 umfasst
ein Shader-Modul 423, welches betreibbar ist zum Durchführen irgendeiner
oder aller der Operationen, die in den 1–3 hierin
veranschaulicht sind. Ein Frame-Puffer 426 ist betreibbar
gekoppelt mit dem Prozessor 422 zum Empfangen von gerasterten und
geraytracten Fragmentwerten für
jeden Frame und zum Auslesen eines Kompositbildes von jedem Frame
an die Ausgabevorrichtung 440 über das Speicher-Interface 424 und
einen Link 430 (z. B. einen DVI-Link).
-
In
einer spezifischen Ausführungsform
ist das Shader-Modul 423 betreibbar zum Speichern von Instruktionscode
zum Durchführen
der Fragment-Shader-Programme 100 und 200 der 1 bzw. 2.
In einer Ausführungsform
umfasst das Fragment-Shading-Modul 423 Mittel zum Durchführen der
Operationen 104–08 und 204–208,
in welchen bestimmt wird, ob ein Fragment gerastert oder geraytracet
werden soll, Speichern eines vorbestimmten Wertes für das Fragment
in ein Rasterziel, wenn das Fragment gerastert werden soll, wobei
der vorbestimmte Wert angibt, dass das Fragment von Raytracing-Operationen ausgeschlossen
sein soll, und Speichern eines Grundform-Identifikators des Fragments in ein
Rasterziel, wenn das Fragment geraytracet werden soll. Das Fragment-Shading-Modul 423 umfasst
ferner Mittel zum Durchführen
der Operationen 206 und 210, in welchen eine Shading-Operation
für das
Fragment durchgeführt
wird zum Berechnen eines gerasterten Farbwertes des Fragments und
zum Speichern des gerasterten Farbwertes des Fragments in ein zweites
Rasterziel. Das Fragment-Shading-Modul 423 umfasst ferner
Mittel zum Speichern eines Null-Farbwertes in ein zweites Rasterziel.
Das Fragment-Shading-Modul kann auch Mittel zum Durchführen von
Hybrid-Raytracing-Operationen 302–306, dargestellt
in 3 und hierin beschrieben, enthalten.
-
Wie
leicht von den Fachleuten anerkannt werden wird, können die
beschriebenen Prozesse und Operationen in Hardware, Software, Firmware oder
einer Kombination dieser Implementierungen implementiert werden,
wie es angemessen ist. Zusätzlich
können
einige oder alle der beschriebenen Prozesse und Operationen implementiert
werden als computerlesbarer Instruktionscode, welcher resident auf
einem computerlesbaren Medium ist, wobei der Instruktionscode wirksam
ist zum Steuern eines Computers einer solchen programmierbaren Vorrichtung
zum Ausführen
der vorgesehenen Funktionen. Das computerlesbare Medium, auf welchem
der Instruktionscode liegt, kann zahlreiche Formen annehmen, zum
Beispiel, eine entfernbare Platte (removable disk), flüchtigen
oder nicht-flüchtigen
Speicher, etc., oder ein Trägersignal,
welchem ein Modulationssignal eingeprägt wurde, wobei das Modulationssignal
Instruktionen zum Ausführen
der beschriebenen Operationen entspricht.
-
In
einer bestimmten Ausführungsform
der Erfindung ist ein Speicher betreibbar zum Speichern von Instruktionen
zum Ausführen
von irgendeiner der Operationen, die in 1, 2 und 3 veranschaulicht
sind. Der Speicher kann verschiedene Formen annehmen, zum Beispiel
eine entfernbare Platte, einen eingebetteten Speicher, etc., in
flüchtiger
oder nicht-flüchtiger
Form, und kann enthalten sein in einer Vielzahl von verschiedenen
Systemen, zum Beispiel einem Computersystem, einem eingebetteten
Prozessor (embedded processor), einem Grafikprozessor oder einem
Grafik prozessierenden Subsystem, wie beispielsweise einer Grafikkarte.
-
Die
Ausdrücke „ein” oder „eines” werden
verwendet zum Bezugnehmen auf eines oder mehrere hierdurch beschriebener
Merkmale. Ferner bezieht sich der Ausdruck „gekoppelt” oder „verbunden” auf Merkmale, welche in Kommunikation
miteinander stehen, entweder direkt oder über eine oder mehrere Zwischenstrukturen
oder -substanzen. Die Abfolge von Operationen und Aktionen, auf
die in Verfahrensflussdiagrammen Bezug genommen wird, sind beispielhaft
und die Operationen und Aktionen können in einer anderen Reihenfolge
durchgeführt
werden, wie auch zwei oder mehr der Operationen und Aktionen gleichzeitig
durchgeführt
werden können.
Bezugszeichen (soweit vorhanden), die in den Ansprüchen enthalten
sind, dienen zum Bezugnehmen auf eine exemplarische Ausführungsform
eines beanspruchten Merkmals, und das beanspruchte Merkmal ist nicht
limitiert auf die bestimmte Ausführungsform, auf
welche durch das Bezugszeichen Bezug genommen wird. Der Umfang des
beanspruchten Merkmals soll derjenige sein, der durch die Anspruchsformulierung
definiert ist, als wenn das Bezugszeichen hiervon abwesend wäre. Alle
Veröffentlichungen,
Patente und andere Dokumente, auf die hierin Bezug genommen wird,
sind hierin in ihrer Gesamtheit durch Bezugnahme eingeschlossen.
In dem Umfang jeder inkonsistenten Verwendung zwischen irgendeinem solchen
eingeschlossenen Dokument und diesem Dokument, soll die Verwendung
in diesem Dokument führen.
-
Die
vorangehenden exemplarischen Ausführungsformen der Erfindung
wurden in ausreichendem Detail beschrieben, um einen Fachmann in
die Lage zu versetzen, die Erfindung auszuführen, und es sollte sich verstehen,
dass die Ausführungsformen
kombiniert werden können.
Die beschriebenen Ausführungsformen
wurden gewählt,
um am besten die Prinzipien der Erfindung und ihrer praktischen
Anwendung zu erläutern,
um dadurch andere Fachleute in die Lage zu versetzen, die Erfindung
bestmöglich zu
verwenden in zahlreichen Ausführungsformen und
mit verschiedenen Modifikationen, wie sie geeignet sind für die bestimmte
beabsichtigte Verwendung. Es ist beabsichtigt, dass der Umfang der
Erfindung einzig durch die hieran anhängenden Ansprüche definiert
ist.