-
BEREICH DER ERFINDUNG
-
Die vorliegende Erfindung betrifft ein Verfahren und ein System zum Aussondern von verborgenen tessellierten Primitiven in einem kachelbasierten Computergrafik-Rendersystem.
-
HINTERGRUND DER ERFINDUNG
-
Kachelbasiertes Rendern ist eine bekannte Technik zum Rendern von 2D- oder 3D-Computergrafikbildern. Ein Renderraum wird in mehrere als Kacheln oder Blöcke bezeichnete Regionen unterteilt, die typischerweise rechteckig sind und jeweils mehrere Pixel umfassen. Der Renderraum kann einem Bild zur Anzeige auf einem Bildschirm entsprechen, aber es sind auch andere Render-Ziele wie z. B. Texturdaten in einem Speicher möglich. Kacheln können verschiedene Größen haben, aber eine typische Größe ist zum Beispiel 16×16 Pixel. Ein Bild mit hoher Bildschirmauflösung hat typischerweise 1280×1024 Pixel. Daher kann ein Bild mit hoher Bildschirmauflösung in 5120 Kacheln (jeweils mit 16×16 Pixeln) unterteilt werden.
-
In einem kachelbasierten Computergrafiksystem werden primitive Daten typischerweise aus dem Speicher gelesen und in Bildschirmraum umgewandelt. Primitive sind häufig Polygone, z. B. Dreiecke, sie können aber auch Linien oder Punkte sein. Dann wird eine Anzeige-Liste für jede Kachel erzeugt, die ggf. Primitive anzeigt, die sich entweder ganz oder teilweise in der Kachel befinden. Die Anzeige beinhaltet häufig eine Kennung oder einen Index für jedes Primitiv, das geometrische Daten referenziert oder einen Zeiger darauf erzeugt, die mit dem in einem Parameterspeicher gespeicherten Primitiv assoziiert sind. Die Anzeige-Listen sind im Speicher gespeichert.
-
Jede Kachel wird dann unabhängig anhand ihrer Anzeige-Liste gerendert.
-
Für jede Kachel werden die in der jeweiligen Anzeige-Liste identifizierten Primitive verarbeitet und verborgene Oberflächen können entfernt werden. Die resultierenden Pixeldaten für sichtbare Fragmente werden dann zu einer Schattierungseinheit geleitet, die Texturen und Schattierung auf jedes sichtbare Pixel innerhalb eines Objekts anwendet. Nach dem Bestimmen endgültiger Pixelwerte für jedes Pixel in der Kachel werden die Pixeldaten für die Kachel in einen Speicher zur Anzeige auf einem Ausgabegerät geschrieben.
-
Verborgene Flächen werden mit einer als „z-Pufferung” bekannten Technik entfernt. Bei dieser Technik werden Tiefenwerte für jedes Primitiv bei jedem Pixel in der von dem Primitiv verdeckten Kachel berechnet. Dann werden unter Verarbeitung jedes Primitivs nacheinander die Tiefenwerte jedes Primitivs mit den Tiefenwerten für die jeweiligen in einem „z-Puffer” gespeicherten Pixel verglichen. Wenn der Tiefenwert eines neuen Primitivs näher am Auge oder Blickpunkt ist als der gerade gespeicherte Tiefenwert (für die Oberfläche der zuvor verarbeiteten Primitive, die derzeit an diesem Pixel sichtbar ist), dann werden der Tiefenwert für dieses Pixel und die anderen Werte für dieses Pixel durch die Werte des neuen Primitivs an dem jeweiligen Pixel ersetzt. Ist der Tiefenwert eines neuen Primitivs weiter vom Auge oder Blickpunkt entfernt als der derzeit gespeicherte Tiefenwert, dann bleiben die Werte, inklusive des Tiefenwertes, dieses Pixels unverändert.
-
Tessellation ist eine bekannte Technik zum Hinzufügen von Textur zu einem detailarmen Modell, das in der Computergrafik-Branche im Allgemeinen als Oberflächendatensegment bezeichnet wird. Ein Oberflächendatensegment wird in eine Mehrzahl von Primitiven unterteilt, die dann bei Bedarf von der Oberfläche des Segments verschoben werden, um eine Mehrzahl von tessellierten Primitiven abzuleiten. Die Primitive können durch Anwenden einer Benutzer programmierbaren Funktion und/oder in Abhängigkeit von einer Verschiebungshöhenkarte verschoben werden. Die tessellierten Primitive können dann gekachelt und wie oben beschrieben gerendert werden. Tessellation ist ein nützliches Werkzeug, das sich in der Computergrafik-Branche immer weiter ausbreitet. Man wird jedoch verstehen, dass das Tessellieren eines Oberflächendatensegments den zum Rendern eines Bildes nötigen Rechenaufwand erheblich erhöhen kann. Jedes tessellierte Oberflächendatensegment kann Tausende von tessellierten Primitiven beinhalten, die verarbeitet und möglicherweise auch im Speicher gespeichert werden müssen.
-
Die Anmelderin hat erkannt, dass es wünschenswert wäre, die Menge an zum Rendern einer Kachel, insbesondere einer tessellierte Primitive umfassenden Kachel, nötige Datenübertragung, Datenspeicherung und Verarbeitung zu verringern.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Gemäß der vorliegenden Erfindung wird ein Verfahren zum Aussondern in einem kachelbasierten Grafiksystem bereitgestellt, umfassend: Unterteilen eines Renderraums in eine Mehrzahl von Kacheln; Lesen eines Oberflächendatensegments; Tessellieren des von Oberflächendatensegments, um ein Mehrzahl von tessellierten Primitiven abzuleiten; Analysieren wenigstens eines Teils des Segments, der wenigstens einige der tessellierten Primitive umfasst, um Daten zu bestimmen, die einen über wenigstens eine Kachel bestimmten Begrenzungstiefenwert repräsentieren; Benutzen, für jede Kachel, in der sich das Segment befindet, der den Begrenzungstiefenwert repräsentierenden Daten, um zu bestimmen, ob das Segment in der Kachel verborgen ist; und Rendern wenigstens eines Teils des Segments, wenn bestimmt wird, dass das Segment nicht in wenigstens einer Kachel verborgen ist.
-
Ausgestaltungen der Erfindung haben den Vorteil, dass ein Segment von einer Kachel ausgesondert werden kann, ohne eine Tiefenaussonderung für jedes einzelne tessellierte Primitiv verarbeiten und ausführen zu müssen. So ermöglicht es die Erfindung, die zum Rendern eines ein Oberflächendatensegment umfassenden Bildes nötige Verarbeitungsmenge und Speicherbandbreite zu reduzieren.
-
Dieses Verfahren hat den Vorteil, dass jede Verschiebung der tessellierten Primitive von der Oberfläche des Segments beim Bestimmen der Daten, die den über die wenigstens eine Kachel bestimmten Begrenzungstiefenwert repräsentieren, auf einfache Weise berücksichtigt werden kann.
-
In einer bevorzugten Ausgestaltung umfasst der Analyseschritt ferner, für jede der Mehrzahl der tessellierten Primitive, das Benutzen des Begrenzungstiefenwertes für das tessellierte Primitiv, um zu bestimmen, ob das tessellierte Primitiv in der wenigstens einen Kachel verborgen ist, wobei die wenigstens einigen der tessellierten Primitive das tessellierte Primitiv umfassen, wenn bestimmt wird, dass es in der wenigstens einen Kachel nicht verborgen ist. Diese Ausgestaltung hat den Vorteil, dass nur Begrenzungstiefenwerte der nicht verborgenen tessellierten Primitive zum Bestimmen der Daten benutzt werden können, die den Begrenzungstiefenwert für das Segment repräsentieren. Das heißt, dass der Begrenzungstiefenwert für das Segment wahrscheinlich einen kleineren Bereich von Tiefenwerten repräsentiert, wodurch die Wahrscheinlichkeit erhöht wird, dass das Segment von einer Kachel auf der Basis eines mit diesem Begrenzungstiefenwert durchgeführten Tiefentests ausgesondert werden kann.
-
Ferner kann dieses Verfahren in einer bevorzugten Ausgestaltung das Aussondern jedes tessellierten Primitivs beinhalten, das als in der wenigstens einen Kachel verborgen ermittelt wurde, so dass es nicht in einer Anzeige-Liste für die wenigstens eine Kachel angezeigt wird. So kann Speicherplatz eingespart werden.
-
Der über die wenigstens eine Kachel beurteilte Begrenzungstiefenwert kann ein Begrenzungstiefenwert für das gesamte Segment sein. Alternativ kann ein Begrenzungstiefenwert für jede jeweilige Kachel ermittelt werden, in der sich das Segment befindet. In diesem Fall kann der Analyseschritt für jede Kachel, in der sich das Segment befindet, das Analysieren eines entsprechenden Teils des Segments umfassen, um Daten zu bestimmen, die einen über diese Kachel bestimmten Begrenzungstiefenwert repräsentieren. Wenn also in diesem Fall das Segment über mehrere Kacheln verläuft, dann beinhaltet der über die wenigstens eine Kachel bestimmte Begrenzungstiefenwert mehrere Begrenzungstiefenwerte (die jeweils über eine jeweilige Kachel bestimmt werden).
-
Der über die wenigstens eine Kachel bestimmte Begrenzungstiefenwert kann einen maximalen Begrenzungstiefenwert und/oder einen minimalen Begrenzungstiefenwert umfassen.
-
Die Daten, die den über die wenigstens eine Kachel bestimmten Begrenzungstiefenwert repräsentieren, können benutzt werden, um zu bestimmen, ob das Segment in einer Kachel verborgen ist, bevor oder nachdem das Segment in der Anzeige-Liste für die Kachel angezeigt wird.
-
Eine erste Ausgestaltung umfasst, für jede Kachel, in der sich das Segment befindet, das Anzeigen von wenigstens einem Teil des Segments in einer Anzeige-Liste für die Kachel, wenn das Segment als in der Kachel nicht verborgen bestimmt wird. Diese Ausgestaltung hat den Vorteil, dass nicht nur die zum Rendern des Bildes nötige Verarbeitungsmenge und Speicherbandbreite, sondern auch die Menge an zum Speichern der Anzeige-Listen für die Kachel nötigem Speicherplatz reduziert werden kann, da das Segment, wenn es als nicht sichtbar oder verborgen bestimmt wird, nicht in der Anzeige-Liste für diese Kachel angezeigt zu werden braucht.
-
Diese Ausgestaltung kann ferner umfassen: Schreiben der den Begrenzungstiefenwert repräsentierenden Daten in einen Speicher; und Lesen, für jede Kachel, deren Anzeige-Liste wenigstens einen Teil des Segments anzeigt, der den Begrenzungstiefenwert repräsentierenden Daten aus dem Speicher und Benutzen der den Begrenzungstiefenwert repräsentierenden Daten, um zu bestimmen, ob das Segment in der Kachel verborgen ist.
-
Eine alternative zweite Ausgestaltung umfasst: Anzeigen, für jede Kachel, in der sich das Segment befindet, wenigstens eines Teils des Segments in einer Anzeige-Liste für die Kachel; Schreiben der Daten, die den über die wenigstens eine Kachel bestimmten Begrenzungstiefenwert repräsentieren, in einen Speicher; und wobei der Schritt des Benutzens der den Begrenzungstiefenwert repräsentierenden Daten für jede Kachel, in der sich das Segment befindet, um zu bestimmen, ob das Segment in der Kachel verborgen ist, ferner umfasst: Lesen der den Begrenzungstiefenwert repräsentierenden Daten aus dem Speicher.
-
Diese Ausgestaltungen erfordern, dass die Daten, die den über die wenigstens eine Kachel bestimmten Begrenzungstiefenwert repräsentieren, im Speicher gespeichert sind, was Speicherplatz beansprucht. Diese Ausgestaltung hat jedoch den signifikanten Vorteil, dass Daten, die einen Begrenzungstiefenwert für das Segment repräsentieren, zum Ausführen eines Tiefentests für das Segment benutzt werden können, ohne das Oberflächendatensegment beim Rendern der Kachel verarbeiten zu müssen. So kann mit dieser Ausgestaltung Speicherbandbreite sowie Verarbeitungsleistung ähnlich wie in der ersten Ausgestaltung eingespart werden, da beispielsweise dann, wenn das Segment aus einer Kachel ausgesondert werden kann, mit diesem Segment assoziierte geometrische Daten nicht aus einem Parameterspeicher gelesen zu werden brauchen.
-
Diese zweite Ausgestaltung kann vor dem Schritt des Anzeigens, für jede Kachel, in der sich das Segment befindet, wenigstens eines Teils des Segments in einer Anzeige-Liste für die Kachel, auch einen zusätzlichen Schritt umfassen, umfassend Benutzen der Daten, die den über die wenigstens eine Kachel bestimmten Begrenzungstiefenwert repräsentieren, um zu bestimmen, ob das Segment in einer Kachel verborgen ist, und, wenn nicht, das Segment aus der Kachel ausgesondert wird, so dass es sich nicht mehr in der Kachel befindet. Es wird auch eine entsprechende Vorrichtung bereitgestellt.
-
KURZBESCHREIBUNG DER FIGUREN
-
Ausgestaltungen der vorliegenden Erfindung werden nun, jedoch nur beispielhaft, mit Bezug auf die Begleitzeichnungen beschrieben, in denen:
-
1 ein schematisches Blockdiagramm ist, das eine die Erfindung ausgestaltende Vorrichtung zeigt;
-
2, 2a und 2b eine Bestimmung, ob ein tesselliertes Oberflächendatensegment von einer Kachel ausgesondert werden kann, illustrieren;
-
3 ein Flussdiagramm ist, das die Verfahrensschritte in einer Ausgestaltung der Erfindung zeigt;
-
4 ein Flussdiagramm ist, das die Verfahrensschritte in einer anderen Ausgestaltung der Erfindung zeigt;
-
5 ein Flussdiagramm ist, das ein beispielhaftes Verfahren zum Bestimmen eines Begrenzungstiefenbereichs für eine Serie von Primitiven wie Dreiecken zeigt; und
-
6 ein Flussdiagramm ist, das ein beispielhaftes Verfahren zum Bestimmen eines Begrenzungstiefenbereichs für ein Objekt wie z. B. einen Oberflächensegment zeigt.
-
AUSFÜHRLICHE BESCHREIBUNG BEVORZUGTER AUSGESTALTUNGEN DER ERFINDUNG
-
Die Patentanmeldung mit der Veröffentlichungs-Nr.
GB 2480012 der Anmelderin offenbart ein Verfahren und ein System zum Tessellieren eines Oberflächendatensegments in einem kachelbasierten Computergrafik-Rendersystem.
-
In diesem System wird ein Oberflächendatensegment tesselliert, um eine Mehrzahl von tessellierten Primitiven, wie oben beschrieben, abzuleiten. Dann wird für jede Kachel jedes wenigstens teilweise in der Kachel befindliche tessellierte Primitiv in der Anzeige-Liste für die Kachel angezeigt, z. B. durch Speichern eines oder mehrerer Indexe für jedes tessellierte Primitiv. Anstatt jedoch mit jedem einzelnen tessellierten Primitiv im Parameterspeicher assoziierte geometrische Daten zu speichern, werden geometrische Daten für das Oberflächendatensegment gespeichert, von dem die tessellierten Primitive nachfolgend erneut abgeleitet werden können. Man wird verstehen, dass mit diesem Verfahren die Datenmenge, die im Parameterspeicher gespeichert werden muss, erheblich reduziert wird, wenn auch auf Kosten einer Erhöhung der zum Rendern jeder Kachel nötigen Rechenmenge. Zum Rendern jeder Kachel wird das Oberflächendatensegment erneut tesselliert, um die in der jeweiligen Anzeige-Liste identifizierten tessellierten Primitive erneut abzuleiten. Dann wird jedes tessellierte Primitiv, wie oben beschrieben, verarbeitet.
-
Verfahren und Systeme zum Aussondern von Primitiven, die völlig in einer Kachel verborgen sind (d. h. Primitive, die bei keinem Pixel in der Kachel sichtbar sind), ohne die gesamte Verarbeitung zu erfordern, die bei typischen Techniken zum Entfernen von verborgenen Flächen erforderlich sind, sind beispielsweise aus dem
GB-Patent Nr. 2,378,108 der Anmelderin bekannt.
-
Bei diesem Verfahren werden Primitive, die ganz in einer Kachel verborgen sind, vor dem Entfernen der verborgenen Fläche durch Vergleichen der Tiefe jedes Primitivs mit dem im „z-Puffer” für die Kachel gespeicherten Tiefenbereich ausgesondert. So kann zum Beispiel die Mindesttiefe eines Primitivs (die Tiefe, die dem Blickpunkt am nächsten liegt) mit der größten oder maximalen Tiefe verglichen werden, die von den im „z-Puffer” gespeicherten Tiefenwerten angezeigt wird (d. h. der vom Blickpunkt am weitesten entfernten Tiefe). Wenn die Mindesttiefe des Primitivs weiter vom Blickpunkt entfernt ist als der maximale Tiefenwert im „z-Puffer”, dann ist bekannt, dass das Primitiv völlig in der Kachel verborgen sein muss, ohne Tiefenwerte für dieses Primitiv bei jedem Pixel in der Kachel berechnen und vergleichen zu müssen. So reduziert dieses Verfahren die zum Rendern jeder Kachel notwendige Verarbeitungsmenge.
-
Mit dem Begriff „Objekt” wird nachfolgend ein Grafikelement wie ein Primitiv oder ein Modell beschrieben, das in der Computergrafik-Branche im Allgemeinen als „Segment” von Oberflächendaten bezeichnet wird.
-
Die nachfolgenden Beispiele werden im Zusammenhang mit einem Grafiksystem illustriert, bei dem ein Tiefenvergleichsmodus von „kleiner als” benutzt wird. Mit anderen Worten, Objekte sind an Punkten sichtbar, an denen ihre Tiefe kleiner als die von anderen Objekten an diesem Punkt ist. Man wird jedoch verstehen, dass Grafiksysteme eine Reihe verschiedener Tiefenvergleichsarten benutzen und untereinander austauschen können. Weitere Beispiele für Tiefenvergleichsarten sind „größer als”, „gleich oder größer als”, „gleich oder kleiner als”, „gleich”, „ungleich”, „immer” und „niemals”. So wird zum Beispiel ein Tiefenvergleich von „kleiner als” nur zur Verdeutlichung benutzt und die folgenden Techniken lassen sich leicht auf jede geeignete Tiefenvergleichsart anwenden.
-
1 ist eine schematische Darstellung, die eine Vorrichtung zum Erzeugen und Schattieren eines Computergrafikbildes mittels Tessellation in einer Ausgestaltung der vorliegenden Erfindung zeigt. Die Teile, die diese Vorrichtung umfassen, können als Schaltungen in einem Prozessor wie z. B. einer Grafikprozessoreinheit (GPU) oder als ein Programm implementiert werden, das auf einem programmierbaren Gerät wie z. B. einer GPU oder CPU läuft.
-
Ein Oberflächendatensegment 10 wird zu einem Tessellationsprozessor 20 geleitet, der das Segment in eine Mehrzahl von Primitiven unterteilt und die Primitive bei Bedarf von der Oberfläche des Segments durch Anwenden einer Benutzer programmierbaren Funktion oder in Abhängigkeit von einer Versatz- oder Texturkarte verschiebt, um eine Mehrzahl von tesselierten Primitiven abzuleiten.
-
Ein Segment ist typischerweise eine parametrische Funktion, die von einem Satz von Kontrollpunkten definiert wird, die die Form einer Kurve mit Bezug auf Parameter ,t' (für eine gekrümmte Linie) oder von Domänenkoordinaten ,u,v' (für eine gekrümmte Fläche) beschreiben. Ein Beispiel für ein in der Computergrafik benutztes Segment ist ein Bézier-Segment, aber der Fachmann wird verstehen, dass auch andere existieren.
-
Wie dem Fachmann bekannt ist, kann die Tessellation von Oberflächendatensegmenten in einer Grafik-Pipeline durch eine Reihe von Anwendungsprogrammierschnittstellen (APIs) unterstützt werden, wie z. B. Microsoft® Direct 3D® 11 API. Microsoft® Direct 3D® 11 API unterstützt Verschiebungsmapping, so dass sich die tessellierten Primitive an einer von der Oberfläche des Segments versetzten Stelle befinden können.
-
Nach dem Ableiten werden die tessellierten Primitive zu einem Mindest- und/oder Höchsttiefenrechner 30 geleitet, der das Segment analysiert, um Begrenzungstiefenwerte zu bestimmen.
-
Optional können die Primitive zunächst zu einer Beschneidungs- und Aussonderungseinheit (nicht gezeigt) geleitet werden, die beispielsweise nach hinten weisende, Bildschirm abseits befindliche oder nicht sichtbare Primitive entfernt, und die übrigen Primitive können dann zu einer Projektionseinheit (auch nicht gezeigt) geleitet werden, die die Primitive in Bildschirmraum umwandelt.
-
In dieser Ausgestaltung bestimmt der Mindest- und/oder Höchsttiefenrechner 30 die Mindest- und/oder Höchsttiefe des gesamten tessellierten Oberflächendatensegments, d. h. die Tiefe des vom Blickpunkt am weitesten entfernten tessellierten Oberflächendatensegment und/oder die Tiefe des dem Blickpunkt am nächsten liegenden tessellierten Oberflächendatensegments. Dies kann durch Bestimmen und Vergleichen der Tiefen jedes der tessellierten Primitive erfolgen, die das tessellierte Oberflächendatensegment bilden, während sie abgeleitet werden. Daher besteht keine Notwendigkeit, die Tiefen jedes der tessellierten Primitive nacheinander zu speichern. Das Bestimmen der Tiefe jedes der tessellierten Primitive kann jeweils mit gut bekannten Methoden erfolgen, von denen nachfolgend Beispiele angegeben werden.
-
Das Bestimmen der Mindest- und/oder Höchsttiefen eines Segments anhand der tessellierten Primitivendaten gewährleistet, dass die Mindest- und/oder Höchsttiefen den Effekt eines Verschiebungsmapping integrieren, das eventuell auf das Segment angewandt wurde. Es sind auch andere Verfahren zum Bestimmen der Mindest- und/oder Höchsttiefen für ein Segment möglich, wie der Fachmann erkennen wird. So kann zum Beispiel ein Hüllvolumen bestimmt werden, das das Objekt umgibt, von dem mit bekannten Techniken Mindest- und Höchstbegrenzungstiefenwerte bestimmt werden können. Hüllvolumen können viele Formen haben, z. B. Kugeln, Zylinder oder rechteckige Boxen. Viele der in der Computergrafik benutzten Oberflächensegmente, wie z. B. Bézier- und B-Spline-Typen, haben die Eigenschaft, dass sie völlig innerhalb der konvexen Hülle ihrer Kontrollpunkte liegen. Ein Hüllvolumen kann daher durch Analysieren der Segmente vor dem Tessellieren bestimmt werden. Man wird verstehen, dass die Genauigkeit der für das Objekt bestimmten Begrenzungstiefenwerte davon abhängt, wie nahe das Hüllvolumen das umschlossene Objekt umgibt, und dass darauf geachtet werden muss, dass die Effekte von Verschiebungsmapping berücksichtigt werden.
-
In einer alternativen Ausgestaltung können Mindest- und/oder Höchsttiefendaten durch Analysieren der jeweiligen Teile des in jeder Kachel befindlichen Oberflächendatensegments bestimmt werden. Oberflächendatensegmente können sehr groß sein und erstrecken sich häufig über mehr als eine Kachel, so dass für die jeweiligen Teile eines in einer einzigen Kachel befindlichen Segments bestimmte Mindest- und/oder Höchsttiefendaten einen erheblich kleineren Bereich von Tiefenwerten repräsentieren können als für das gesamte Segment bestimmte Mindest- und/oder Höchsttiefendaten. Ein kleinerer Bereich von Tiefenwerten erhöht die Chance, dass das Segment vor dem Rendern von der Kachel ausgesondert werden kann. Der Fachmann wird erkennen, dass eine Reihe verschiedener Methoden zum Bestimmen von Mindest- und Höchsttiefendaten für die Teile eines in einer Kachel befindlichen Segments existieren, und diese beinhalten Verfahren, die Hüllvolumen und die Konvexe-Hülle-Eigenschaften des Segments benutzen.
-
Die Anwesenheit einer Kacheleinheit 40 in dem System, die bestimmen kann, ob sich ein Primitiv ganz oder teilweise in einer Kachel befindet, macht ein Verfahren zum Bestimmen von Mindest- und/oder Höchsttiefenwerten aus den gekachelten tessellierten Primitiven besonders geeignet. Man wird verstehen, dass die Kacheleinheit 40 in diesem Fall bestimmen muss, welche tessellierten Primitive, und daher welcher Teil des tessellierten Oberflächendatensegments sich in jeder Kachel befindet. Die Tiefen jedes der das tessellierte Oberflächendatensegment in der Kachel bildenden tessellierten Primitive können bestimmt und verglichen werden, um Mindest- und/oder Höchsttiefendaten für die jeweiligen Teile des in jeder Kachel befindlichen tessellierten Oberflächendatensegments abzuleiten.
-
Die Kacheleinheit 40 unterteilt den Renderraum in eine Mehrzahl von Kacheln, die jeweils eine Mehrzahl von Bildpixeln umfassen. Kacheln sind typischerweise rechteckig, können aber auch andere Formen haben.
-
Für jede Kachel bestimmt die Kacheleinheit 40 dann, ob sich jedes der tessellierten Primitive (ganz oder teilweise) in dieser Kachel befindet. Das heißt, ob sich wenigstens ein Teil des tessellierten Primitivs in einer sichtbaren Region der Kachel befindet. Dies kann mit einer Reihe von gut bekannten Techniken erfolgen.
-
In einigen Ausgestaltungen kann die Kacheleinheit 40 einen Tiefentestprozessor 50 umfassen. Wenn bestimmt wurde, dass sich ein Objekt in einer Kachel befindet, dann vergleicht der Tiefentestprozessor einen Mindest- oder Höchsttiefenwert für das Objekt mit einem Tiefenschwellenwert für die Kachel. Der Vergleichstest erfolgt gemäß dem Tiefenvergleichsmodus des Objekts, so dass der Vergleich bestimmt, ob das Objekt potentiell in der Kachel sichtbar oder ob es verborgen ist. Der Tiefentestprozessor ist typischerweise kein Pro-Pixel-Test und kann daher nicht bestimmen, ob ein Objekt definitiv sichtbar ist. Er kann jedoch bestimmen, ob ein Objekt von anderen Objekten in der Kachel ganz verborgen wird. Wenn es verborgen wird, kann das Objekt ausgesondert und in der Anzeige-Liste für diese Kachel nicht angezeigt werden.
-
So kann beispielsweise, wie im
GB-Patent Nr. 2,378,108 der Anmelderin beschrieben ist, der Tiefenbereich (Mindest- und/oder Höchsttiefe) von sichtbaren Primitiven im „z-Puffer” für eine Kachel in einem „Teil-Rendering” benutzenden System von einer Verborgene-Flächen-Entfernungseinheit
110 zurück zur Kacheleinheit
40 gespeist werden. Wie der Fachmann verstehen wird, werden in einem „Teil-Rendering”-System einige Objekte, die sich in einer Kachel befinden, in der Anzeige-Liste für diese Kachel angezeigt, und diese Objekte werden dann mit der oben beschriebenen „z-Pufferung”-Technik gerendert. Nachfolgend werden weitere in der Kachel befindliche Objekte in der Anzeige-Liste für diese Kachel angezeigt und dann gerendert. Der Tiefenbereich im „z-Puffer” kann zurückgespeist werden, bevor diese nachfolgenden Objekte in der Anzeige-Liste für die Kachel angezeigt werden, so dass sie als Tiefenschwellenwerte in einem Tiefentest benutzt werden können.
-
Alternativ kann die Kacheleinheit 40 Mindest- und Höchsttiefenschwellenwerte bestimmen. Es ist natürlich nicht wünschenswert, dass die Kacheleinheit 40 die gesamte Tiefenarbeit dupliziert, die beim Entfernen von verborgenen Flächen durchgeführt wird. Die Kacheleinheit 40 kann jedoch beispielsweise konservative Mindest- und/oder Höchsttiefenschwellenwerte für Objekte bestimmen, die der Anzeige-Liste für eine Kachel hinzugefügt wurden, die in einem groben Tiefentest benutzt werden soll.
-
So kann beispielsweise in einem „kleiner als” Tiefenvergleichsmodus eine maximale Tiefenschwelle für eine Kachel jedes Mal aktualisiert werden, wenn ein Objekt die gesamte Kachel bedeckt, wenn dieses Objekt eine Höchsttiefe hat, die näher am Blickpunkt liegt als die derzeit gespeicherte Höchsttiefenschwelle für sichtbare Primitive in der Kachel. In diesem Fall kann die Höchsttiefenschwelle für die Kachel auf den Höchsttiefenwert dieses Objekts aktualisiert werden. Der Grund ist, dass bekannt ist, da das Objekt die genannte Kachel bedeckt, dass die Höchsttiefenschwelle von sichtbaren Primitiven in der Kachel höchstens so groß sein darf wie der Höchsttiefenwert dieses Objekts. Wenn also der Höchsttiefenwert des Objekts näher am Blickpunkt liegt als die derzeit gespeicherte Höchsttiefenschwelle für die Kachel, dann kann der Höchsttiefenwert für die Kachel aktualisiert werden. Eine Mindesttiefenschwelle für eine Kachel kann auch von den in der Kachel befindlichen Objekten bestimmt werden.
-
2 zeigt ein beispielhaftes Bildschirmport-Bild 200 mit mehreren Kacheln 205 und einem tessellierten Oberflächendatensegment 210. Die 2a und 2b sind Diagramme, die Mindest- und Höchsttiefenwerte von sichtbaren Objekten in einer der Kacheln beispielhaft zeigen. Dem vom Blickpunkt am weitesten entfernten Punkt wird der Tiefenwert 1.0 und dem nächsten Punkt der Tiefenwert 0.0 zugeordnet. Der Bereich von Tiefenwerten von sichtbaren Objekten, die als Schwellenwerte für Tiefentests benutzt werden können, wird durch durchgezogene Linien angezeigt. Die Mindest- und Höchsttiefenwerte von zwei tessellierten Beispielsegmenten 220 und 230 sind durch die gestrichelten Linien angedeutet. In diesen Beispielen ist sichtbar, dass die Tiefenwerte für die Segmente etwas konservativ sind, wie dies bei bestimmten Methoden zum Ableiten der Werte der Fall sein kann.
-
In diesem Beispiel wird ein Objekt ausgesondert, wenn bestimmt wird, dass es hinter anderen Objekten in dem Bild verborgen ist. Die Schlüsseltiefe ist daher der Mindesttiefenwert für das Objekt. Wie in dem Beispiel von 2a, wenn der Mindesttiefenwert des Objekts (die Tiefe, die dem Blickpunkt am nächsten liegt) näher am Blickpunkt liegt als die Höchsttiefenschwelle für die Kachel (d. h. die vom Blickpunkt am weitesten entfernte Tiefe), dann kann wenigstens ein Teil des Objekts in dieser Kachel sichtbar sein. Daher wird das Objekt nicht aus der Kachel ausgesondert. In dem Beispiel von 2b ist jedoch zu sehen, dass der Mindesttiefenwert des Objekts (die dem Blickpunkt am nächsten liegende Tiefe) weiter vom Blickpunkt entfernt ist als die Höchsttiefenschwelle für die Kachel. Somit ist bekannt, dass dieses tessellierte Oberflächendatensegment in der Kachel verborgen sein muss. Daher kann dieses Objekt aus dieser Kachel ausgesondert werden.
-
In einer Ausgestaltung wird der Tiefentest mit einem für ein Oberflächendatensegment bestimmten Mindest- oder Höchsttiefenwert durchgeführt. Der Tiefentest bestimmt, ob das gesamte Segment in der Kachel verborgen ist. In einer anderen Ausgestaltung wird der Tiefentest mit einem für ein Primitiv des tessellierten Oberflächendatensegments bestimmten Mindest- oder Höchsttiefenwert durchgeführt. In diesem Fall wird mit dem Tiefentest bestimmt, ob das Primitiv in der Kachel verborgen ist. Andere Primitive von demselben tessellierten Oberflächendatensegment können unabhängig getestet werden, um zu bestimmen, ob sie in der Kachel verborgen sind.
-
Dem Fachmann werden noch weitere Verfahren zum Benutzen der Mindest- und/oder Höchsttiefe des tessellierten Oberflächendatensegments einfallen, um zu bestimmen, ob das tessellierte Oberflächendatensegment in einer Kachel verborgen ist.
-
Wenn bestimmt wird, dass ein Objekt nicht aus einer Kachel ausgesondert werden kann oder wenn in dieser Phase kein Tiefentest durchgeführt wird, dann wird das Objekt in der Anzeige-Liste für diese Kachel angezeigt. Dies kann das Speichern von einem oder mehreren Indexen für jedes tessellierte Primitiv in der Anzeige-Liste für die Kachel beinhalten, die einen Zeiger auf geometrische Daten bereitstellen, die mit den im Parameterspeicher
80 gespeicherten tessellierten Primitiven assoziiert sind. In diesem Beispiel werden, wie in dem in der
GB-Patentanmeldung Nr. 2480012 offenbarten System beschrieben, keine geometrischen Daten für jedes der tessellierten Primitive im Parameterspeicher
80 gespeichert, sondern es werden Daten für das Oberflächendatensegment gespeichert, von denen die tessellierten Primitive beim Rendern erneut abgeleitet werden können. Zum Beispiel, wenn das Segment ein Bézier-Segment ist, können die Daten die Kontrollpunkte für das Segment zusammen mit den angewandten Tessellationsfaktoren beinhalten.
-
Wenn bestimmt wird, dass das gesamte tessellierte Oberflächendatensegment von einer Kachel ausgesondert werden kann, dann werden keine tessellierten Primitive in der Anzeige-Liste für diese Kachel angezeigt. Es ist jedoch zu bemerken, dass die geometrischen Daten für das Oberflächendatensegment weiterhin im Parameterspeicher 80 gespeichert werden können, wenn das tessellierte Oberflächendatensegment potentiell in anderen Kacheln sichtbar ist.
-
Nach dem Ableiten der Anzeige-Listen für jede Kachel werden die Anzeige-Listen im Speicher 60 gespeichert. Vorzugsweise werden selbst dann, wenn ein Tiefentest bereits stattgefunden hat, die Mindest- und/oder Höchsttiefendaten für das tessellierte Oberflächendatensegment im Speicher 70 gespeichert.
-
Zum Rendern jeder Kachel wird die Anzeige-Liste für die Kachel gelesen. Für Kacheln, deren Anzeige-Liste das Oberflächendatensegment vor einer Weiterverarbeitung referenziert, werden die Mindest- und/oder Höchsttiefendaten für dieses Oberflächendatensegment vom Tiefentestprozessor 90 aus dem Speicher 70 gelesen. Der Tiefentestprozessor 90 kann dann einen ersten oder weiteren Tiefentest durchführen, z. B. mit dem oben beschriebenen Verfahren. Es sind auch andere Verfahren möglich und werden dem Fachmann einfallen.
-
Man wird verstehen, dass das Durchführen eines Tiefentests in dieser Phase genauer sein kann als das Durchführen eines Tiefentests vor dem Kacheln, und daher mit höherer Wahrscheinlichkeit dazu führt, dass das Oberflächendatensegment von einer Kachel ausgesondert wird. Der Grund ist, dass Mindest- und/oder Höchsttiefenschwellenwerte für die Kachel, mit denen die Mindest- und/oder Höchsttiefenwerte des tessellierten Segments verglichen werden können, direkt vom z-Puffer der Verborgene-Flächen-Entfernungseinheit 110 bestimmt werden können. Auf diese Weise bestimmte Mindest- und/oder Höchsttiefenwerte können genauer sein als die, die in der Kacheleinheit 40 abgeleitet wurden, weil sie nicht durch Faktoren wie konservative Hüllboxen oder die Ableitung von Schwellendaten nur von Objekten beeinflusst werden, die eine gesamte Kachel abdecken. So kann es selbst dann, wenn ein Tiefentest vor dem Kacheln durchgeführt wurde, wenn das Segment nicht von allen Kacheln ausgesondert wurde, vorteilhaft sein, die Mindest-/Höchsttiefenwerte für das Segment zu speichern und einen zusätzlichen Tiefentest nach dem Kacheln auszuführen, bevor jede Kachel gerendert wird, obwohl dies den Nachteil hat, dass zusätzlicher Speicherplatz zum Speichern der Min/Max-Daten für das Segment nötig ist.
-
Wenn bestimmt wird, dass das Oberflächendatensegment von einer Kachel ausgesondert werden kann, dann ist es für diese Kachel vorteilhafterweise nicht notwendig, mit diesem Oberflächendatensegment assoziierte tessellierte Primitive zu verarbeiten. Daher besteht keine Notwendigkeit, das Oberflächendatensegment erneut zu tessellieren, um diese in der Anzeige-Liste für diese Kachel angezeigten tessellierten Primitive erneut abzuleiten.
-
Wenn bestimmt wird, dass das Oberflächendatensegment in der Kachel sichtbar sein kann, dann liest der Tessellationsprozessor 100 die mit dem Oberflächendatensegment assoziierten geometrischen Daten und tesselliert den Oberflächendatensegment erneut, um jedes der in der Anzeige-Liste für diese Kachel identifizierten tessellierten Primitive erneut abzuleiten.
-
Jedes dieser tessellierten Primitive wird dann verarbeitet, um das Bild mit gut bekannten Techniken wie oben beschrieben zu rendern.
-
Jedes der tessellierten Primitive kann zur Verborgene-Flächen-Entfernungseinheit 110 geleitet werden, die alle in der Kachel nicht sichtbaren Flächen entfernt, und die resultierenden Pixeldaten können zu einer Textur- und Schattiereinheit 120 geleitet werden, die Pixel- oder Texturschattierung vor dem Schreiben von endgültigen Pixelwerten zur Anzeige in den Speicher anwendet.
-
3 ist ein Flussdiagramm, das eine Ausgestaltung der vorliegenden Erfindung zeigt. In Schritt 300 wird ein Oberflächendatensegment tesselliert, um eine Mehrzahl von tessellierten Primitiven abzuleiten, die von der Oberfläche des Oberflächendatensegments verschoben werden können. In Schritt 310 werden dann Mindest- und/oder Höchsttiefendaten für das tessellierte Oberflächendatensegment von den tessellierten Primitiven bestimmt. In Schritt 320 können dann für jede Kachel, in der sich das tessellierte Oberflächendatensegment befindet, die Mindest- und/oder Höchsttiefendaten für das tessellierte Oberflächendatensegment benutzt werden, um zu bestimmen, ob das tessellierte Oberflächendatensegment in der Kachel verborgen ist.
-
Wenn bestimmt wird, dass das tessellierte Oberflächendatensegment in der Kachel verborgen ist, dann wird das tessellierte Oberflächendatensegment in Schritt 340 von dieser Kachel ausgesondert. Wenn bestimmt wird, dass das tessellierte Oberflächendatensegment nicht in der Kachel verborgen ist, dann wird in Schritt 330 eine Anzeige-Liste für diese Kachel abgeleitet, die diejenigen tessellierten Primitive anzeigt, die sich in der Kachel befinden. Zusätzlich können die Mindest- und/oder Höchsttiefendaten für das tessellierte Oberflächendatensegment gespeichert werden. Anzeige-Listen und Mindest- und/oder Höchsttiefendaten werden in einem Speicher 350 gespeichert.
-
Zum Rendern jeder Kachel werden in Schritt 360 für jede Kachel, in der sich das tessellierte Oberflächendatensegment befindet, die Mindest- und/oder Höchstdatenwerte für den Oberflächendatensegment gelesen und benutzt, um zu bestimmen, ob das tessellierte Oberflächendatensegment in dieser Kachel verborgen ist. Wenn bestimmt wird, dass das tessellierte Oberflächendatensegment in der Kachel verborgen ist, dann wird dieses tessellierte Oberflächendatensegment in Schritt 380 von der Kachel ausgesondert und es erfolgt keine weitere Verarbeitung. Wenn bestimmt wird, dass das tessellierte Oberflächendatensegment nicht verborgen ist, dann wird in Schritt 390 jedes der in dieser Kachel befindlichen tessellierten Primitive verarbeitet, um die Kachel zu rendern. In der oben beschriebenen Ausgestaltung beinhaltet dies das erneute Tessellieren des in dem Speicher gespeicherten Oberflächendatensegments, um wenigstens diejenigen tessellierten Primitive erneut abzuleiten, die in der Anzeige-Liste für die Kachel angezeigt sind, und dann jedes dieser tessellierten Primitive mit gut bekannten Techniken zu verarbeiten.
-
4 ist ein Flussdiagramm, das eine andere Ausgestaltung der vorliegenden Erfindung zeigt. In Schritt 400 wird ein Oberflächendatensegment tesselliert, um eine Mehrzahl von tessellierten Primitiven abzuleiten, die von der Oberfläche des Oberflächendatensegments verschoben werden können. In Schritt 410 werden für jede Kachel, in der sich ein tesselliertes Primitiv befindet, Mindest- und/oder Höchsttiefenwerte für das Primitiv benutzt, um zu bestimmen, ob das Primitiv in der Kachel verborgen ist.
-
Wenn bestimmt wird, dass das tessellierte Primitiv in der Kachel verborgen ist, wird das tessellierte Primitiv in Schritt 430 von dieser Kachel ausgesondert. Wenn bestimmt wird, dass das tessellierte Primitiv nicht in der Kachel verborgen ist, dann können in Schritt 420 die Mindest- und/oder Höchsttiefendaten für den nicht verborgenen Primitiven im Oberflächensegment bestimmt werden. In Schritt 440 wird eine Anzeige-Liste für die Kachel abgeleitet, die derjenige tessellierten Primitive anzeigt, die nicht verborgen sind und die sich in der Kachel befinden. Darüber hinaus können die Mindest- und Höchsttiefendaten für das tessellierte Oberflächendatensegment gespeichert werden. Anzeige-Listen und Mindest- und/oder Höchsttiefendaten werden im Speicher 450 gespeichert.
-
Zum Rendern jeder Kachel werden in Schritt 460 für jede Kachel, in der sich das tessellierte Oberflächendatensegment befindet, die Mindest- und/oder Höchsttiefendaten für das Oberflächendatensegment gelesen und benutzt, um zu bestimmen, ob das tessellierte Oberflächendatensegment in dieser Kachel verborgen ist. Wenn bestimmt wird, dass das tessellierte Oberflächendatensegment in der Kachel verborgen ist, dann wird dieses tessellierte Oberflächendatensegment in Schritt 480 von der Kachel ausgesondert und es findet keine weitere Verarbeitung statt. Wenn bestimmt wird, dass das tessellierte Oberflächendatensegment nicht verborgen ist, dann wird in Schritt 490 jedes der in dieser Kachel befindlichen tessellierten Primitive verarbeitet, um die Kachel zu rendern. In der oben beschriebenen Ausgestaltung beinhaltet dies das erneute Tessellieren des im Speicher gespeicherten Oberflächendatensegments, um wenigstens die in der Anzeige-Liste für die Kachel angezeigten tessellierten Primitive erneut abzuleiten und dann jedes dieser tessellierten Primitive mit gut bekannten Techniken zu verarbeiten.
-
5 ist ein Flussdiagramm, das ein Verfahren zeigt, das von einem Mindest- und/oder Höchsttiefenrechner 30 zum Bestimmen eines Begrenzungstiefenwertes für einen Satz von einem oder mehreren Primitiven benutzt werden kann wie z. B. denen, die durch Tessellation eines Oberflächendatensegments erzeugt werden könnten. In diesem Beispiel wird die Bestimmung eines Mindesttiefenwertes gezeigt.
-
Bei 500 wird ein Primitiv gelesen und bei 510 wird ein Eckpunkt von dem Primitiv gelesen. Typischerweise umfasst ein Eckpunkt Koordinaten X, Y und Z, wobei die Z-Koordinate der Tiefenwert ist. Bei 520 wird, wenn der Eckpunkt der erste Eckpunkt aus dem ersten Primitiv in dem Satz von Primitiven ist, die Z-Koordinate des Eckpunkts bei 530 gespeichert. Dies ergibt einen Anfangswert für weitere Vergleiche. Für alle nachfolgenden Eckpunkte wird bei 540 die Z-Koordinate des Eckpunkts mit einem zuvor bei 530 gespeicherten Z-Wert verglichen, um zu bestimmen, ob er kleiner ist. Wenn kleiner, wird die Z-Koordinate des Eckpunkts bei 530 gespeichert, wobei eventuell zuvor gespeicherte Werte ersetzt werden. Bei 550 erfolgt ein Test, um zu bestimmen, ob der Eckpunkt der letzte Eckpunkt in dem Primitiv ist. Wenn nicht, dann kehrt der Ablauf zu 510 zurück und der nächste Eckpunkt von dem Primitiv wird auf ähnliche Weise verarbeitet. Nach dem Verarbeiten des letzten Eckpunkts in einem Primitiv erfolgt bei 560 ein Test, um zu bestimmen, ob das Primitiv das letzte Primitiv in dem Satz ist. Wenn nicht, kehrt der Ablauf zu 500 zurück und das nächste Primitiv wird gelesen und verarbeitet. Nach dem Verarbeiten des letzten Primitivs in dem Satz ist der bei 530 gespeicherte Z-Wert der kleinste Z-Wert von allen untersuchten Eckpunkten.
-
Der Fachmann wird erkennen, dass das Verfahren von 5 modifiziert werden kann, um einen maximalen Begrenzungstiefenwert von einem Satz von Primitiven zu bestimmen oder sowohl Mindest- als auch Höchst-Begrenzungstiefenwerte für einen Satz von Primitiven in nur einem Durchgang durch die Primitivendaten zu erzeugen.
-
6 ist ein Flussdiagramm, das ein Verfahren zeigt, das von einem Mindest- und/oder Höchsttiefenrechner 30 zum Bestimmen eines Begrenzungstiefenwertes für ein Oberflächendatensegment benutzt werden kann. In diesem Beispiel wird ein Mindesttiefenwert von Eckpunkten bestimmt, die die Kontrollpunkte des Oberflächensegments sind. Die Kontrollpunkte des Oberflächensegments bilden eine konvexe Hülle, die bekanntlich das Segment begrenzt.
-
Bei 600 wird ein Objekt gelesen und bei 610 wird ein Eckpunkt von dem Objekt gelesen. Bei 620 wird der Eckpunkt optional auf Relevanz geprüft, da hinlänglich bekannt ist, dass bei Kurven wie z. B. dem B-Spline die Kurve durch die konvexe Hülle einer Reihe von benachbarten Kontrollpunkten begrenzt wird und dass die Zahl von Nachbarpunkten, die die konvexe Hülle definieren, vom Grad der Kurve abhängig ist. Der Relevanztest kann besonders nützlich sein, wenn ein Hüllvolumen für den Teil eines Oberflächensegment bestimmt wird, der sich in einer bestimmten Kachel befindet, da nur die Kontrollpunkte in und um diese Kachel die konvexe Hülle für den Oberflächensegment innerhalb der Kachel definieren. Ein von einer kleineren Zahl von Kontrollpunkten bestimmtes Hüllvolumen kann kleiner sein und kann daher ein wirksameres Aussondern ermöglichen als ein Hüllvolumen, das mit allen Kontrollpunkten für das Oberflächensegment berechnet wird. Wenn bestimmt wird, dass ein Eckpunkt nicht relevant ist, wird der Ablauf bei 660 fortgesetzt.
-
Wenn bei 630 der Eckpunkt der erste relevante Eckpunkt des Oberflächensegments ist, wird die Z-Koordinate des Eckpunkts bei 640 gespeichert. Dies ergibt einen Anfangswert für weitere Vergleiche. Für alle nachfolgenden Eckpunkte wird bei 650 die Z-Koordinate des Eckpunkts mit einem zuvor bei 640 gespeicherten Z-Wert verglichen, um zu bestimmen, ob er kleiner ist. Wenn er kleiner ist, wird die Z-Koordinate des Eckpunkts bei 640 gespeichert, wobei ein zuvor gespeicherter Wert ersetzt wird.
-
Bei 660 wird geprüft, ob der Eckpunkt der letzte Eckpunkt im Oberflächensegment ist. Wenn nicht, kehrt der Ablauf zu 610 zurück. Nach dem Verarbeiten des letzten Eckpunkts im Oberflächensegment ist der bei 640 gespeicherte Z-Wert der kleinste Z-Wert aller untersuchten relevanten Eckpunkte.
-
Der Fachmann wird erkennen, dass das Verfahren von 6 modifiziert werden kann, um entweder einen Höchstwert oder sowohl Mindest- als auch Höchst-Begrenzungstiefenwerte nach Bedarf zu bestimmen.
-
Der Fachmann wird erkennen, dass Funktionen, Techniken oder Verfahren ganz oder teilweise mit einer dedizierten Schaltung, einer anwendungsspezifischen integrierten Schaltung, einem programmierbare Logik-Array, einem feldprogrammierbaren Gate-Array oder dergleichen ausgeführt werden können. Dies kann beispielsweise Hardware in Form von Schaltungen umfassen. Eine solche Schaltung kann Transistoren und/oder andere Hardware-Elemente beinhalten, die in einem Herstellungsprozess verfügbar sind. Solche Transistoren und/oder anderen Elemente können zum Bilden von Schaltungen oder Strukturen verwendet werden, die Speicher wie Register, Flipflops oder Latches, logische Operatoren wie z. B. boolesche Operationen, mathematische Operatoren wie Addierer, Multiplizierer oder Schieber und Zusammenschaltungen als Beispiele beinhalten. Solche Elemente können als kundenspezifische Schaltungen oder standardmäßige Zellbibliotheken, Makros oder auf anderen Abstraktionsebenen bereitgestellt werden. Solche Elemente können in einer spezifischen Anordnung zusammengeschaltet werden. Dazu können Schaltungen mit fester Funktion und/oder Schaltungen gehören, die zum Ausführen von einer oder mehreren Funktionen programmiert werden können; eine solche Programmierung kann über ein Firmware- oder Software-Update oder über Steuermechanismen bereitgestellt werden. In einem Beispiel beinhaltet Hardware-Logik Schaltungen, die eine Festfunktionsoperation, eine Zustandsmaschine oder einen Prozess implementieren.
-
Es soll auch jegliche Software abgedeckt sein, die die Konfiguration von Hardware „beschreibt” oder definiert, die ein Modul, Funktionalität, eine Komponente oder Logik wie oben beschrieben implementiert, wie z.B. HDL-(Hardware Description Language)-Software, wie zum Entwerfen von integrierten Schaltungen oder zum Konfigurieren von programmierbaren Chips zum Ausführen von gewünschten Funktionen benutzt. Das heißt, es kann ein computerlesbares Speichermedium bereitgestellt werden, auf dem computerlesbarer Programmcode zum Erzeugen einer Verarbeitungseinheit codiert ist, die zum Ausführen von beliebigen der hierin beschriebenen Verfahren oder zum Erzeugen einer Verarbeitungseinheit konfiguriert ist, die eine beliebige hierin beschriebene Vorrichtung umfasst.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- GB 2480012 [0029, 0055]
- GB 2378108 [0031, 0048]