DE3706509A1 - Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystem - Google Patents

Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystem

Info

Publication number
DE3706509A1
DE3706509A1 DE19873706509 DE3706509A DE3706509A1 DE 3706509 A1 DE3706509 A1 DE 3706509A1 DE 19873706509 DE19873706509 DE 19873706509 DE 3706509 A DE3706509 A DE 3706509A DE 3706509 A1 DE3706509 A1 DE 3706509A1
Authority
DE
Germany
Prior art keywords
segment
data
processing
processor
memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
DE19873706509
Other languages
English (en)
Inventor
Walter Robert Steiner
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
STAR TECHNOLOGIES, INC., STERLING, VA., US
Original Assignee
General Electric Co
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by General Electric Co filed Critical General Electric Co
Publication of DE3706509A1 publication Critical patent/DE3706509A1/de
Withdrawn legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/40Hidden part removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/06Ray-tracing

Description

Die Erfindung bezieht sich auf elektronische Verarbeitungs­ systeme und betrifft insbesondere ein elektronisches System zum Manipulieren von Daten, welche geometrische Objekte und zugehörige Information darstellen, in einem Computergra­ phikanzeigesystem.
Die Synthese von visuellen Szenen durch die Verwendung von Computern (Computergraphik) ist ein wachsender Bereich der Computerwissenschaft. Es gibt zahllose Verwendungszwecke für Computergraphik, u.a. computerunterstützten Entwurf (computer-aided design oder CAD), die Synthese von Demon­ strationskarten, das Herstellen von Titeln und anderen Graphikanzeigen für den Fernsehgebrauch und die Simulation von physikalischen Ereignissen.
Zum Erleichtern des Erzeugens einer Szene, die ein- oder mehrere Objekte enthält, mittels Computer ist normalerwei­ se der erste Schritt, eine dreidimensionale Beschreibung der anzuzeigenden Objekte zu erzeugen und sie in mathemati­ scher Form in einer Graphikdatenbasis zu speichern. Die Da­ ten werden dann verarbeitet und manipuliert, so daß die Szene auf einem Anzeigeschirm abgebildet werden kann.
Das Verarbeiten von Information aus einer Graphikdatenbasis kann so aufgefaßt werden, daß es folgende vier Grundfunktio­ nen beinhaltet:
  • 1) Entnehmen von Daten, die einem Teil eines Graphikob­ jekts entsprechen, aus der Graphikdatenbasis,;
  • 2) Bestimmen, welche Bereiche des Graphikobjekts auf dem Anzeigeschirm sichtbar sein sollen;
  • 3) Transformieren der dreidimensionalen Beschreibung des Graphikobjekts in eine zweidimensionale Beschreibung in Bildschirmkoordinaten; und
  • 4) Auswählen der Bildelemente des Bildschirms, die akti­ viert werden müssen, um das Objekt anzuzeigen, Festle­ gen von deren Farbe und Intensität, und Aktivieren der­ selben, um das gewünschte Graphikbild zu bilden.
Die Erfindung befaßt sich mit dem zweiten und dem dritten Verarbeitungsschritt.
Ein Format zum Speichern einer Graphikdatenbasis wird als "hierarchische Anzeigeliste" bezeichnet, in welcher Graphik­ daten, die verschiedene Objekte beschreiben (oder Teile von Objekten), in "Segmenten" gespeichert sind. Jedes Segment kann so aufgefaßt werden, daß es ein Graphikobjekt dar­ stellt. Jedem Segment können ein oder mehrere Segmente in einer "Eltern-Kind"-Beziehung zugeordnet sein. Dem Kindseg­ ment eines Elternsegments können wiederum ein oder mehrere Kindsegmente zugeordnet sein. Diese Eltern-Kind-Beziehung zwischen den Segmenten ergibt eine hierarchische inverse "Baum"-Struktur.
Jedes Segment einer hierarchischen Graphikdatenbasis hat typisch strukturelle Information, die "Zeiger" zu Eltern-, Kind- und "Geschwister"-Segmenten enthält. Geschwisterseg­ mente sind diejenigen Segmente, die dasselbe Elternsegment haben. Ein Zeiger zu einem Segment identifiziert den Start­ platz dieses Segments in einem Computersystemspeicher oder einer Speichervorrichtung. Zusätzlich zu den hierarchischen strukturellen Daten kann jedes Segment außerdem ein Graphik­ element und Attribute des Graphikelements enthalten. Ein Graphikelement ist typisch ein einfaches ebenes Objekt, beispielsweise ein Polygon oder ein Vektor, das durch eine Liste von Koordinaten in einem zweckmäßigen dreidimensio­ nalen Koordinatensystem für dieses besondere Graphikelement definiert ist. Attributdaten für ein Graphikelement können die Farbe oder andere Eigenschaften des Graphikelements festlegen und außerdem eine Transformationsmatrix enthalten, die die räumliche Position und Ausrichtung des Graphikele­ ments dieses Segments in bezug auf das Koordninatensystem seines Elternsegments angibt. Ein Merkmal eines Typs von hierarchischer Graphikdatenbasis ist, daß Attributinforma­ tion, wenn sie nicht von dem Elternsegment verschieden ist, in dem Kindsegment nicht definiert zu werden braucht, son­ dern statt dessen von dem Elternsegment "geerbt" werden kann.
Computersysteme enthalten häufig periphere Prozessoren, um die Rechengeschwindigkeit des Gesamtsystems zu steigern. Periphere Prozessoren sind typisch spezialisierte Rechen­ systeme, die dafür ausgelegt sind, eine oder mehrere Funktio­ nen effizient zu erfüllen. Ein solcher peripherer Prozessor ist ein Graphikprozessor, der dafür ausgelegt ist, Daten aus einer Graphikdatenbasis zu empfangen, Teile dieser Daten zum Weiterverarbeiten auszuwählen, die Weiterverarbeitung auszu­ führen und die verarbeiteten Daten zu einem weiteren Spe­ zialprozessor zur Anzeige auf einem Bildschirm zu übertragen.
Solche Graphikprozessoren werden für die vielfältigsten Zwecke benutzt. Beispielsweise werden in interaktiven CAD- Systemen oft Graphikprozessoren in Verbindung mit einem Host-Computer (d.h. einem Fremd- oder Hilfscomputer) benutzt, um ein Modell des zu entwerfenden Objekts oder der zu ent­ werfenden Objekte zu speichern und anzuzeigen. Ein Entwerfer führt das System durch verschiedene Eingangsvorrichtungen, um das Modell zu erzeugen, häufig auf der Basis Stück für Stück. Die verschiedenen Stücke des Modells bilden eine Graphikdatenbasis, die durch den Graphikprozessor gespei­ chert und auf Befehl angezeigt wird. Änderungen an dem Mo­ dell durch den Entwerfer veranlassen das System, die Daten­ basis zu modifizieren und den Bildschirm zu aktualisieren, um das Bild des modifizierten Modells anzuzeigen.
Ein geeignet ausgelegter Graphikprozessor kann auf Befehle aus einem Host-Computer hin Segmente einer hierarchischen Datenbasis, die typisch in einem separaten Speicher des Gra­ phikprozessors gespeichert ist, erzeugen, kopieren oder lö­ schen. Der Graphikprozessor kann weiter auf Befehle auf der Host-Ebene hin verschiedene Graphikdaten (wie beispielsweise die Attribute, die Graphikelemente und die Transformations­ matrix innerhalb jedes Segments der Graphikdatenbasis) löschen, hinzufügen oder modifizieren. Nachdem die hierar­ chische Datenbasis vervollständigt worden ist, liest und verarbeitet der Graphikprozessor die Graphikdatenbasis und erzeugt Bilder auf einem Anzeigeschirm von den Objekten, die durch die Graphikdatenbasis dargestellt werden, wie sie durch ein vom Benutzer definiertes "Darstellungsfeld" be­ trachtet werden. Beim Lesen der Graphikdatenbasis "durch­ läuft" der Graphikprozessor die Datenbasis durch Lesen von Daten aus einem ersten Segment der Datenbasis und anschlies­ sendes Bewegen zu einem verwandten Segment (entweder Eltern, Kind oder Geschwister), das durch die Zeiger des ersten Segments identifiziert wird, gemäß einem Durchlaufalgorith­ mus. Auf diese Weise durchläuft der Graphikprozessor den Segment-"Baum", bis die Daten in der Graphikdatenbasis ver­ arbeitet worden sind.
Weil die Graphikverarbeitung eine extrem rechenintensive Verarbeitungsaufgabe ist, wenn die Graphikdatenbasis in einer annehmbaren Zeit verarbeitet werden soll, kann ein peripherer Graphikprozessor eine Anzahl von Spezialunterpro­ zessoren benutzen, um separate Teile der Gesamtaufgabe aus­ zuführen. Ein solcher Unterprozessor ist ein Geometriepro­ zessor.
Ein ausgeklügelter Geometrieprozessor kann eine Anzahl von Verarbeitungsfunktionen an der Graphikdatenbasis der Seg­ mente ausführen. Eine wichtige Funktion ist es, die Graphik­ elemente jedes Segments zu testen, um festzustellen, ob die Graphikelemente innerhalb des Sichtfeldes sind, welches durch das Darstellungsfeld festgelegt ist. Wenn nicht, können das Segment und seine sämtlichen Kind-Segmente für die Zwecke der weiteren Verarbeitung außer Betracht gelassen werden, wodurch die Gesamtverarbeitungsgeschwindigkeit ge­ steigert wird.
Zusätzliche Geometrieprozessorfunktionen können die Kaska­ dierung der Tranformationsmatrizen beinhalten, um eine Transformationsmatrix für jedes Segment zu erzeugen, die den Graphikelementkoordinatensatz des Segments in den Koordina­ tensatz des Darstellungsfeldsegments an der "Spitze" der um­ gekehrten Baumstruktur transformieren kann. Außerdem kann der Geometrieprozessor teilweise sichtbare Graphikelemente "clippen" (abschneiden), so daß diejenigen Teile von Gra­ phikelementen, die sich außerhalb des Sichtfeldes erstrek­ ken, nicht verarbeitet werden.
Graphikelemente, die in drei Dimensionen definiert sind, müssen in die zweidimensionale Bildebene der Anzeige proji­ ziert werden. Zwei prinzipielle Projektionstechniken sind die Parallelprojektion und die perspektivische Projektion. Die Parallelprojektion kann ausgeführt werden durch einfa­ ches Ignorieren der dritten Koordinate (Tiefe) des dreidi­ mensionalen Koordinatensatzes. Die perspektivische Projek­ tion kann ausgeführt werden, indem die Komponenten der er­ sten beiden Koordinaten (Höhe und Breite) durch die dritte Komponente (Tiefe) dividiert werden, um den Effekt einer Verringerung der Größe für diejenigen Graphikelemente zu er­ zielen, welche von dem Betrachter "weiter entfernt" sind.
Nachdem ein Graphikelement geclippt, projiziert und/oder anderweitig transformiert worden ist, kann ein Geometriepro­ zessor die Koordinaten des Graphikelements in die "Hardware- Koordinaten" umwandeln, die zum Anzeigen der Graphikelemente auf einem Bildschirm benutzt werden. Aus den Hardware-Koordi­ naten werden die Graphikelemente durch einen Anzeigeprozes­ sor "gerastert", der die Hardwarekoordinaten der Graphikele­ mente in eine Sammlung von Bildelementen umwandelt. Nachdem ein Graphikelement gerastert worden ist, werden verborgene Oberflächen, die durch überlappende Graphikelemente verur­ sacht werden, beseitigt.
Obige Darlegungen zeigen, daß ein extensives Ausmaß an Be­ rechnung oft erforderlich ist, um das Graphikelement eines Segments zu verarbeiten und anzuzeigen. Komplexe Modelle können eine Datenbasis aus tausenden von Segmenten beinhal­ ten. Infolgedessen kann ein Graphikprozessor ein beträcht­ liches Ausmaß an Zeit benötigen, um die Daten in einer Gra­ phikdatenbasis in ein Bild auf einem Bildschirm umzuwandeln. Es ist daher erwünscht, eine Graphikprozessorarchitektur zu entwickeln, die eine sehr hohe Graphikverarbeitungsgeschwin­ digkeit hat. Es ist weiter erwünscht, eine Graphikprozessor­ architektur zu entwickeln, bei der eine Vielzahl von Unter­ prozessoren benutzt wird, um die komplexe Aufgabe des Verar­ beitens einer Graphikdatenbasis zu einem Bild zu untertei­ len und so eine höhere Effizienz und eine höhere Verarbei­ tungsgeschwindigkeit zu erzielen. Es ist deshalb erwünscht, einen schnellen Graphikgeometrieprozessor zu entwickeln, der an der Aufgabe des Verarbeitens einer Graphikdatenbasis be­ teiligt wird.
Die Erfindung erreicht dieses und weitere Ziele mit Hilfe eines Geometrieprozessors, der eine neue innere Verarbei­ tungsarchitektur und eine neue innere Systemarchitektur hat, die schnelles und effizientes Verarbeiten einer Graphikdaten­ basis mit einem einfachen, aber leistungsfähigen Entwurf ge­ statten.
Die Erfindung schafft einen neuen Geometrieprozessor, der die Verarbeitungsgeschwindigkeit von Graphikdaten in einem Graphikverarbeitungssystem beträchtlich verbessert. Das wird mit einem Geometrieprozessor erreicht, der eine besondere interne Architektur und Systemarchitektur hat, welche das Verarbeiten einer Graphikdatenbasis erleichtern. Es gibt drei Eigenschaften eines Geometrieprozessors, die äußerst erwünscht sind. Die erste Eigenschaft ist eine hohe Daten­ übertragungsgeschwindigkeit in den und aus dem Geometrie­ prozessor. Die zweite Eigenschaft ist die Möglichkeit des Ausführens einer großen Anzahl von unterschiedlichen mathe­ matischen Operationen, wie beispielsweise Multiplikation, Division, Matrixskalarprodukte, Matrixvektorprodukte, Qua­ dratwurzeln usw. Eine Sequenz dieser mathematischen Berech­ nungen wird als ein Algorithmus bezeichnet. Die dritte Eigen­ schaft ist ein hoher Grad an Programmierbarkeit, so daß die neuen Algorithmen und Verfahren ausgeführt werden können.
Je mehr Genauigkeit bei einer mathematischen Operation be­ nutzt wird, um so breiter ist der Bereich der möglichen Ver­ wendungszwecke des Geometrieprozessors. Einige Verwendungs­ zwecke erfordern 32-Bit-Gleitpunkt- oder -Gleitkommazahlen, wogegen andere nur 16-Bit-Festpunkt- oder -Festkomma genauigkeit erfordern. Ein Abgleich muß erzielt werden zwi­ schen höherer Genauigkeit (die ein kostspieligeres System beinhaltet), größerer Flexibilität bei der Ausführung der verschiedenen Algorithmen und der Systemverarbeitungsgeschwin­ digkeit. Es ist äußerst erwünscht, die vielfältigsten Algo­ rithmen auszuführen und Daten so schnell wie möglich zu übertragen, um dem Benutzer ein äußerst interaktives Graphik­ system zur Verfügung zu stellen. Im allgemeinen wird jedoch das System umso mehr kosten, je höher die Geschwindigkeit ist.
Deshalb hat ein System zahlreiche Vorteile, das verteilte Prozessoren zum Ausführen der notwendigen Schritte beim An­ zeigen einer Graphikdatenbasis umfaßt.
In der dargestellten Ausführungsform ist der Geometriepro­ zessor nach der Erfindung verbunden mit a) einem Terminal­ prozessor zum Erzeugen und Aufrechterhalten einer Graphik­ datenbasis aufgrund von Befehlen aus dem Host-Computer, b) einem Baumdurchlaufprozessor, der die Datenbasis unab­ hängig durchläuft, die Segmente der Graphikdaten mit einer für die Geometrieverarbeitung optimierten Geschwindigkeit schnell liest, und c) einem Anzeigeprozessor zum Umwandeln von verarbeiteten Datenbasissegementen in ein sichtbartes Bild.
Der Baumdurchlaufprozessor adressiert schnell den Graphik­ prozessorspeicher, der die Graphikdatenbasis speichert, und liefert einen Strom von Graphikdatensegmenten über einen Hochgeschwindigkeitsanzeigelistenspeicherbus zu dem Geome­ trieprozessor. Der Geometrieprozessor sondert Segmente aus, die auf dem Bildschirm nicht sichtbar sein werden, und über­ trägt die Attributdaten von "sichtbaren" Segmenten über einen zweiten, verbesserten Stapelbus, der den Geometrieprozessor mit einem Stapelspeicher verbindet, welcher sich in dem Baum­ durchlaufprozessor befindet. Es hat sich gezeigt, daß eine solche Anordnung die Geschwindigkeit merklich steigert, mit der Graphikdaten aus der Graphikdatenbasis gelesen und ver­ arbeitet werden können.
Nachdem das letzte Segment eines Durchlaufweges erreicht worden ist, kehrt der Baumdurchlaufprozessor die Richtung um, indem er sichtbare Elemente des Weges durch Auslesen von ausgesonderten Segmenten aus seinem Stapelspeicher nach­ zieht. Während des umgekehrten Durchlaufes werden die Attributdaten der sichtbaren Segmente aus dem Baumdurchläu­ ferstapelspeicher über den Stapelbus zurück in den Geome­ trieprozessor übertragen. Darüber hinaus adressiert der Baumdurchläufer die zugeordneten Graphikelemente der sicht­ baren Elemente, die in der Graphikdatenbasis gespeichert sind, und überträgt die Graphikelemente über den Anzeige­ listenspeicherbus zu dem Geometrieprozessor zu weiteren Verarbeitung. Es hat sich gezeigt, daß eine solche Anordnung die Ausnutzungsrate des Geometrieprozessors und die Datenver­ arbeitungsrate des Graphikprozessorsystems als ganzem be­ trächtlich steigert. Infolgedessen können Bilder auf einem Bildschirm bei Modifizierungen der Graphikdatenbasis mit einer sehr hohen Geschwindigkeit aktualisiert werden.
Die bevorzugte Ausführungsform des Geometrieprozessors ist in der Lage, mit Datenübertragungsgeschwindigkeiten von mehr als 100 Megabyte pro Sekunde und mit Rechengeschwindigkeiten von 100 Millionen Befehlen pro Sekunde oder 30 Millionen 32- Bit-Gleitpunktbefehlen pro Sekunde zu arbeiten, bei Mikro­ programmsteuerung der Geometrieprozessorhardware, damit sich ein hoher Grad an Flexibilität bei der Ausführung der vielfältigsten Geometrieverarbeitungsalgorithmen ergibt. Der Geometrieprozessor nach der Erfindung beinhaltet einen spe­ ziellen 32-Bit-Gleitpunktakkumulatorentwurf, um eine Summe von Produkten sehr effizient zu bilden.
Der Geometrieprozessor nach der Erfindung beinhaltet außer­ dem eine neue mathematische 32-Bit-Gleitpunkt-Transforma­ tionsschaltung, die Divisions- und Quadratwurzeloperationen sowie Kurvenapproximationsberechnungen mit hoher Datenge­ schwindigkeit ausführt.
Der Anmeldungsgegenstand beinhaltet außerdem eine Multi­ funktions-Arithmetisch-logische-Einheit-Schaltung, die Spe­ zialentscheidungshardware hat, welche benutzt wird, um das Aussondern, Clippen und andere Algorithmen, die in den Geo­ metrieprozessor einprogrammiert sind, zu beschleunigen.
Der Geometrieprozessor ist in seiner bevorzugten Ausfüh­ rungsform ein programmierbarer arithmetischer Gleitpunkt- Einzelplatinenprozessor mit Pipeline-Architektur, der spe­ ziell maßgeschneidert worden ist, um geometrische Algorith­ men auszuführen, die für Graphikzwecke benutzt werden.
Ausführungsbeispiele der Erfindung werden im folgenden unter Bezugnahme auf die Zeichnungen näher beschrieben. Es zeigen
Fig. 1 ein Schaltschema eines Graphikprozessor­ systems, das den Geometrieprozessor nach der Erfindung enthält,
Fig. 2 ein schematisches Beispiel der als umgekehr­ ter Baum ausgebildeten hierarchischen Da­ tenbasisstruktur, die in Verbindung mit der Erfindung benutzt wird,
Fig. 3 ein schematisches Beispiel von zwei Graphik­ objekten mit unterschiedlichen Koordinaten­ sätzen,
Fig. 4 ein Blockschaltbild der gesamten Geometrie­ prozessorschaltungsanordnung,
Fig. 5 ein Blockschaltbild der internen Steuer­ schaltungsanordnung für den Geometriepro­ zessor,
Fig. 6 ein Blockschaltbild der internen arithme­ tischen Pipeline-Schaltungsanordnung des Geometrieprozessors,
Fig. 7 ein Blockschaltbild der möglichen Datenwege durch die arithmetische Pipeline-Schaltungs­ anordnung des Geometrieprozessors, und
Fig. 8a und 8b Schaltbilder der Verzögerungslogikschal­ tungen des Geometrieprozessors.
In den Zeichnungen tragen gleiche Teile gleiche Bezugszei­ chen.
Fig. 1 zeigt ein Schaltbild eines Graphikprozessorsystems 100, das den Geometrieprozessor nach der Erfindung enthält. Das Graphikprozessorsystem 100 enthält einen Terminalprozes­ sor 112, der Befehle auf Host-Ebene ausführt, die er aus einem Host-Computer (nicht dargestellt) über ein Host-Inter­ face 114 empfängt. Die Mehrheit der Hostebenenbefehle wird zum Aufbauen und zum Management einer Graphikdatenbasis in Form einer hierarchischen Anzeigeliste benutzt, die in einem Anzeigelistenspeicher ("DLM") 116 gespeichert wird. Der Terminalprozessor 112 verkehrt mit dem DLM 116 über einen Universalsystembus 118, der in der dargestellten Ausfüh­ rungsform ein Standard-32-Bit-"VMEbus" ist. Die Spezifika­ tionen für den VMEbus-Standard finden sich in VMEbus Specification Manual, Rev. B, August 1982, VMEbus Manufac­ turers Group.
Hostebenenbefehle werden durch ein Hostapplikationsprogramm gesendet, das sich in dem Host-Computer befindet. Der Benut­ zer des Hostapplikationsprogramms kann außerdem Daten direkt in das Graphikprozessorsystem 100 unter Verwendung einer Vielfalt von Graphikeingabevorrichtungen eingeben, beispiels­ halber ein Graphiktablett 120, eine alphanumerische Tastatur 122, oder über verschiedene andere Eingabevorrichtungen, wie beispielsweise Steuerknüppel, Mäuse, Wählkästen und Steuer­ kugeln (nicht dargestellt). Die Eingabe aus diesen Vorrich­ tungen kann benutzt werden, um Graphikkommandos zum Modifizie­ ren der Graphikdatenbasis, zum Ändern der Anzeigeparameter und zum Schwenken oder Zoomen der durch einen Bildschirm 126 gelieferten Graphikanzeige zu geben. Auf diese Weise können Applikationen, wie beispielsweise CAD-Systeme, eine interaktive lokale Steuerung über den Bildschirm 126 haben.
Ein Geometrieverarbeitungsuntersystem 130 ist mit dem Termi­ nalprozessor 112 über den Systembus 118 verbunden. Das Geo­ metrieverarbeitungsuntersystem 130 enthält einen Baumdurch­ läuferprozessor 132 zum schnellen Lesen der hierarchischen Anzeigeliste, die in dem DLM 116 gespeichert ist. Verbunden mit dem Baumdurchläuferprozessor 132 durch einen bidirektio­ nalen Stapelbus 138 ist der Geometrieprozessor 136 nach der Erfindung.
Der Geometrieprozessor 136 führt alle Graphikberechnungen für das Geometrieverarbeitungsuntersystem 130 aus. Der Baum­ durchlaufprozessor 132 durchläuft die in dem DLM 116 ge­ speicherte Datenbasis Segment für Segment, wobei er die Da­ ten jedes Segments mit Hilfe eines DLM-Bus 134 sequentiell adressiert. Dieser Durchlauf wandelt die Baumstruktur des DLM 116 in einen Strom von Daten um, der über den DLM-Bus 134 zu dem Baumdurchlaufprozessor 132 und zu dem Geometrie­ prozessor 136 übertragen wird. Der Geometrieprozessor 136 führt die Verarbeitungsfunktionen Aussondern, Clippen, Pro­ jizieren und Transformationsmatrixkaskadierung aus.
Wie im folgenden noch näher erläutert verarbeitet der Geo­ metrieprozessor 136 jedes Graphikelement nicht vollständig, bevor er zu dem nächsten Graphikelement geht. Der Geometrie­ prozessor 136 überträgt vielmehr Graphikattributdaten (wie beispielsweise Farbattribute) und Transformationsdaten di­ rekt zu dem Baumdurchlaufprozessor 132 über den Stapelbus 138, wenn während des Aussonderungsprozesses der Geometrie­ prozessor 136 feststellt, daß das zugeordnete Graphikelement potentiell sichtbar ist. Der Baumdurchlaufprozessor 132 speichert die Attribut- und Transformationsdaten aus dem Geometrieprozessor in einem internen Stapelspeicher auf der Basis, daß die zuerst eingegebenen Daten als letzte ausge­ geben werden. Durch ständige Kommunikation mit dem Baumdurch­ laufprozessor 132 stellt der Geometrieprozessor 136 sicher, daß Attribut- und Transformationsdaten nur für sichtbare Seg­ mente in dem Baumdurchlaufprozessorstapelspeicher gespeichert werden.
Nachdem der Baumdurchiaufprozessor 132 das letzte Segment eines Durchlaufes erreicht hat, kehrt der Baumdurchlaufpro­ zessor die Richtung um und durchläuft wieder die potentiell "sichtbaren" Segmente (d.h. die Segmente, die potentiell sichtbare Graphikelemente haben), welche durch die Daten an­ gegeben werden, die in dem Baumdurchlaufprozessorstapel­ speicher gestapelt sind. Wenn der Baumdurchlaufprozessor 132 den Durchlaufweg von Segment zu Segment zurückläuft, über­ trägt der Baumdurchlaufprozessor die Graphikdaten für jedes Segment, das in seinem Stapelspeicher gespeichert ist, zu­ rück zu dem Geometrieprozessor 136 über den Stapelbus 138. Zur selben Zeit adressiert der Baumdurchlaufprozessor 132 zusätzliche Graphikdaten, die in dem DLM 116 gespeichert sind, welcher das Graphikelement enthält, das dem gegenwär­ tigen Segment zugeordnet ist, welches zurück zu dem Geome­ trieprozessor 136 übertragen wird. Das Graphikelement wird über den DLM-Bus 134 zu dem Geometrieprozessor 136 übertra­ gen. Der Geometrieprozessor 136 benutzt die Daten aus dem Baumdurchlaufprozessorstapelspeicher und aus dem DLM 116, um etwas auszuführen, was als "Flächen"-Verarbeitung bezeichnet wird, bei dem die Graphikdaten für die Anzeige transfor­ miert werden. In der dargestellten Ausführungsform clippt und projiziert der Geometrieprozessor 136 das Graphikele­ ment eines sichtbaren Segments und führt einen Teil der ge­ eigneten Schattierungsberechnungen aus. Nachdem das beendet ist, leitet der Geometrieprozessor 136 das Graphikelement zusammen mit geerbten Attributen im Format eines "Kantenpa­ kets" über den Systembus 118 zu einem Anzeigeprozessor 140. Der Anzeigeprozessor 140 macht in Verbindung mit einem Z- Puffer 146 und einem Bildpuffer 142 die Rasterung, die Be­ seitigung von verborgenen Oberflächen und den Rest der Schattierungsberechungen.
Die Architektur des Graphikverarbeitungsuntersystems 130 gleicht also Hochgeschwindigkeitsverarbeitung mit den System­ kosten ab, indem der Geometrieprozessor 136 sowohl zum Aus­ sondern als auch zur Flächenverarbeitung und der Baum­ durchlaufprozessor 132 zum Durchlaufen und zum Wiederdurchlaufen benutzt wird.
Hierarchische Datenbasisstruktur
Zum besseren Verständnis der Arbeitsweise und des Entwurfes des Graphikprozessorsystems 100 ist ein vereinfachtes Bei­ spiel einer baumartigen hierarchischen Anzeigeliste in Fig. 2 dargestellt. Die Anzeigeliste nach Fig. 2 zeigt und be­ schreibt die Objekte, die in Fig. 3 dargestellt sind, näm­ lich eine Tasse mit Untertasse 150 und einen Würfel 152. Diese einfachen Objekte sind lediglich zu Darstellungs­ zwecken gewählt worden. In der tatsächlichen Praxis können die Objekte, welche dargestellt werden können, beträchtlich komplizierter sein.
Der Würfel 152 kann als eine Sammlung von sechs Flächen 1-6 aufgefaßt werden, wobei jede Fläche durch ein vierseitiges Polygon dargestellt ist, das eine besondere Farbe, Schattie­ rung und räumliche Beziehung zu dem als Ganzes betrachteten Würfel hat. Auf diese Weise können komplexe Objekte entworfen werden, indem die Objekte in einfache Formen (Graphikelemen­ te) zerlegt werden, die zugeordnete Attributinformation ha­ ben.
Das grundlegende Element in der Anzeigeliste in Fig. 2 ist das Segment. Jedes Segment kann ein Graphikelement (z.B. ein Polygon, einen Vektor, usw.), Attribute (z.B. Polygonfarbe, eine Transformationsmatrix, usw.) und strukturelle Informa­ tion (z.B. Zeiger zu verwandten Segmenten) haben. Jedes Da­ tensegment wird in zwei Puffer unterteilt, einen Aussonde­ rungspuffer und einen Graphikelementdatenpuffer. Der Ausson­ derungspuffer enthält Attributdaten und Information, die be­ nötigt werden, um festzustellen, ob das zugeordnete Daten­ element innerhalb eines definierten Sichtfeldes sichtbar ist.
Der Graphikelementdatenpuffer enthält die Daten, die notwen­ dig sind, um das Graphikelement selbst zu definieren.
Das Wurzel- oder obere Segment A in Fig. 2 ist das "Darstel­ lungsfeld"-Definitionssegment, welches den Lagewinkel fest­ legt, unter welchem die Graphikobjekte betrachtet werden, und das Volumen des Raums, der für den Betrachter sichtbar ist. Dieses Segment hat einen zugeordneten Referenzkoordi­ atensatz, der als "Welt"-Koordinatensatz bezeichnet wird und durch die drei orthogonalen Achsen 154 in Fig. 3 darge­ stellt ist. Die räumliche Beziehung zwischen Tasse und Unter­ tasse d dem Würfel 152 wird durch deren Weltkoordina­ ten festgelegt.
Ein Augenpunkt 156 und ein Sichtpunkt 158 (angegeben in Weltkoordinaten) zusammen mit einem Rollwinke) R definieren einen zweiten Koordinatensatz, den "Augen"-Koordinatensatz. Der Ursprung des Augenkoordinatensatzes befindet sich in dem Augenpunkt 156, wobei sich die Z-Achse längs der Sichtlinie in der Richtung des Sichtpunktes 158 erstreckt. Der Roll­ winkel R definiert den Drehwinkel der X- und Y-Achse um die Z-Achse. Das Betrachtungsvolumen wird durch sechs "Clipebe­ nen" festgelegt, die typisch einen Stumpf bilden. Auf diese Weise legt der Augenkoordinatensatz den Lagewinkel fest, unter welchem die Objekte betrachtet werden sollen.
Ein verwandter Koordinatensatz ist der augenskalierte Ko­ ordinatensatz, in welchem die X- und Y-Koordinaten des Augen­ koordinatensatzes skaliert sind, um das Verfahren des Clip­ pens zu vereinfachen. Das Darstellungsfelddefinitions A hat eine Transformationsmatrix zum Transformieren von Ko­ ordinaten in dem Weltkoordinatensatz in Koordinaten in dem Augenkoordinatensatz und eine zweite Darstellungsfeldmatrix zum Umwandeln der Augenkoordinaten in den augenskalierten Koordinatensatz.
Unter dem Darstellungsfelddefinitionssegment A in Fig. 2 be­ findet sich ein zweites Segment der Anzeigeliste, bezeichnet mit Segment B. Das Segment B ist ein Kindsegment des Eltern­ segments A und stellt die Tasse und Untertasse 150 als Gan­ zes betrachtet dar. Der Tasse und Untertasse 150 ist ein "Modell"-Koordinatensatz geordnet, der festgelegt wird, indem der Ursprung des Modellkoordinatensatzes an eine zweckmäßige Stelle gelegt und die Achsen mit Bezug auf eini­ ge der Graphikelementdaten ausgerichtet werden. Sämtliche Graphikelementdaten innerhalb eines Segments werden auf des­ sen zugehörigen Modellkoordinatensatz bezogen. Das Segment B hat eine Transformationsmatrix, die Punkte in dem Segment- B-Modellkoordinatensatz in den Koordinatensatz seines Eltern­ segments A transformiert (der in diesem Fall der Weltkoordi­ natensatz ist).
Das Segment B hat außerdem Zeiger zu einem seiner Kindseg­ mente, Segment D, und zu einem seiner Geschwistersegmente, Segment C (welches den Würfel 152 darstellt). Segment C ist ebenfalls ein Kindsegement des Elternsegments A und hat seinen eigenen Modellkoordinatensatz 162, der in diesem Fall einen Ursprung hat, welcher in einer der Ecken des Würfels 160 liegt, und drei Achsen, die mit den Kanten des Würfels ausgerichtet sind. Das Segment C hat seinerseits sechs Kindsegmente F-K für die sechs Würfelflächen 1-6. Die Seg­ mente F-K sind ziemlich ähnlich. Das Segment F beispiels­ weise hat einen Zeiger zu dem Elternsegment C, dem Geschwi­ stersegment G und einem Kindsegment (falls vorhanden). Das Segment F hat ein eigenes Modellkoordinatensystem, in wel­ chem die vier Ecken des Polygons, welches die Fläche 1 bil­ det, festgelegt sind. Dieses vierseitige Polygon ist das Graphikelement des Segments F. Das Segment F definiert wei­ ter die Farbe und andere Attribute des Graphikelements.
Jedes Segment der Anzeigeliste ist in eine Anzahl von Daten­ puffern formatiert, die die Graphikdaten enthalten, und einen Steuerblock, der Zeiger hat, die zu den Speicherplätzen in dem DLM 116 zeigen, an denen die Puffer angeordnet sind. Jeder Steuerblock enthält eine Anzahl von Wörtern (typisch sechzehn Wörter), die Zeiger, Flags und andere Steuerdaten enthalten.
Ein solcher Steuerblock, der Segmentsteuerblock, enthält einen Zeiger zu dem Segmentaussonderungspuffer, der die At­ tribute des zugeordneten Graphikelements speichert. Unter diesen Attributen gibt es einen "Begrenzungskasten", den der Geometrieprozessor 136 bei dem Aussonderungsprozeß benutzt. Der Begrenzungskasten ist ein Satz von acht Koordinatenpunk­ ten, die ein Volumen definieren, welches das Graphikelement für ein Segment und sämtliche Graphikelemente von sämtlichen Kindersegmenten vollständig enthält. Der Begrenzungskasten gestattet dem Geometrieprozessor 136, Segmente schnell aus­ zusondern, die vollständig außerhalb des definierten Sicht­ feldes sind, und zwar mit Hilfe von einfachen Vergleichs­ tests.
Jedesmal dann,wenn der Terminalprozessor 112 neue Graphikda­ ten für ein Segment eingibt oder eine Transformationsmatrix ändert, aktualisiert der Terminalprozessor 112 die Begren­ zungskästen für die gesamte Anzeigeliste. Beispielsweise, wenn ein neues Polygon in ein Segment eingegeben wird, kann das die Größe des Begrenzungskastens für dieses Segment ver­ größern. Wenn der Segmentbegrenzungskasten größer wird, kann es notwendig sein, die Größe des Begrenzungskastens seines Elternsegments zu vergrößern, um sicherzustellen, daß der Elternsegmentbegrenzungskasten den neuen Begrenzungskasten des Kindsegments enthält. Änderungen in einem Segment können daher den Anzeigelistenbaum durchlaufen, bis ein Segment er­ reicht wird, welches durch die Änderung nicht beeinflußt wird. Ein Flagwort in jedem Segment wird gesetzt, wenn das Segment modifiziert worden ist, was anzeigt, daß der Begren­ zungskasten für das Elternsegment des Segments ebenfalls zu aktualisieren sein wird.
Außer dem Begrenzungskasten enthält der Aussonderungspuffer außerdem Attributdaten, die gewisse Eigenschaften des Gra­ phikelements des Segments festlegen. Wenn eine besondere Eigenschaft in dem Aussonderungspuffer eines Segments nicht definiert ist, wird die Definition dieser Eigenschaft aus dem Elternsegment ererbt. Beispielsweise, wenn das Segment C sein zugeordnetes Graphikelement (falls vorhanden) als die Farbe "rot" aufweisend definiert, werden seine Kinder (die Flächensegmente F-K), die nicht die Graphikelementfarbe lo­ kal definieren, die Graphikelementfarbe "rot" erben.
Der Aussonderungspuffer enthält außerdem die Transformations­ matrix zum Transformieren des lokalen Koordinatensatzes des Segments in den Koordinatensatz seines Elternsegments. Lichtquelleninformation kann ebenfalls in dem Aussonderungs­ puffer gespeichert werden.
Ein Wort des Segmentsteuerblockes definiert einen Zeiger zu dem Datenpuffer, der das Graphikelement des Segments enthält. Das Graphikelement wird mittels des lokalen Modellkoordina­ tensatzes des Segments definiert.
Die Anzeigelistenstruktur, die durch das Graphikprozessor­ system 100 benutzt wird, gestattet die "Instanzbildung" (instantiation) der Segmente. Das heißt, auf ein einzelnes Segment, nachdem es erzeugt worden ist, kann beliebig oft durch andere Segmente in der Anzeigelistenstruktur Bezug ge­ nommen werden. Beispielsweise, ein einzelnes Segment, das eine Würfelfläche definiert, könnte durch jedes der Segmente F-K in Fig. 2 aufgerufen werden, statt daß diese Information für jedes Kind des Segments C dupliziert wird. Jede Bezug­ nahme auf das Instanzsegment kann die Attribute des Instanz­ segments verändern, weil Attribute während des Durchlaufs geerbt werden können. Daher würde jedes Segment F-K eine andere Transformationsmatrix zum Positionieren der Instanzfläche an der korrekten Stelle zum Bilden des Wür­ fels 160 haben.
In der dargestellten Ausführungsform werden alle Größen in den Anzeigelistenpuffern (einschließlich Steuerblöcken) in Paketen fester Länge von entweder sechzehn Wörtern oder zweiunddreißig Wörtern gespeichert, wobei jedes Wort aus 32 Bits besteht. Diese Pakete fester Länge erleichtern Speicherzugriffs-, Speicherzuordnungs- und Speicheraberken­ nungsaufgaben.
Für ein typisches Aussonderungspuffer- oder Graphikelement­ datenpufferpaket werden Auffüllwörter benutzt, um das Paket auf sechzehn oder zweiunddreißig Wörter, je nach Bedarf, aufzufüllen. Größen, die gewöhnlich länger sein würden als zweiunddreißig Wörter (wie viele Graphikelementdatentypen) werden in Sechzehn-Wörter-Pakete aufgebrochen und miteinan­ der über "Nächstes Paket"-Zeiger verknüpft. Ein "Letztes Datenpufferpaket"-Zeiger des Steuerblockes eliminiert die Notwendigkeit, die gesamte verknüpfte Liste zu durchlaufen, um das letzte Pufferpaket zum Anhängen von Segmentdaten zu finden.
Die oben beschriebenen Segmente bilden eine hierarchische Anzeigeliste, die durch den Terminalprozessor 112 auf her­ kömmliche Weise erzeugt und in dem DLM 116 gespeichert wird. Der Terminalprozessor 112 hat Zugriff auf den DLM 116 über den Systembus 118. Nachdem die Anzeigeliste in dem DLM 116 gespeichert worden ist, kann die Anzeigeliste durchlaufen und verarbeitet werden, um die gewünschten Bilder der ge­ speicherten Objektdarstellungen zu erzeugen.
Geometrieprozessortransformationsalgorithmen
Der Geometrieprozessor 136 führt alle Matrix- und Vektorope­ rationen, Aussondern, Clippen, Projektionen und Bildschirm­ skalieren beim Projizieren von dreidimensionalen Anzeige­ listendaten in einen zweidimensionalen Bildschirmraum aus.
Wie oben erwähnt ist das Grundelement in dem Anzeigelisten­ speicher das Segment, und jedes Segment kann wahlweise eine Transformationsmatrix haben. Diese Matrix nimmt Daten in dem Koordinatensatz des Segments und transformiert sie in den Elternsatz. Gemäß dem Beispiel in Fig. 2 transformiert die Transformationsmatrix des Segments D, wenn sie bei den Daten in dem Datenpuffer des Segments D benutzt wird, diese in den Koordinatensatz des Segments B. Ebenso transformiert die Segment-B-Transformationsmatrix dessen Daten in den Segment- A-Koordinatensatz. Diese Transformationen werden durch Rota­ tions-, Skalier- und Translationskomponenten in jeder Trans­ formationsmatrix ausgeführt.
In der bevorzugten Ausführungsform der Erfindung werden Skalier-, Rotations- und Translationsglieder in einer 4x3- Transformationsmatrix gespeichert. Folgende Übereinkunft wird in der Matrixdarstellung benutzt:
Punkte eines Graphikelements werden durch ihre X-, Y- und Z-Koordinatenwerte plus einem konstanten Glied in folgender darstellung dargestellt:
Punkt P=[Px py pz 1]
Das Multiplizieren eines Punktes mit einer Transformationsmatrix ergibt als ein Ausgangssignal den Punkt in dem neuen Koordinatensatz, definiert durch die Transformationsmatrix. Zum Beispiel
P′=P*M=[Qx Qy Qz],
wobei:
Qx=Px*m00 + Py*m10 + Pz*m20 + m30
Qy=Px*m01 + Py*m11 + Pz*m21 + 31
Qz=Px*m02 + Py*m12 + Pz*m22 + m32
Die Rotation um irgendeine der drei Koordinatenachsen kann mit folgenden Matrizen ausgeführt werden (wobei R der Rotationswinkel ist):
X-Achsenrotation
Y-Achsenrotation
Z-Achsenrotation
Skalieren um irgendeine der drei Koordinatenachsen kann er­ folgen durch Aufnehmen der gewünschten Skalierglieder (be­ zeichnet mit "S") in die folgende Matrix:
Die Translation kann ausgeführt werden durch Einsetzen von gewünschten Translationsgliedern (bezeichnet mit "T") in die folgende Matrix:
Wie oben erwähnt, ist das Segment höchster Ebene in der Baumstrukturhierarchie nach der Erfindung das Darstellungs­ felddefinitionssegment. Der Koordinatensatz für das Dar­ stellungsfelddefinitionssegment wird als Weltkoordinatensatz bezeichnet. In dem Weltkoordinatensatz sind die Werte des Augenpunkts 156 und des Sichtpunkts 158 angegeben. Die Spe­ zifikation eines Augenpunkts und eines Sichtpunkts sowie eines Rollwinkels R definieren den Augenkoordinatensatz.
Der augenskalierte Koordinatensatz wird eingeführt, um den Prozeß des Clippens zu vereinfachen. In dem Augenkoordinaten­ satz lauten die Gleichungen für die Clipebenen folgender­ maßen:
Durch einfaches Skalieren der X- und Y-Punkte durch deren zugeordnete Cotangents-Glieder werden die Cliptests stark vereinfacht. Speziell, wenn:
X′=X* cot(X Winkel) und
Y′=Y* cot(Y Winkel),
dann werden die Gleichungen für die sechs Clipebenen:
Wenn das Skalieren auf oben dargelegte Weise ausgeführt wor­ den ist, beinhaltet das Testen, ob irgendein Punkt eines Be­ grenzungskastens innerhalb oder außerhalb einer Clipebene ist, einen einfachen Vergleichstest von zwei numerischen Werten. Der sich ergebende Koordinatensatz, welcher durch Skalieren der X- und Y-Koordinaten erzielt wird, wird als augenskalierter Koordinatensatz bezeichnet. Die Skalierglie­ der werden zweckmäßig in einer Transformationsmatrix ge­ speichert, die in einem Darstellungsfeldpaket in dem Dar­ stellungsfelddefinitionssegment gespeichert wird.
Für die perspektivische Projektion lautet die Transforma­ tionsmatrix folgendermaßen:
Für parallele (orthographische) Projektion definiert der Be­ nutzer explizit eine Matrix, die die sechs Clipebenen fest­ legt. Die Parallelprojektionstransformationsmatrix lautet folgendermaßen (mit R = rechts, L = links, T = oben und B = unten):
Mit diesen Matrizen und den definierten Clipebenen werden alle Punkte skaliert und verschoben, um sie in den definier­ ten Darstellungsraum einzupassen.
Hardwareorganisation
Fig. 4 zeigt den Geometrieprozessor 136 als eine Kombination aus doppelt gepufferten Multiport-Registerdateien und einer arithmetischen Pipeline, welche durch interne Busse verbun­ den sind und durch einen Mikrosequenzer mit peripheren Steuerelementen gesteuert werden.
Das Systeminterface 200 verbindet den Geometrieprozessor 136 mit dem Systembus 118. Das Systeminterface 200 spricht auf Befehle aus dem Terminalprozessor 112 (gezeigt in Fig. 1) an, um sämtliche Register und Statusflags in dem Geometrie­ prozessor 136 durch Wählen der geeigneten Lese- oder Schreib­ adresse zu adressieren. Das Systeminterface 200 wird außer­ dem durch den Terminalprozessor 112 benutzt, um Mikrocodebe­ fehle aus dem Host bei der Initialisierung des Geometriepro­ zessors 136 zu einem Mikrocodespeicher 202 zu leiten. Ein Mikrosequenzer 204 benutzt seine Adreßausgänge, um einen Mikrocodebefehl aus dem Mikrocodespeicher 202 auszuwählen. Der ausgewählte Mikrocodebefehl wird vorübergehend in einem Pipelineregister 206 gespeichert.
Ein Teil des Mikrocodebefehls aus dem Pipelineregister 206 wird zu den Verzweigungsadreßeingängen und zu den Befehlseingängen des Mikrosequenzers 204 zurückgeleitet, um den weiteren Mi­ krosequenzerbetrieb zu steuern. Andere Bits des Mikrocode­ befehls, die in dem Pipelineregister 206 gespeichert sind, werden zu Bedingungscode- und Opcoderegistern 208 und zu einer Verzögerungslogikschaltung 210 geleitet. Die Verzöge­ rungslogikschaltung 210 leitet die Steuerbefehle nach einer wählbaren Verzögerungszeit zu einer arithmetischen Pipeline 212. Die arithmetische Pipeline 212 führt sequentielle Be­ rechnungen aus. Ein X-Bus und ein Y-Bus bringen Daten in die arithmetische Pipeline 212, und ein Z-Bus transportiert Er­ gebnisse aus der arithmetischen Pipeline 212 zu einem Ziel­ register, das durch den aktiven Mikrocodebefehl angegeben ist.
Vier Mehrkanalregisterdateien sind mit den X-, Y- und Z-Bus­ sen verbunden. Die DLM-Registerdatei 214 speichert Daten­ pakete, die aus dem DLM 116 über den DLM-Bus 134 unter der Steuerung des Baumdurchlaufprozessors 132 empfangen werden. Eine Stapelregisterdatei 216 speichert Daten, die über den Stapelbus 138 aus dem Baumdurchlaufprozessor 132 empfangen werden. Eine Zwischenregisterdatei 218 (die aus einer oder mehreren Registerunterdateien bestehen kann) speichert Zwi­ schenergebnisse während seriellen Berechnungen. Eine Aus­ gangsregisterdatei 220 speichert die Endergebnisse von Be­ rechnungen der arithemtischen Pipeline. Die Inhalte der Aus­ gangsregisterdatei 220 können direkt auf den Stapelbus 138 gebracht oder zu dem Terminalprozessor 112 und/oder zu dem Anzeigeprozessor 140 über das Systeminterface 200 und den Systembus 118 gesendet werden.
Der Geometrieprozessor 136 ist mit dem Baumdurchlaufprozes­ sor 132 über den bidirektionalen Stapelbus 138 verbunden. Der Geometrieprozessor 136 ist mit dem DLM-Bus 134 für Ein­ gabezwecke nur aus dem DLM 116 verbunden. Zum Reservieren von Eingangs-/Ausgangssignalleitungen für den Geometriepro­ zessor 136 sind der DLM-Bus 134 und der Stapelbus 138 16-Bit­ zeitmultiplexierte Busse. Während der ersten Häfte einer Bus­ übertragung sind die sechzehn höchstwertigen Bits eines Da­ tenwortes auf einem Bus vorhanden, und während der zweiten Hälfte der Busübertragung sind die sechzehn niedrigstwerti­ gen Bits des Datenwortes auf dem Bus vorhanden.
Der Stapelbus 138 steht mit der Stapelregisterdatei 216 und mit der Ausgangsregisterdatei 220 in Verbindung und schreibt Daten in die Stapelregisterdatei 216 ein und liest Daten aus der Ausgangsregisterdatei 220 aus.
Der DLM-Bus 134 überträgt Adressen und Daten aus einer einzi­ gen Quelle, dem DLM 116, und in nur einer Richtung, d.h. zu dem Baumdurchlaufprozessor 132 und zu dem Geometrieprozessor 136. Infolgedessen hat der DLM-Bus 134 keine Busentscheidung oder Quittungsverzögerung und kann deshalb mit extrem hohen Datenübertragungsgeschwindigkeiten arbeiten. In der darge­ stellten Ausführungsform kann der DLM-Bus 134 40 Megabyte Daten pro Sekunde übertragen, im Vergleich zu 6 Megabyte pro Sekunde bei dem Systembus 118.
Der Systembus 118 steht mit sämtlichen Registern und mit dem Mikrocodespeicher 202 in dem Geometrieprozessor 136 in Ver­ bindung. Der Systembus 118 ist in der Lage, den Betrieb des DLM-Busses 134 und/oder des Stapelbusses 138 funktionell zu ersetzen. Das ermöglicht dem Geometrieprozessor 136 zu ar­ beiten und getestet zu werden, indem nur der Systembus 118 benutzt wird.
Die DLM-Registerdatei 214 ist ein doppelt gepufferter Spei­ cher, was bedeutet, daß sie in zwei Hälften unterteilt ist. Während der Gemetrieprozessor 136 an Daten in einer Hälfte der DLM-Registerdatei 214 arbeitet, werden Daten aus dem DLM-Bus 134 in die andere Hälfte eingeschrieben. Wenn der Geometrieprozessor 136 mit den Daten auf der ersten Seite fertig ist und der DLM-Bus 134 die Datenübertragung zur zweiten Seite beendet hat, werden beide Seiten vertauscht. Die Doppelpufferung gestattet dem DLM-Bus 134, Daten zu übertragen, während der Geometrieprozessor 136 an internen Daten arbeitet. Die Stapelregisterdatei 216 und die Aus­ gangsregisterdatei 220 sind enfalls doppelt gepuffert.
Damit eine Busübertragung stattfinden kann, muß der Status der Registerdatei, mit der der Bus in Verbindung treten will, bekannt sein. Wenn der Geometrieprozessor 136 das Verarbei­ ten von Daten in einer Hälfte einer Registerdatei beendet hat, wird diese Hälfte der Registerdatei dem Bus zugeordnet. Den Eingangs- und Ausgangsregisterdateien 214, 216 und 220 ist jeweils ein Speicher-verfügbar-Flag zugeordnet, das an­ zeigt, daß die zugeordnete Registerdatei zur Eingabe verfüg­ bar ist. Jeder Registerdatei ist außerdem ein Speicher-gela­ den-Flag zugeordnet, das anzeigt, daß eine Busübertragung in die Registerdatei beendet ist. Die Verwendung der Spei­ cher-verfügbar- und Speicher-geladen-Flags in einer Quit­ tungsbetriebsart gestattet die Steuerung des Datenflusses in jede und aus jeder doppelt gepufferten Registerdatei. Der Geometrieprozessor 136 hat außerdem drei Unterbrechungssig­ nale (je eines fürden Baumdurchlaufprozessor 132, den Anzeige­ prozessor 140 und denTerminalprozessor 112), die benutzt werden, um anderen Prozessoren zu signalisieren, daß Daten bereit sind, um aus der unterbrochenen Ausgangsregister­ datei zu dem anderen Prozessor übertragen zu werden. Der Geometrieprozessor 136 erzeugt außerdem ein Objekt-sichtbar- Signal, das an den Anzeigeprozessor 140 angelegt wird.
Gemäß der Darstellung in Fig. 5 wird der Geometrieprozessor 136 durch den Mikrosequenzer 204 in Verbindung mit verschiedenen peripheren Vorrichtungen gesteuert. In der dargestellten Ausführungsform der Erfindung ist der Mikrosequenzer 204 das Modell Nr. IDT39C10B von Integrated Device Technology.
Beim Systemanlauf bringt der Host-Computer Mikrocodebefehle über das Systembusinterface 200 in den Mikrocodespeicher 202, der in der dargestellten Ausführungsform ein 4096x80-Bit­ Speicher ist. Wenn ein Befehl über das Systeminterface 200 durch den Mikrosequenzer 204 empfangen wird, wird der ge­ eignete Mikrocodebefehl aus dem Mikrocodespeicher 202 geholt und in das 80-Bit-Pipelineregister 206 gebracht, so daß ver­ schiedene Felder des Mikrocodebefehls zu verschiedenen Vor­ richtungen innerhalb des Geometrieprozessors 136 gleichzei­ tig gesendet werden können. Der Mikrosequenzer 204 empfängt einen 4-Bit-Mikrosequenzerbefehl aus dem Mikrocodebefehl und führt ihn unter Verwendung einer Verzweigungsadresse aus, die aus dem Pipelineregister 206 geliefert wird. Während der Befehlsausführung erhält der Mikrosequenzer 204 Statusinfor­ mation durch Überprüfen der Bits in einem von mehreren Flag- und Bedingungscoderegistern 226, 228 und 230 mittels eines Bedingungscodemultiplexers 232. Ein Opcoderegister 222 und ein Wortzählungsregister 224 speichern Steuerwörter aus einem Segment während der Verarbeitung von Graphikdaten.
Aus dem Pipelineregister 206 kann ein Feld aus dem gegenwär­ tigen Mikrocodebefehl zu den Geometrieprozessorinterface­ schaltungen, der arithmetischen Pipelineschaltung 212 oder den Adreßeingängen und der Lese-/Schreibsteuerlogik der ver­ schiedenen Mehrkanalregisterdateien 214, 216, 218 und 220 geleitet werden, um den Fluß von Daten durch den Geometrie­ prozessor 136 und die an den Daten ausgeführten Operationen zu steuern.
Bei der Initialisierung wird der Geometrieprozessor 136 eingestellt, so daß sein Mikroprogrammzähler auf null ge­ setzt wird, sämtliche Speicher-verfügbar-Flags gesetzt wer­ den (was anzeigt, daß die Registerdateien verfügbar sind) und alle Speicher-geladen-Flags rückgesetzt werden (was an­ zeigt, daß die Registerdateien nicht geladen sind). Der Geometrieprozessor 136 wartet dann, daß die DLM-Registerda­ tei 214 geladen wir. Der Baumdurchlaufprozessor 132 über­ wacht das DLM-Speicher-verfügbar-Flag. Wenn das DLM-Speicher­ verfügbar-Flag anzeigt, daß die DLM-Registerdatei 214 ver­ fügbar ist, veranlaßt der Baumdurchlaufprozessor 132, daß ein Steuerwort zusammen mit bis zu einunddreißig Datenwör­ tern aus dem DLM 116 über den DLM-Bus 134 zu dem Geometrie­ prozessor 136 gesendet wird. Wenn die DLM-Registerdatei 214 voll geladen ist, wird das DLM-Speicher-geladen-Flag gesetzt.
Die sechzehn höchstwertigen Bits (MSB) des Steuerworts bestehen aus Flags. Das nächste 8-Bit-Feld enthält eine Operations­ codegruppe oder "Opcode", und das nächste 8-Bit-Feld ist eine Wortzählung. Bei Empfang des DLM-Speicher-geladen-Flags wird der Mikrosequenzer 204 das Steuerwort in die Bedingungs­ code- und Opcoderegister 208 laden. Der in das Opcoderegi­ ster 222 geladene Opcode wird als eine Sprungadresse benutzt, die der Mikrosequenzer 204 benutzen wird, um zu einer beson­ deren Mikrocodebefehlsroutine zu verzweigen, welche in dem Mikrocodespeicher 202 gespeichert ist, wodurch die Operatio­ nen festgelegt werden, die an den in der DLM-Registerdatei 214 geladenen Daten ausgeführt werden sollen. Der Mikrose­ quenzer 204 benutzt die sechzehn Flagbits, um weitere Ent­ scheidungen darüber zu treffen, wie die Daten zu verarbeiten sind. Die Wortzählung, die in das Wortzählungsregister 224 geladen worden ist, zeigt dem Mikrosequenzer 204 an, wieviele Wörter in die DLM-Registerdatei 214 geladen worden sind. Während der Mikrosequenzer 204 an Daten arbeitet, die auf einer Seite der DLM-Registerdatei 214 gespeichert sind, kann der Baumdurchlaufprozessor 132 einen neuen Satz Daten in die andere Seite der DLM-Registerdatei 214 laden. Wenn der Mikro­ sequenzer 204 mit seiner gegenwärtigen Aufgabe fertig ist, wird seine Seite der DLM-Registerdatei 214 mittels des DLM- Speicher-verfügbar-Flags als verfügbar bezeichnet. Der Geo­ metrieprozessor 136 prüft dann, um festzustellen, ob eine neue Aufgabe in die andere Seite der DLM-Registerdatei 214 geladen worden ist; wenn dem so ist, wird die neue Aufgabe ausgeführt.
Eine ähnliche Operation wird in bezug auf Daten ausgeführt, die in der Stapelregisterdatei 216 gespeichert sind und dem Geometrieprozessor 136 direkt durch den Baumdurchlaufprozes­ sor 132 über den Stapelbus 138 zugeführt werden. Ebenso wer­ den durch die Ausgangsregisterdatei 220 die Daten, die durch den Geometrieprozessor 136 erzeugt werden, doppelt gepuffert, und die durch den Geometrieprozessor 136 erzeugten Daten wer­ den entweder zu dem Baumdurchlaufprozessor 132 über den Sta­ pelbus 138 oder zu einem externen Prozessor über den System­ bus 118 geleitet.
Die Bedingungscode- und Opcoderegister 208 enthalten zwei Re­ gister, welche Steuerflags speichern, aus Datenpaketen, die während der Baumdurchquerung in die DLM-Registerdatei 214 eingeschrieben werden. Eines der Flagregister 226 enthält Flags, die für jedes Segment in dem Baum als lokal betrachtet werden. Das andere Flagregister 228 speichert globale Flags, die sich auf das Darstellungsfeld beziehen. Die lokalen und die globalen Flags steuern die bedingte Verarbeitung, wenn unterschiedliche Arten von Ojekten während der Baumdurch­ querung angetroffen werden.
Zusätzlich zu den Flagregistern 226, 228 werden verschiedene unabhängige Flagsignale an ein Bedingungscoderegister 230 an­ gelegt. Diese unabhängigen Flagsignale beinhalten das DLM- Registerdatei-Speicher-geladen-Signal, aktiviert durch den Baumdurchlaufprozessor 132, wenn die DLM-Registerdatei 214 gültige Daten enthält, und das Ausgangsregisterdatei-Spei­ cher-verfügbar-Signal, aktiviert durch den Baumdurchlaufpro­ zessor 132, wenn Daten aus der Ausgangsregisterdatei 220 ausgelesen worden sind. Ein ALU-Vorzeichen-Flag, ein ALU- Überlauf-Flag, ein ALU-Vergleiche-Ergebnis-Flag und ein ALU- Objekt-sichtbar-Flag werden durch die arithmetische Pipe­ line 212 erzeugt und gestatten dem Mikrosequenzer 202, auf der Basis von Rechenergebnissen während der Graphikverarbei­ tung bedingt zu verzweigen.
Ein Flag oder eine Bedingungscodegruppe kann durch einen 40- Bit-Bedingungscodemultiplexer 232 unter der Steuerung von Be­ dingungswählsignalen aus dem Pipelineregister 206 ausgewählt werden.
Die Funktionsmoduln des Geometrieprozessors sind durch drei interne Hauptbusse miteinander verbunden, welche arithmeti­ sche Daten von Modul zu Modul übertragen. Diese Busse sind der X-Bus, der Y-Bus und der Z-Bus, die alle in der darge­ stellten Ausführungsform zeitmultiplexierte 16-Bit-Busse sind, welche durch die höchstwertigen sechzehn Bits eines 32-Bit-Datenwortes während der ersten Hälfte eines System­ taktzyklus und durch die niedrigstwertigen sechzehn Bits während der zweiten Hälfte des Taktzyklus angesteuert werden. Die gesamte Datenübertragung über den X-Bus, den Y-Bus und den Z-Bus wird durch Mikrocodebefehle gesteuert, welche in dem Pipelineregister 206 vorübergehend gespeichert werden.
Der X-Bus hat als Hauptfunktion das Leiten von Eingangsdaten zu dem A-Eingang eines Multiplizierers in der arithmetischen Pipeline 212. Der Y-Bus hat als Hauptfunktion das Anlegen von Daten an den B-Eingang des Multiplizierers in der arith­ metischen Pipeline 212.
Der Z-Bus legt die Ausgangssignale der arithmetischen Pipe­ line 212 an die Eingänge der Ausgangsregisterdatei 220 oder an die Eingänge der Zwischenregisterdatei 218 an. Die Aus­ gangsregisterdatei 220 empfängt endgültige Rechenergebnisse, die an den Stapelbus 138 angelegt oder zu dem Systembus 118 zur Übertragung zu dem Terminalprozessor 112 oder zu dem An­ zeigeprozessor 140 geleitet werden können. Ergebnisse einer Zwischenberechnung können in dem Zwischenregister 218 ge­ speichert werden, und ein anschließender Mikrocodebefehl kann die Zwischenergebnisse auf dem X-Bus oder dem Y-Bus zur Ver­ wendung bei weiteren Berechnungen wiederauffinden.
Fig. 6 zeigt die Schaltungsanordnung der arithmetischen Pipe­ line 212, die für sämtliche graphikbezogenen Berechnungen in dem Geometrieprozessor 136 benutzt wird. Alle in die arithme­ tische Pipeline 212 eingegebenen Daten werden an einen 32- Bit-Gleitpunktmultiplizierer 600 angelegt, bei dem es sich beispielshalber um die von der WEITEK Corporation hergestell­ te Multiplizierschaltung WTL 1032 handeln kann. Der Multi­ plizierer 600 hat zwei Eingänge A und B, die mit dem X-Bus bzw. dem Y-Bus verbunden sind.
Der Ausgang des Multiplizierers 600 ist direkt mit dem Ein­ gang einer Akkumulatorschaltung 602 verbunden. Im typischen Gebrauch akkumuliert der Akkumulator 602 die Summe von allen Zahlen, die seinen Eingängen dargeboten werden, und gibt die Summe ab. Der Akkumulator 602 hat zwei Steuereingangssignale, die er über die Verzögerungslogik 210 aus dem Mikrocodebe­ fehl empfängt, welcher in dem Pipelineregister 206 gespei­ chert ist. Ein Erstes-Glied-Signal bewirkt, daß der Akkumu­ lator auf null rückgesetzt wird, bevor Eingangszahlenakkumu­ liert werden. Ein Ändere-Vorzeichen-Signal bewirkt, daß der Akkumulator die Eingangszahl von der akkumulierten Summe sub­ trahiert, indem er das Vorzeichen der Eingangszahl vor dem Addieren ändert.
Das Ausgangssignal des Akkumulators 602 ist immer die akkumu­ lierte Summe, die die neueste Eingangszahl enthält. Die Sum­ me ist in der dargestellten Ausführungsform nach vier Takt­ zyklen gültig. Das Ausgangssignal des Akkumulators 602 wird an die Eingänge einer Multifunktions-ALU-Schaltung 604, eine Umformschaltung 606, eine Z-Bus-Pufferschaltung 608 und einen Satz Tabellenlesen-Festwertspeicher (ROM)-Schaltungen 610 angelegt.
Die Multifunktions-ALU-Schaltung 604 kann eine 32-Bit-Fest­ punkt- oder Festkommazahl in eine 32-Bit-Gleitpunkt- oder Gleitkommazahl umwandeln, und umgekehrt, oder Zahlen jedes Typs vergleichen. Die Steuereingänge der Multifunktions-ALU- Schaltung werden durch einen Steuerfestwertspeicher (ROM) 612 angesteuert, der seine Adressen aus der Verzögerungslo­ gik 210 empfängt. Das Ausgangssignal der Multifunktions-ALU- Schaltung 604 wird an den Z-Bus angelegt, wenn dieser durch Steuersignale aus dem Steuer-ROM 612 freigegeben ist.
Die Umformschaltung 606 kann die Quadratwurzel oder den Kehr­ wert einer 32-Bit-Gleitpunktzahl berechnen und unter Verwen­ dung eines Algorithmus der stückweise linearen Approximation Kurven erzeugen. Die Tabellenlesen-Festwertspeicher 610 sind mit den Eingängen der Umformschaltung 606 verbunden. Die Tabellenlesen-Festwertspeicher 610 werden durch Daten aus den Bits 11 bis 22 des Ausgangssignals des Akkumulators 602 adressiert. Die Eingangsdaten adressieren die Tabellenlesen- Festwertspeicher 610, welche eine entsprechende Nullschnitt­ zahl und Steigungszahl für die Transformation wiederauffin­ den und sie zu der Umformschaltung 606 übertragen. Mit die­ sen beiden Eingangssignalen und den übrigen Bits des Aus­ gangssignals des Akkumulators 602 kann die Umformschaltung 606 die gewählte Funktion abschließen. Signale aus dem Steuerfestwertspeicher 612 wählen die Betriebsart der Um­ formschaltung 606 aus.
Der Steuerfestwertspeicher 612 steuert außerdem das Verbinden der Multifunktions-ALU-Schaltung 604, der Umformschaltung 606 und des Akkumulators 602 mit dem Z-Bus. Der Steuerfest­ wertspeicher 612 steuert außerdem zwei 8-Bit-Zähler A und B, die zum Zählen von Berechnungen und von Datenelementen be­ nutzt werden. Die beiden Zähler können unabhängig gelöscht, inkrementiert oder mit dem Z-Bus verbunden werden, was durch spezielle Steuersignale aus dem Steuerfestwertspeicher 612 ausgewählt wird.
Die arithmetische Pipeline 212 kann zusammengesetzte Berech­ nungen ausführen, wobei Daten während irgendeiner Berechnung über einen von drei Wegen fließen. Die drei möglichen Daten­ wege durch die arithmetische Pipeline 212 sind in Fig. 7 ge­ zeigt.
In dem Bypass-Zyklus werden Daten nur zu der Multifunktions- ALU-Schaltung 604 und nicht durch den Multiplizierer 600 oder den Akkumulator 602 geleitet. Für einen Bypass-Zyklus sind in der dargestellten Ausführungsform fünf Taktzyklen erforder­ lich.
Der Kurzzyklus wird benutzt, wenn Zahlen multipliziert und/ oder akkumuliert werden müssen, aber keiner weiteren Verar­ beitung bedürfen und direkt von dem Ausgang des Akkumulators 602 an den Puffer 608 zum Anlegen an den Z-Bus angelegt wer­ den können. Der Kurzzyklus erfordert elf Taktzyklen in der dargestellten Ausführungsform.
Der Langzyklus ist die Standardbetriebsart und erfordert vierzehn Taktzyklen in der dargestellten Ausführungsform. In dem Langzyklus gehen Daten durch den Multiplizierer 600, dann durch den Akkumulator 602 und dann entweder durch die Multifunktions-ALU-Schaltung 604 oder die Umformschaltung 606.
Weil die Schaltungsanordnung, aus der die arithmetische Pipelne 212 aufgebaut ist, eine unterschiedliche Zahl von Taktzyk­ len für das Arbeiten in jeder Betriebsart erfordert, ist die Verzögerungslogikschaltung 210 zwischen dem Pipelinere­ gister 206 und der arithmetischen Pipeline 212 vorgesehen, um die Ausführung von Mikrocodebefehlen zu verzögern, bis gültige Daten an den Eingängen der arithmetischen Pipeline 212 vorhanden sind.
Die Fig. 8a und 8b zeigen die Organisation der Verzögerungs­ logik 210 für die arithmetische Pipeline 212. Für gewisse Signale, wie beispielsweise die Erstes-Glied- und Ändere- Vorzeichen-Signale, werden getaktete Register benutzt, um die Verzögerung zu realisieren, die immer eine besondere An­ zahl von Taktzyklen beträgt. Zum Beispiel die Steuersignale für den Akkumulator 602 werden immer sieben Taktzyklen ver­ zögert, um zwei Taktzyklen zu gestatten, die für den Daten­ zugriff aus der Quellenregisterdatei erforderlich sind, und fünf Taktzyklen, die für eine Berechnung des Multiplizierers 600 erforderlich sind. Gemäß der Darstellung in Fig. 8a wird das Erstes-Glied-Signal einfach an ein getaktetes 8-Bit-Re­ gister 800 angelegt und dann sechsmal zu demselben Register zurückgeleitet, was zu einer Verzögerung von sieben Takt­ zyklen führt. Derselbe Typ von Schaltung wird für das Ändere- Vorzeichen-Signal benutzt.
Fig. 8b zeigt eine vereinfachte Darstellung der Verzögerungs­ logikschaltung, die Mikrocodebefehle für die Multifunktions- ALU-Schaltung 604 und die Umformschaltung 606 verzögert. Die Verzögerung erfolgt durch vorübergehendes Speichern der Steuerbits jedes Mikrocodebefehls in einer 16x4-Registerda­ tei 802, die durch verschobene Lese- und Schreibadressen ständig adressiert wird. Ein Modulo-16-Zähler 804 wird durch den Systemtaktgeber ständig inkrementiert und erzeugt eine 4-Bit-Adresse, die an die Schreibadreßeingänge der Register­ datei und an die niedrigstwertigen Adreßbits (LSB) eines Verzö­ gerungsfestwertspeichers (-ROM) 806 angelegt werden. Der Verzögerungsfestwertspeicher 806 enthält einen Satz von 4- Bit-Adressen, die gegenüber ihren Speicherplätzen in einem Ausmaß verschoben sind, das gleich der gewünschten Verzöge­ rung in Taktzyklen ist. Wenn beispielsweise eine Verzögerung von fünf Zyklen erforderlich ist, wird das Datenwort in dem Verzögerungsfestwertspeicher 806 an der Adresse "2" den Hexadezimalwert von "7" enthalten. Die beiden höchstwertigen Bits (MSB) der Adreßeingänge des Verzögerungsfestwertspei­ chers 806 empfangen ein Verzögerungsauswählsignal aus dem Pipelineregister 206, so daß unterschiedliche Verzögerungen ausgewählt werden können, indem unterschiedliche Adressenbe­ reiche in dem Verzögerungsfestwertspeicher 806 gewählt wer­ den.
Die Ausgangsdatenleitungen des Verzögerungsfestwertspeichers 806 sind mit den Registerdateileseadreßeingängen verbunden. Die Lesefreigabe- und Schreibfreigabeeingänge der Register­ datei 802 werden durch das Taktsignal und dessen Inversion abwechselnd angesteuert. Eine Steuerfestwertspeicheradresse, die ein Kommando an die arithmetische Pipeline 212 darstellt, wird in die Registerdatei 802 aus dem Pipelineregister 206 eingegeben. Das Regiserdateiausgangssignal bleibt irrelevant, bis die korrekte Zahl von Taktzyklen verstrichen ist, wobei in diesem Punkt die Leseadresse der Registerdatei 802 densel­ ben Wert wie die Schreibadresse haben wird, als die Steuer­ festwertspeicheradresse ursprünglich gespeichert wurde.
Das Ausgangssignal der Registerdatei 802 (d.h. die richtige Steuerfestwertspeicheradresse wird an die Adreßeingänge des Steuerspeichers 612 angelegt, der die besondere Kombination von individuellen Steuersignalen wiederauffindet, die an der Eingangsadresse gespeichert sind. Das Ausgangssignal des Steuerspeichers 612 ist eine Kombination von Lese- und Schreibsteuersignalen, Skalierwerten, Betriebsartwählsigna­ len für die Multifunktions-ALU-Schaltung 604 und die Umform­ schaltung 606 sowie Zählerfunktionswählsignalen.
Die Schreibfreigabesignale für den Z-Bus werden um eine vari­ able Zahl von Zyklen verzögert (immer 5, 11 oder 14 Zyklen in der dargestellten Ausführungsform), indem die Signale um drei Sätze von Registern auf ähnliche Weise wie in der Dar­ stellung in Fig. 8a verzögert werden. Die drei Sätze von Ver­ zögerungsregisterausgangssignalen werden an einen Multiplexer (nicht dargestellt) angelegt, der durch die Verzögerungsaus­ wählbits des gegenwärtigen Mikrocodebefehls aus dem Pipeline­ register 206 gesteuert wird.
Durch die Verwendung der Verzögerungslogik kann ein einzel­ ner Mikrocodebefehl, der eine Berechnung der arithmetischen Pipeline 212 einleitet, auch den gesamten Zyklus der arith­ metischen Pipeline steuern.
Im Verlaufe einer typischen arithmetischen Operation werden Daten aus der DLM-Registerdatei 214 oder aus der Stapelre­ gisterdatei 216 zu der arithmetischen Pipeline 212 in der Reihenfolge geleitet, in der sie auftreten. Während der Ver­ arbeitung passieren die Daten die arithmetische Pipeline 212 unter der Steuerung des Mikrosequenzers 204 und der Ver­ zögerungslogikschaltung 210, die der gesamten arithmetischen Pipeline gestattet, als ein selbstgesteuerter Modul zu arbei­ ten und eine vollständige zusammengesetzte Berechnung ohne weiteren Eingriff des Mikrosequenzers 204 auszuführen.
Zum Beginnen mit der Verarbeitung von Daten bewirkt der Geo­ metrieprozessormikrosequenzer 204, daß gleichzeitig ein Mikrocodebefehl der arithmetischen Pipeline 212 zu der Ver­ zögerungslogik 210 gesendet und die zu verarbeitenden Daten auf den X-Bus und/oder den Y-Bus übertragen werden, um eine Berechnung zu beginnen. In dem Langzyklus oder dem Bypass- Zyklus löst die Verzögerungslogik 210 Steuersignale an dem Akkumulator 602 nach sieben Taktzyklen aus, so daß Daten an den Akkumulatoreingängen gleichzeitig mit den an den Akkumu­ lator 602 angelegten Steuersignalen vorhanden sind.
In dem Langzyklus oder in dem Kurzzyklus löst die Verzöge­ rungslogik 210 Steuersignale an der Multifunktions-ALU- Schaltung 604, der Umformschaltung 606, dem Z-Bus-Puffer 608 und/oder dem Zähler A oder dem Zähler B nach der erforder­ lichen Zahl von Taktzyklen (die mit den ausgeführten Funktio­ nen variiert) aus, so daß die Daten, mit denen gearbeitet werden soll, an den Eingängen dieser Vorrichtungen gleich­ zeitig mit dem Vorhandensein der Steuersignale an den Ein­ gängen dieser Vorrichtungen vorhanden sind.
In jedem dieser Verarbeitungszyklen werden die Ergebnisse, die durch die arithmetische Pipeline 212 erzeugt werden, an dem Z-Bus nach der endgültigen Gesamtzahl von Taktzyklen gültig, die für den gesamten arithmetischen Zyklus erforder­ lich ist. Die Verzögerungslogik 210 löst eine Kombination einer Registerdateizieladresse und eines geeigneten Schreib­ freigabesignals zu der Zeit aus, zu der die verarbeiteten Daten auf dem Z-Bus vorhanden sind. Daher kann ein einzelner Mikrocodebefehl den gesamten Datenweg durch die arithmeti­ sche Pipeline steuern, die arithmetische Funktion angeben, die an den Daten auszuführen ist, und das Ziel für die Er­ gebnisse der Berechnung angeben.
Der Durchlaufprozeß
Der Durchlaufprozeß beinhaltet die Sequenz von Operationen, in der Daten aus der DLM-Baumstruktur entnommen, verarbeitet, und auf dem Bildschirm angezeigt werden. Die beiden grund­ legenden Unterprozesse in dem Durchlauf, welche durch den Geometrieprozessor ausgeführt werden, sind der Aussonde­ rungsprozeß und die Flächenverarbeitung.
Die Aussonderungseinrichtung filtert unsichtbare graphische Objekte heraus und speichert sichtbare graphische Objekte in einem Stapelspeicher innerhalbder Baumdurchlaufprozessor­ schaltung. Die Flächenverarbeitungseinrichtung entnimmt die Graphikobjekte dem Baumdurchlaufprozessorstapelspeicher und wandelt die Daten für jedes Objekt aus dreidimensional in zweidimensional skalierte Koordinaten um. Diese Prozesse werden im folgenden ausführlicher beschrieben.
1. Der Aussonderungsprozeß
Der Aussonderungsprozeß ermittelt, ob ein Objekt in einer Szene sichtbar ist oder nicht. Durch Ausführen eines ein­ fachen Tests an dem Begrenzungskasten, der ein Segment um­ schließt, kann der Geometrieprozessor 136 feststellen, ob der Begrenzungskasten vollständig außerhalb des festgeleg­ ten Betrachtungsvolumens ist (in welchem Fall das Segment ausgesondert und nicht weiter verarbeitet wird) oder voll­ ständig innerhalb des Betrachtungsvolumens (wobei kein Clippen zu erfolgen braucht) oder eine oder mehrere Clip­ ebenen schneidet (in welchem Fall Clippen erfolgen muß).
Das Aussondern kann auch an einer projizierten Mindestbe­ grenzungskastengröße durchgeführt werden. Wenn die proji­ zierte Schirmgröße eines Segmentbegrenzungskastens kleiner als eine definierte Zahl von Bildelementen ist, dann wird es ausgesondert.
Wenn ein Segment ausgesondert wird, dann werden dieses Seg­ ment und alle seine Kindersegmente aus der weiteren Verar­ beitung entfernt. Dadurch wird die Effizienz des Geometrie­ prozessors in Szenen, wo große Zahlen von Graphikobjekten außerhalb des Sichtvolumens sind, stark verbessert.
Der Aussonderungsprozeß startet, kurz gesagt, mit dem Wurzel­ segment in dem Anzeigelistenspeicher 116, welches das Dar­ stellungsfelddefinitionssegment ist (d.h. das erste Segment enthält ein Paket in seinem Aussonderungspuffer, welches die gegenwärtigen Darstellungsfeldparameter definiert). Die Darstellungsfeldinformation enthält Projektionsglieder (perspektivisches Sichtfeld, orthographische Projektions­ größe, Nah- und Fernclipebenen, usw.), Bildschirmskalier­ glieder (welche die Größe des endgültigen Bildes auf dem Bildschirm festlegen) und Flagbits. Die Projektionsglieder werden in einer 4x3-Standardtransformationsmatrix gespei­ chert.
Zum Einleiten der Durchlauf- und Flächenverarbeitung der in dem DLM 116 gespeicherten Datenbasis sendet der Terminalpro­ zessor 112 einen "Starte Durchlauf"-Befehl zu dem Baum­ durchlaufprozessor 132, der die Startadresse des Darstel­ lungsfelddefinitionssegments des Anzeigelistenbaums fest­ legt. Der Baumdurchlaufprozessor 132 durchläuft die Anzeige­ liste in dem DLM 116, adressiert die verknüpften Segmente der Reihe nach gemäß einem geschwisterbevorzugten Durch­ laufalgorithmus und koordiniert das Senden der Aussonderungs­ pufferpakete zu dem Geometrieprozessor 136 über den DLM-Bus 134.
Das erste Paket des Aussonderungspuffers, das zu dem Geo­ metrieprozessor 136 gesendet wird, enthält die Segmentattri­ bute. Diese Segmentattribute, die in dem Segmentattribut­ paket nicht lokal definiert sind, können "geerbt" werden, indem die Segmentattribute aus den Elternsegmentattributen gewonnen werden, die zuvor in der Stapelregisterdatei 216 gespeichert worden sind. Der Geometrieprozessor 136 spei­ chert einen Satz von Attributen (entweder lokal festgelegt oder geerbt) in der Ausgangsregisterdatei 220 zur späteren Übertragung zu dem Baumdurchlaufprozessor 132 über den Sta­ pelbus 138, wenn das Segment während der Aussonderungsverar­ beitung des Segments als sichtbar ermittelt worden ist. Da gemäß Fig. 2 das Darstellungsfelddefinitionssegment A kein Elternsegment hat, sind alle Attribute, die in der Ausgangs­ registerdatei 220 für das Segment A gespeichert sind, in dem Attributpaket des Segment-A-Aussonderungspuffers lokal defi­ niert.
Der Aussonderungspuffer jedes Segments hat gewöhnlich auch ein Tranformationsmatrixpaket. Das Transformationspaket ent­ hält eine lokale Transformationsmatrix, die die Segmentdaten aus dem lokalen Koordinatensatz in den Koordinatensatz des Elternsegments transformiert. In dem Fall des Darstellungs­ felddefinitionssegments transformiert die lokale Transfor­ mationsmatrix den Weltkoordinatensatz in den Augenkoordina­ tensatz des definierten Darstellungsfeldes.
Der Geometrieprozessor 136 führt eine Matrixkaskadierung aus, die die lokale Transformationsmatrix mit der früher kaskadierten Transformationsmatrix des Elternsegments multi­ pliziert. Die sich ergebende kaskadierte Transformationsma­ trix ist die "gegenwärtige Transformationsmatrix", die die Graphikdaten des Segments in den Koordinatensatz des Dar­ stellungsfelddefinitionssegments transformiert. Die gegen­ wärtige Transformationsmatrix wird in der Ausgangsregister­ datei 220 zur Übertragung zu dem Baumdurchlaufprozessor 132 gespeichert, wenn das Graphikelement des Segments als sicht­ bar bestimmt wird.
Wenn das Darstellungsfeldpaket aus dem Darstellungsfelddefi­ nitionssegment durch den Geometrieprozessor 136 empfangen wird, speichert der Geometrieprozessor die Darstellungsfeld­ skaliermatrix in der Stapelregisterdatei 216 und speichert die Schirmskalierglieder und Flagbits in der DLM-Register­ datei 214. Darüber hinaus wird das Darstellungsfeldpaket zu dem Anzeigeprozessor 140 über den Systembus 118 übertragen.
Ein zusätzliches Paket, das nur in dem Darstellungsfeldseg­ ment vorhanden ist, ist das "Lichtquelle"-Paket. Eine Licht­ quelle, definiert im Weltkoordinatensatz, wird in den augen­ skalierten Koordinatensatz gedreht, indem die Lichtquellen­ koordinaten mit der gegenwärtigen Transformationsmatrix multipliziert werden, welche in der Ausgangsregisterdatei 220 gespeichert ist, und die Ergebnisse werden abgespeichert.
Das letzte Aussonderungspufferpaket, das zu dem Geometrie­ prozessor 136 durch den Baumdurchlaufprozessor 132 für je­ des Segment gesendet wird, ist das Begrenzungskastenpaket. Wenn es empfangen wird, beginnt der Geometrieprozessor 136 einen Sichtbarkeitstest, wenn der Begrenzungskasten des Elternsegments nicht gänzlich sichtbar war. Wie oben erwähnt umschließt der Begrenzungskasten eines Segments das Graphik­ element des Segments und sämtliche Kindsegmente des Segments vollständig. Die Verwendung eines solchen Begrenzungskastens vereinfacht sehr den Sichtbarkeitstest.
Zum Ausführen des Sichtbarkeitstests leitet der Geometrie­ prozessor 136 die Begrenzungskastenkoordinaten des Segments durch die arithmetische Pipeline 212 hindurch. Die Multi­ funktions-ALU-Schaltung 604 vergleicht die Begrenzungskasten­ koordinaten mit den Darstellungsfeldkoordinaten, welche in den Geometrieprozessor zwischen Registerdateien 218 gespei­ chert sind, und stellt fest, ob das Segment sichtbar, unsicht­ bar oder teilweise sichtbar ist.
Für den Test auf eine Mindestgröße eines Begrenzungskastens wird die Größe des Begrenzungskastens approximiert, indem der Durchmesser des Kastens genommen wird, welcher als der Abstand zwischen den ersten beiden Eckpunkten definiert ist, und indem der Abstand des Begrenzungskastens von dem defi­ nierten Augenpunkt approximiert wird, indem die Tiefenwerte der beiden Eckpunkte gemittelt werden. Für die perspekti­ vische Projektion wird der Durchmesser durch den Abstand di­ vidiert, um eine Approximation der Größe des Begrenzungska­ stens zu erzielen. Für die orthographische Projektion wird die Größe des Begrenzungskastens einfach als der berechnete Durchmesser betrachtet. Wenn für die Größe des Begrenzungs­ kastens festgestellt wird, daß sie größer als ein gegebener Eingangswert ist, wird das Segment als nicht sichtbar be­ trachtet.
Wenn für das Volumen, das durch den Begrenzungskasten fest­ gelegt ist, ermittelt wird, daß es innerhalb des Darstel­ lungsfeldes ist, welches durch das Darstellungsfelddefini­ tionspaket festgelegt ist, und wenn für die Größe des Be­ grenzungskastens festgestellt wird, daß sie innerhalb eines vom Benutzer festgelegten Intervalls ist (d.h., das Objekt ist nicht zu groß oder zu klein), aktiviert der Geometrie­ prozessor 136 eine Objekt-sichtbar-Signalleitung an dem Baumdurchlaufprozessor 132, was anzeigt, daß das Objekt in dem Begrenzungskasten potentiell sichtbar ist. Da der Seg­ mentbegrenzungskasten die Graphikelemente der Kindsegmente des gegenwärtigen oder laufenden Segments umschließt, braucht der Sichtbarkeitstest für die Kindsegmente eines Segments nicht wiederholt zu werden, für das der Segmentbe­ grenzungskasten als gänzlich sichtbar ermittelt worden ist. Wenn andererseits der Begrenzungskasten gänzlich außerhalb des Sichtfeldes ist oder die Größe des Kastens nicht inner­ halb des festgelegten Intervalls ist, wird die Objekt-sicht­ bar-Signalleitung rückgesetzt. Dieses letztgenannte "unsicht­ bare" Segment und alle seine Kindsegemente brauchen nicht weiter verarbeitet zu werden.
Während der Geometrieprozessor 136 die Aussonderungspakete verarbeitet, speichert der Baumdurchlaufprozessor 132 den Kindzeiger, den Graphikelementdatenpufferzeiger und einen "Baumebene"-Anzeiger des Segmentsteuerblockes in dem inter­ nen Stapelspeicher des Baumdurchlaufprozessors. Die Baumebe­ ne ist die Ebene des Segments innerhalb der hierarchischen Struktur. So haben beispielsweise Geschwistersegmente die­ selbe Baumebene.
Wenn für das Segmentobjekt durch den Geometrieprozessor 136 ermittelt wird, daß es sichtbar ist, kopiert der Baumdurch­ laufprozessor 132 das Flagwort, die kaskadierte Transforma­ tionsmatrix und die Attribute des Objekts aus der Ausgangs­ registerdatei 220 in seinen Stapelspeicher über den Stapel­ bus 138. Wenn für das Objekt des Segments, das ausgesondert wird, festgestellt wird, daß es unsichtbar ist, liefert der Baumdurchlaufprozessor 132 ein Speicher-geladen-Signal zu dem Geometrieprozessor 136, ohne die Daten zu übertragen, um eine Übertragung von nutzlosen Daten zu vermeiden. Die Attri­ bute für unsichtbare Objekte werden somit nicht in dem Baum­ durchlaufprozessorstapelspeicher gespeichert. Da die Attri­ bute für unsichtbare Objekte nicht in dem Stapelspeicher gespeichert werden, werden diese Segmente nicht weiter ver­ arbeitet. Unten ist noch näher erläutert, daß die Daten, die in dem Stapelspeicher für jedes Segment gespeichert sind, für das ermittelt worden ist, daß es sichtbare Objekte hat, anschließend zurück zu dem Geometrieprozessor 136 über den Stapelbus 138 übertragen werden, wenn die zugeordneten Gra­ phikelemente aus dem DLM 116 zu dem Geometrieprozessor 136 übertragen werden.
Nachdem der Aussonderungspuffer eines Segments verarbeitet worden ist, befaßt sich der Baumdurchlaufprozessor 132 mit einem weiteren Segment der Anzeigeliste. In der dargestell­ ten Ausführungsform benutzt der Baumdurchlaufprozessor 132 eine geschwisterbevorzugte Methode, bei der der Baumdurch­ laufprozessor die Geschwister eines Segments verarbeitet, bevor er das Kind des Segments verarbeitet. Wenn ein Segment keine Geschwister hat, wird der Baumdurchlaufprozessor das erste Kind des Segments verarbeiten. Zum Beispiel hat gemäß der Darstellung in Fig. 2 das Darstellungsfelddefinitions­ segment A keine Geschwistersegmente. Demgemäß wird, nachdem die Segment-A-Aussonderungspufferdaten verarbeitet worden sind, der Baumdurchlaufprozessor 132 sich mit dem ersten Kindsegment, d.h. dem Segment B befassen. Nach dem Senden der Segment-B-Aussonderungspufferpakete zu dem Geometriepro­ zessor 136 zur Verarbeitung befaßt sich der Baumdurchlauf­ prozessor 132 mit dem Geschwistersegment, d.h. dem Segment C, und wird beginnen, die Aussonderungspufferpakete des Segments C zu dem Geometrieprozessor 136 zu senden. Das Segment C hat keine weiteren Geschwistersegmente, weshalb der Baumdurchlaufprozessor 132 sich mit dem ersten Kindseg­ ment, d.h. dem Segment F 22664 00070 552 001000280000000200012000285912255300040 0002003706509 00004 22545 befassen wird, wenn der Begren­ zungskasten des Elternsegments C, der den Würfel 152 ent­ hält, als sichtbar ermittelt wird. Der Baumdurchlaufprozes­ sor 132 wird auf diese Weise den Durchlauf fortsetzen und dabei die Aussonderungspufferpakete der Geschwistersegmente F-K der Reihe nach zu dem Geometrieprozessor 136 zur Verar­ beitung senden.
Wenn ein Segment keine weiteren Geschwistersegmente und kein Kindsegment hat (oder der Segmentbegrenzungskasten unsicht­ bar ist), wird der Baumdurchlaufprozessor 132 beginnen, die ausgesonderten Segmente wieder zu durchlaufen, und daher mit der Flächenverarbeitung beginnen. Wenn beispielsweise sämt­ liche Geschwistersegmente des Segments K einmal durchlaufen worden sind, erreicht der Baumdurchlaufprozessor 132 das Segment K. Da das Segment K kein Kindsegment hat, endet die Aussonderungsbetriebsart bei dem Segment K. Wenn die Fläche 6 (das Graphikelement des Segments K) als sichtbar ermittelt wird, überträgt der Baumdurchlaufprozessor 132 die gegen­ wärtige Transformationsmatrix und die Attributdaten für die Fläche 6 aus der Ausgangsregisterdatei 220 in die Stapelre­ gisterdatei 216 und beginnt außerdem mit dem Übertragen der Graphikelementpakete des Segments über den DLM-Bus 134 zu dem Geometrieprozessor 136 zur Flächenverarbeitung.
2. Flächenverarbeitung
Die Graphikelementdatenpakete sind ebenso wie die Aussonde­ rungspufferpakete durch Zeiger verknüpft. Jedes Graphikele­ mentdatenpaket wird aus dem DLM 116 über den DLM-Bus 134 in die DLM-Registerdatei 214 des Geometrieprozessors 136 ko­ piert. Der Baumdurchlaufprozessor 132 benutzt die Zeiger­ adresse jedes Graphikelementdatenpakets, um das nächste Pa­ ket in dem Strom zu gewinnen. Ein Nullzeiger zeigt an, daß das gegenwärtige Graphikelementdatenpaket das letzte Paket in dem Datenstrom ist.
Der Geometrieprozessor 136 interpretiert die Operationscode­ gruppe (Opcode) jedes Graphikelementdatenpakets und wählt den geeigneten Graphikelementpaketflächenverarbeitungsalgo­ rithmus aus (was unten noch näher beschrieben ist). Die Flächenverarbeitungsalgorithmen, die durch den Geometriepro­ zessor 136 der dargestellten Ausführungsform realisiert wer­ den, transformieren die Ecken (und die Eckennormalen, wenn schraffiert) in Schirmkoordinaten, lassen ein Polygon außer Betracht, wenn für das Polygon ermittelt wird, daß es von dem Betrachter weggerichtet ist, und begrenzen (clippen) je­ des sichtbare Polygon auf die Sichtfeldgrenzen (Clipebenen), wenn notwendig. Darüber hinaus projiziert der Geometriepro­ zessor 136 die Ecken entweder durch eine perspektivische oder durch eine parallele Methode in eine zweidimensionale Bildebene und skaliert die Ecken auf das definierte Darstel­ lungsfeld. Die Flächenverarbeitung wird durch den Geometrie­ prozessor 136 Seite für Seite ausgeführt, und die Daten für jede Seite werden, wenn sie abgeschlossen ist, zu dem An­ zeigeprozessor 140 über den Systembus 118 in einem Seitenpa­ ketformat übertragen. Nachdem ein Paket flächenverarbeitet worden ist, signalisiert der Geometrieprozessor 136 dem Baumdurchlaufprozessor 132, daß er in der Lage ist, das nächste Graphikelementdatenpaket zu empfangen, indem er eine Speicher-verfügbar-Signalleitung aktiviert.
Nachdem der Geometrieprozessor 136 angezeigt hat, daß er zur Flächenverarbeitung des nächsten Segments bereit ist, entnimmt der Baumdurchlaufprozessor 132 die Attribut- und Transformationsmatrixdaten für das nächste sichtbare Seg­ ment J oben aus dem Stapelspeicher und überträgt diese Daten über den Stapelbus 138 in die Stapelregisterdatei 216 des Geometrieprozessors 136. Der Baumdurchlaufprozessor 132 be­ nutzt den gespeicherten Graphikelementdatenpufferzeiger aus dem Stapelspeicher zum Adressieren und Senden der Graphik­ elementdatenpakete für das Segment J aus dem DLM 116 über den DLM-Bus 134 zu dem Geometrieprozessor 136 zur Flächen­ verarbeitung.
Der Baumdurchlaufprozessor 132 wird während des erneuten Durchlaufens der Anzeigeliste weiterhin über die "sichtba­ ren" Segmente zurücklaufen, Datenpufferzeiger, Transforma­ tionsmatrizen und Attribute aus dem Stapelspeicher entnehmen und die entsprechenden Graphikelementdatenpakete und Stapel­ daten zu dem Geometrieprozessor 136 zur Flächenverarbeitung senden, bis ein Segment, das ein "undurchlaufenes" Kindseg­ ment hat, angetroffen wird. Wie oben erwähnt prüft unter dem geschwisterbevorzugten Durchlaufalgorithmus der Baum­ durchlaufprozessor 132 nicht (und durchläuft daher nicht) einen Kindzeiger eines Segments, wenn das Segment einen Ge­ schwisterzeiger hat. Demgemäß wurde, wenn während des Rück­ durchlaufens das nächste Segment in der Linie, die zu durchlaufen ist, ein Kindsegment hat und das Segment, das gegenwärtig wieder durchlaufen wird, das Geschwistersegment des in der Linie als nächstes zu durchlaufenden Segments ist, das Kindsegment bei dem vorangehenden Aussonderungs­ durchlauf nicht durchlaufen. Nachdem ein undurchlaufenes Kindsegment angetroffen worden ist, schaltet der Baumdurch­ laufprozessor 132 wieder in die Aussonderungsbetriebsart um und durchläuft die Anzeigeliste, beginnend bei dem undurch­ laufenen Kindsegment.
Zum Beispiel gemäß Fig. 2 befaßt sich der Baumdurchlaufpro­ zessor 132 nach dem Aussondern des Segments B mit dem Ge­ schwistersegment C statt mit dem Kindsegment D während des Anfangsdurchlaufes. Während des Rückdurchlaufes werden die ausgesonderten Segmente flächenverarbeitet, bis der Rück­ durchlauf den Baumdurchlaufprozessor zu dem Segment C zurück­ bringt. Die Flächenverarbeitung wird nach dem Segment C be­ endet, da das nächste Segment, das in der Linie zu durchlau­ fen ist, das Segment B, ein undurchlaufenes Kindsegment hat, nämlich das Segment D. Der Baumdurchlaufprozessor 132 schal­ tet dann wieder auf die Aussonderungsbetriebsart um, in der er beginnend bei dem Segment D durchläuft und aussondert.
Ein nichtdurchlaufenes Kindsegment wird durch eine Überprü­ fung des Baumebenenanzeigers des laufenden Segments erfaßt, das wieder durchlaufen wird, und des Baumebenenanzeigers des nächsten Segments des Stapels (d.h. des nächsten Segments in der Reihe, das wieder durchlaufen wird). Wenn beide Baum­ ebenen dieselben sind (d.h., die Segmente Geschwister sind) und das nächste Segment in dem Stapel einen gültigen Kind­ zeiger hat, dann wurde das Kindsegment nicht durchlaufen.
Der Baumdurchlaufprozessor 132 wird mit dem Durchlauf und dem Wiederdurchlauf der Anzeigeliste fortfahren, bis jedes Segment entweder ausgesondert oder flächverarbeitet worden ist. Das letzte Graphikelementdatenpaket des Darstellungs­ felddefinitionssegments enthält ein "Ende des Durchlaufs"- Graphikelement. Der Baumdurchlaufprozessor sendet die Gra­ phikelementdatenpakete für das Darstellungsfeldsegment zu dem Geometrieprozessor zum Schluß. Daher wird das "Ende des Durchlaufs"-Graphikelement das letzte Paket sein, das zu dem Geometrieprozessor 136 übertragen wird. Der Geometrie­ prozessor 136 sendet seinerseits das "Ende des Durchlaufs"- Graphikelement ungeändert zu dem Anzeigeprozessor 140 über den Systembus 118. Der Anzeigeprozessor 140 wird dann mit der Schirmverarbeitung beginnen und eine Unterbrechung an den Terminalprozessor 112 abgeben.
3. Flächenverarbeitungsalgorithmen
Wie oben erwähnt, wird das Verarbeiten von Segmenten während des Aussonderungsprozesses fortgesetzt, bis es durch den Baumdurchlaufprozessor 132 beendet wird. In diesem Zeit­ punkt werden die Segmente, die nicht ausgesondert worden sind, durch den Baumdurchlaufprozessor zu dem Geometriepro­ zessor zur Datengraphikelementverarbeitung zurückgeleitet. In dieser Phase ist das erste Paket, das zu dem Geometrie­ prozessor 136 für jedes Segment gesendet wird, das Matrix­ invertierpaket, das in der DLM-Registerdatei 214 gespeichert ist. Der Geometrieprozessor prüft das Matrixinvertierpaket, um festzustellen, ob die Datenbasis Polygone enthält, welche Rückseiten haben, die außer Betracht zu lassen sind, oder eine Lichtquelle, die Schatten erzeugt. Wenn das eine oder andere der Fall ist, wird eine invertierte Transformations­ matrix in der arithmetischen Pipeline 212 berechnet und in der Zwischenregisterdatei 218 gespeichert. Der Empfang des Matrixinvertierpakets zeigt außerdem dem Geometrieprozessor 136 an, daß die Flächenverarbeitung begonnen hat und daß der Geometrieprozessor ein neues ausgesondertes Paket in seiner Stapelregisterdatei 216 haben muß. Der Geometrieprozessor 136 stellt fest, daß er das neue ausgesonderte Paket aus dem Baumdurchlaufprozessor 132 empfangen hat, indem Quittungs­ signale auf dem Stapelbus 138 benutzt werden.
Nachdem der Geometrieprozessor ein neues ausgesondertes Pa­ ket empfangen hat und das Paket in die Stapelregisterdatei 216 geladen worden ist, sendet der Geometrieprozessor das Segmentdefinitionspaket zu dem Anzeigeprozessor 140. Dieses Paket legt die Farben, "Schriftarten" und Freigabebits für sämtliche Daten in dem Segment fest.
Das Matrixinvertierpaket enthält außerdem zwei Flagbits, das Invertierbit und das Licht-drehen-Bit. Wenn das Inver­ terbit gesetzt ist, berechnet der Geometrieprozessor die transponierte inverse Matrix für Polygonnormalenvektoren. Wenn das Licht-drehen-Bit gesetzt ist, dreht der Geometrie­ prozessor den Lichtvektor aus dem Augenkoordinatensatz in den Modellkoordinatensatz. Das erfolgt durch Berechnen der Inversion der laufenden Transformationsmatrix. Mit anderen Worten, zum Transformieren von Punktkoordinaten aus einem Modellkoordinatensatz in den Augenkoordinatensatz wird eine kaskadierte Transformationsmatrix benutzt, und für die umge­ kehrte Transformation wird die Inversion der kaskadierten Transformationsmatrix benutzt.
Eine Vereinfachung wird in der dargestellten Ausführungsform benutzt. Die Invertiermatrixfunktion erfordert, daß die De­ terminante der laufenden Transformationsmatrix berechnet und jedes Glied durch die Determinante dividiert wird. In der dargestellten Ausführungsform ist das Skalieren der trans­ formierten Punkte nicht wichtig. Die Berechnung der Determi­ nante und der Divisionsprozeß sind nicht notwendig, da sie die invertierte Transformationsmatrix einfach neu skalieren.
Zum Berechnen der Inversion der laufenden Transformations­ matrix wird der obere 3x3-Teil der Transformationsmatrix, die in der Stapelregisterdatei 216 vorhanden ist, benutzt. Die neun Kofaktoren oder Adjunkte dieser Matrix werden dann auf übliche mathematische Weise berechnet. Die modifizierte invertierte Matrix "M" stellt die Transponierte der Kofak­ toren wie folgt dar:
Diese invertierte Transformationsmatrix "M" kann dann be­ nutzt werden, um den Lichtquellenvektor zu multiplizieren und den Lichtvektor in dem Modellkoordinatensatz zu be­ rechnen. Die Transponierte "TM" der Matrix "M" kann zum spä­ einen Gebrauch für die Berechnung von Polygonnormalen abge­ speichert werden.
Nach dem Matrixinvertierpaket kommen die Graphikelementdaten. Es gibt zwei Typen von dreidimensionalen Polygonen in der bevorzugten Ausführungsform, nämliche schattierte und un­ schattierte. Es gibt außerdem zwei zusätzliche Graphikele­ menttypen, die dem Polygon zugeordnet werden können, und zwar "schattiertes Loch"- und "unschattiertes Loch"-Graphik­ elemente.
Bei dreidimensionalen Polygonen beinhaltet das erste Paket zweiunddreißig Wörter und enthält drei oder vier Ecken in der dargestellten Ausführungsform. Polygone mit mehr als vier Ecken werden in anschließenden Paketen von sechzehn Worten fortgesetzt, die jeweils eine oder zwei Ecken enthal­ ten. Bei unschattierten Polygonen enthält das erste Paket sechzehn Wörter und drei Ecken. Zusätzliche Ecken sind in anschließenden Paketen enthalten. Der Geometrieprozessor speichert das Wortzählungsfeld des Paketflagwortes in dem Wortzählungsregister 224 und benutzt es, um die Zahl der Ecken in einem Paket zu bestimmen.
Der Mikrosequenzer 204 bewegt den Opcode aus jedem Datenpa­ ket in das Opcoderegister 222. Die Opcodes in dem Datenpa­ ket identifizieren den Flächenverarbeitungsalgorithmus für jeden Typ von Datenelement. Der Geometrieprozessor benutzt dann die arithmetische Pipeline 212, um die zweidimensiona­ len Koordinaten der Spitzen oder Ecken jedes Darstellungs­ elements zu berechnen, wobei die Endergebnisse jeder Berech­ nung in der Ausgangsregisterdatei 220 gespeichert werden.
Mit Ausnahme eines Rückflächeneliminationstests und der Be­ rechnung von Tiefenebenenkoeffizienten, was zu Beginn der Polygonverarbeitung erfolgt, verarbeitet der Geometriepro­ zessor 136 die Polygone Ecke für Ecke, ohne eine Zwischen­ liste von Polygonecken zu speichern. Der Geometrieprozessor nimmt einen Eckpunkt gänzlich während der gesamten Verarbei­ tung und gibt Eckendaten an den Anzeigeprozessor 140 (wenn möglich) ab, bevor er zur Verarbeitung der nächsten Polygon­ ecke zurückkehrt.
Für jedes Graphikelementdatenpaket wird ein Rückflächeneli­ minationstest ausgeführt. Zu diesem Zweck wird die erste Ecke eines Polygons durch die laufende Transformationsmatrix transformiert. Dann wird der Polygonnormalenvektor durch die transponierte invertierte Matrix "TM" transformiert (die be­ rechnet wurde, als der Matrixinvertieropcode empfangen wur­ de). Das Ergebnis wird normalisiert und dann wird der nicht­ rotierte Polygonnormalenvektor zum möglichen späteren Ge­ brauch abgespeichert. Das Skalarprodukt der transformierten rsten Ecke mit dem transformierten normalen Vektor wird ann genommen, und, wenn das Ergebnis positiv ist, ist die Ecke auf der "Rück"-Seite des Polygons. Wenn das Rückflä­ cheneliminationsflag für dieses Segment freigegeben wird, wird die Verarbeitung des Polygons sofort gestoppt. Wenn das Ergebnis positiv ist, und das Rückflächeneliminations­ flag nicht freigegeben wird, wird ein Rückfläche-vorhanden- Flag gesetzt, und der negierte Wert des Skalarprodukts wird zum späteren Gebrauch bei der Berechnung der Tiefenebenen­ koeffizienten abgespeichert. Wenn das Skalarprodukt negativ ist, ist die Ecke auf der Vorderseite des Polygons, und der Wert des Skalarprodukts wird zum späteren Gebrauch bei der Berechnung der Tiefenebenenkoeffizienten abgespeichert.
Danach werden die Tiefenebenenkoeffizienten berechnet, wel­ che die Tiefe in jedem Punkt an einem Polygon als eine Funktion "f" der X- und Y-Schirmkoordinaten des Punktes aus­ drücken. Wenn entweder der berechnete X-Gradient oder der berechnete Y-Gradient größer als eins ist (was anzeigt, daß die Fläche des Polygons weniger als ein Bildelement breit sein wird), dann wird das Polygon außer Betracht gelassen und die Verarbeitung für dieses Segment wird beendet.
Der nächste Schritt in der bevorzugten Ausführungsform be­ steht darin, jeden Eckpunkt des Polygons durch die laufende Transformationsmatrix zu transformieren. Anschließend kann die Intensität jeder Ecke berechnet werden. In der bevor­ zugten Ausführungsform werden sämtliche Intensitäten auf den Bereich von null (minimale Intensität) bis eins (maxi­ male Intensität) normalisiert. Die Umgebungsbeleuchtung für ein Graphikobjekt wird in dem Darstellungsfelddefinitions­ paket als ein Glied "Ia" gespeichert. Zum Berechnen der In­ tensität jeder Ecke, Ivertex, aus einer Lichtquelle "n" wird folgende Beziehung berechnet:
Ivertex = Ia + Irn*(1 + cos R )/2
wobei:
Irn = (1 - Ia) *Iln = maximale reflektierte Intensität aus der Lichtquelle "n",
Iln = Intensität der Lichtquelle "n", und R der Winkel zwischen der Lichtquelle und der Ecke ist.
Der Wert von Ivertex reicht von null bis eins und wird auf eins geklemmt, wenn mehrere Lichtquellen Intensitäten verur­ sachen, die über diesen Bereich hinausgehen.
Es gibt drei mögliche Schattierungsfälle auf der Basis der Schattieroptionen, die freigegeben werden. Wenn keine Schat­ tierung für ein Segment freigegeben wird, werden die Inten­ sitätswerte für jede Ecke auf null gesetzt. Falls eben oder facettiert, wird die Schattierung freigegeben, wobei die In­ tensitätswerte für sämtliche Ecken eines Polygons dieselben sein werden. Das oben beschriebene Schattierungsmodell wird benutzt. Das Glied "cos R" wird erzeugt, indem das Skalarpro­ dukt aus dem Polygonnormalenvektor und dem Lichtquellenvek­ tor gebildet wird. Dieses Skalarprodukt muß mit beiden Vek­ toren in einem gemeinsamen Koordinatensatz gebildet werden. Wenn es in einem Modellkoordinatensatz gebildet wird, muß die unrotierte Polygonnormale (vor dem Rückflächenelimina­ tionstest) abgespeichert werden.
Wenn gleichmäßige Schattierung (auch als "Gouraud"-Schattie­ rung bezeichnet) für das Segment freigegeben wird, werden die Intensitätswerte für alle Ecken eines Polygons im allge­ meinen nicht dieselben sein. Das oben beschriebene Schattie­ rungsmodell wird wieder benutzt. Das Glied "cos R" für jede Ecke wird erzeugt, indem das Skalarprodukt aus dem Eckennor­ malenvektor mit dem Lichtquellenvektor gebildet wird. Das erfolgt in dem Modellkoordinatensatz unter Verwendung des unrotierten Eckennormalen- und des Lichtquellenvektors in dem Modell, das berechnet wurde, als der Matrixinvertier­ opcode empfangen wurde.
Der nächste Schritt, der durch den Geometrieprozessor ausge­ führt wird, ist das Clippen, wobei jeder Punkt, der ein Polygon definiert, mit zuvor definierten Clipebenen ver­ glichen wird. Pseudoseiten können durch Clippen des Polygons gegen die recht, linke, obere und/oder untere Clipebene ge­ bildet werden, welche mit einem "Pseudoseite"-Bit als Flag versehen werden. Das wird dem Anzeigeprozessor 140 zeigen, daß die Pseudoseiten nicht hervorzuheben sind.
Eine Ecke wird sich durch die Clipebenenalgorithmen bewegen und zur Abgabe eines geclippten Punktes aus der Entclipebene führen. Wenn kein Punkt aus den Clipalgorithmen abgegeben wird, wird die nächste Ecke geholt. Wenn es einen Abgabe­ punkt aus der Clipebenenroutine gibt, geht der Geometriepro­ zessor auf den nächsten Schritt über, welches die Projek­ tion ist. Wenn die Projektion eine perspektivische Projek­ tion ist, dann werden die X- und Y-Werte jedes Punktes durch den Z-Wert für diesenPunkt dividiert.
Als nächster Schritt in der bevorzugten Ausführungsform werden die X- und Y-Koordinaten durch die Schirmskalier- und -translationsglieder gemäß folgenden Gleichungen ska­ liert und verschoben:
Xscr = Xin*Xscrscale + Xscrtran
Yscr = Yin*Yscrscale + Yscrtran
"Xscr" bedeutet den Wert von X auf dem Schirm, nachdem der ursprüngliche X-Wert ("Xin") mit einem Skalierwert ("Xscrscale") multipliziert und zu einem Translationswert ("Xscrtran") addiert worden ist. "Yscr" ist ähnlich defi­ niert.
Die transformierten Daten werden dann in ein Seitenpaket um­ gewandelt, das zu dem Anzeigeprozessor 140 zu übertragen ist. Bei diesem Formatierprozeß für jeweils zwei Eckpunkte wird eine Seite gebildet und werden ein oberer und ein unterer Punkt bestimmt. Flags können gesetzt werden, um anzuzeigen, ob die Seite eine rechte Seite, eine linke Seite oder eine horizontale Seite ist. Jedes Seitenpaket für zwei Ecken ent­ hält die Koordinaten des Schirmbildelements, in das die obere Ecke der Seite projiziert wird, sowie den exakten Wert der X-Koordinate auf der ersten Bildschirmrasterlinie, die die Seite kreuzt. Das Seitenpaket enthält außerdem die Steigung der Seite in Bildelementen pro Rasterlinie und die Änderung der Intensität längs der Seite, ausgedrückt in Intensitäts­ änderung pro Rasterlinie. Außerdem enthalten ist der Schat­ tierungswert oder der Intensitätsmodifizierer der Polygon­ farbe als Funktion der Lichtquellen an der oberen Ecke. Wenn jedes Seitenpaket berechnet worden ist, wird es zu dem An­ zeigeprozessor 140 gesendet.
Ein Intensitätsgradient wird aus drei nichtkollinearen Punk­ ten in dem Polygon berechnet. Wenn die ersten drei Punkte kollinear sind, werden die zweiten bis vierten Punkte ge­ testet, usw., bis drei nichtkollineare Punkte gefunden wer­ den. Wenn drei nichtkollineare Punkte nicht gefunden werden können, wird das Polygon außer Betracht gelassen. Wenn drei nichtkollineare Punkte gefunden werden, wird der Intensi­ tätsgradient in der X-Richtung folgendermaßen berechnet:
ds/dx =[(S 2(Y 3 - Y 1) + S 1(Y 2 - Y 3) + S 3(Y 1 - Y 2)]/
[(Xs(Y 3 - Y 1) + X 1(Y 2 - Y 3) + X 3(Y1 - Y 2)]
Wenn die verarbeitete Polygonfläche eine Rückfläche ist, dann wird das Rückfläche-vorhanden-Flag in dem Anzeigepaket gesen­ det, und ein Polygonintensitätsgradientenpaket wird zu dem Anzeigeprozessor 140 gesendet.

Claims (7)

1. Elektronische Geometrieprozessorschaltung für ein Graphikan­ zeigesystem, gekennzeichnet du:ch.:
  • a) eine Aussonderungseinrichtung (136), die mit einer ersten Speichereinrichtung verbunden ist, welche Segmente von Graphikdaten speichert, welche dreidimensionale Objekte darstellen, um in einer ersten Verarbeitungsphase wenig­ stens einige der Daten jedes Segments aus der ersten Speichereinrichtung mit voreingestellten Werten zu ver­ gleichen, um auszuwählen, ob jedes derartige Segment Graphikdaten enthält, die wenigstens teilweise innerhalb eines definierten Darstellungsvolumens liegen;
  • b) eine Übertragungseinrichtung (134), die mit der Aussonde­ rungseinrichtung (136) verbunden ist, zum Übertragen der ausgewählten Segmente in einen zweiten Speicher (116); und
  • c) eine Transformationseinrichtung (132) zum Empfangen der ausgewählten Segmente aus dem zweiten Speicher in einer zweiten Verarbeitungsphase, zum Transformieren der Gra­ phikdaten in den ausgewählten Segmenten aus einer dreidi­ mensionalen Darstellung in eine zweidimensionale Darstel­ lung und zum Übertragen der transformierten Graphikdaten zu einem Anzeigesystem (126) zur Anzeige.
2. Programmierbare elektronische Geometrieprozessorschaltung für ein Graphikanzeigesystem, mit einem Datenbasisspeicher zum Speichern von Segmenten von Graphikdaten, die dreidimen­ sionale Objekte darstellen, welche anzuzeigen sind, und Ope­ rationscodegruppen enthalten, die zu den Objekten gehören, mit einer ersten Verarbeitungseinrichtung (112) zum Ein­ schreiben von Segmenten von Graphikdaten in den Speicher (116), mit einer zweiten Verarbeitungseinrichtung (132), die auf die erste Verarbeitungseinrichtung (112) hin se­ quentiell Graphikdaten holt, die in dem Speicher (116) ge­ speichert sind, und mit einer dritten Verarbeitungseinrich­ tung (140) zum Empfangen von verarbeiteten Graphikdaten aus dem Geometrieprozessor (136) zur Anzeige auf einer Anzeige­ vorrichtung (126), gekennzeichnet durch:
  • a) eine Eingangsregistereinrichtung (214), die mit dem Spei­ cher (116) durch einen zugeordneten Speicherbus (134) verbunden ist, zum vorübergehenden Speichern von Graphik­ daten, die durch die zweite Verarbeitungseinrichtung (132) aus dem Speicher (116) geholt werden;
  • b) eine Pufferregistereinrichtung (216), die mit der zweiten Verarbeitungseinrichtung (132) durch einen zugeordneten Stapelbus (138) verbunden ist, zum Puffern von zwischen der zweiten Verarbeitungseinrichtung (132) und dem Geome­ trieprozessor (136) übertragenen Daten;
  • c) einen arithmetischen Pipelinemodul (212), der mit den Eingangs- und Pufferregistereinrichtungen (214, 220) ver­ bunden ist, zum mathematischen Verarbeiten von Graphikda­ ten, die in der Eingangsregistereinrichtung (214) oder der Pufferregistereinrichtung (216) vorübergehend gespei­ chert sind;
  • d) eine Ausgangsregistereinrichtung (220), die mit dem arith­ metischen Pipelinemodul (212) und mit der Pufferregister­ einrichtung (216) verbunden ist, zum vorübergehenden Speichern des Ausgangssignals des arithmetischen Pipe­ linemoduls (212); und
  • e) eine Mikrocontrollereinrichtung (202, 204), die mit der ersten und der dritten Verarbeitungseinrichtung (112, 140) durch einen Systembus (118), mit den Ein­ gangs-, Puffer- und Ausgangsregistern (214, 216, 220) und mit dem arithmetischen Pipelinemodul (212) ver­ bunden ist, zum Empfangen einer Sequenz von Verarbei­ tungsbefehlen aus der ersten Verarbeitungseinrichtung (112), zum Speichern der Befehle in einem Befehlsspei­ cher (202) und zum ausgewählten Ausführen der Befehle aufgrund von Operationscodegruppen, die in jedem Seg­ ment von Graphikdaten gespeichert sind, zum:
    • 1) Auswählen während einer ersten Verarbeitungsphase aus der Eingangsregistereinrichtung (214) und vor­ übergehenden Übertragen zu der zweiten Verarbei­ tungseinrichtung (132) über den Stapelbus (138) nur von Segmenten, die Daten enthalten, welche wenigstens teilweise innerhalb eines definierten Darstellungsvolumens sind,
    • 2) Empfangen während einer zweiten Verarbeitungsphase der ausgewählten Segmente aus der zweiten Verar­ beitungseinrichtung (132) über den Stapelbus (138) und zugeordneter Graphikdaten aus dem Speicher (116), welche durch die zweite Verarbeitungsein­ richtung (132) über den Speicherbus (134) geholt werden, und Transformieren der Graphikdaten aus einer dreidimensionalen Darstellung in eine zwei­ dimensionale Darstellung, und
    • 3) Übertragen der transformierten Graphikdaten zu der dritten Verarbeitungseinrichtung (140) über den Systembus (118) zur Anzeige.
3. Geometrieprozessor nach Anspruch 2, dadurch gekennzeich­ net, daß die Registereinrichtungen (214, 216, 220) dop­ pelt gepuffert sind.
4. Geometrieprozessor nach Anspruch 2 oder 3, gekennzeich­ net durch eine Zwischenregistereinrichtung (218), die mit dem Eingang des arithmetischen Pipelinemoduls (212) und mit der Ausgangsregistereinrichtung (220) verbunden ist, zum vorübergehenden Speichern von Zwischenberechnungswerten wäh­ rend der Verarbeitung von Graphikdaten und zum wahlweise Übertragen von Zwischenberechnungswerten zu dem arithmeti­ schen Pipelinemodul (292) zur weiteren Verarbeitung.
5. Programmierbare elektronische Geometrieprozessorschaltung für ein Graphikanzeigesystem, mit einem Datenbasisspeicher (116) zum Speichern von Segmenten von Graphikdaten, welche dreidimensionale Objekte darstellen, die anzuzeigen sind, und Operationscodegruppen enthalten, die zu den Objekten ge­ hören, mit einer ersten Verarbeitungseinrichtung (112) zum Einschreiben von Segmenten von Graphikdaten in den Speicher (116), mit einer zweiten Verarbeitungseinrichtung (132), die auf die erste Verarbeitungseinrichtung (112) hin sequentiell Graphikdaten holt, welche in dem Speicher (116) gespeichert sind, und mit einer dritten Verarbeitungseinrichtung (140) zum Empfangen von verarbeiteten Graphikdaten aus dem Geome­ trieprozessor (136) zur Anzeige auf einer Anzeigevorrich­ tung (126), gekennzeichnet durch:
  • a) eine doppelt gepufferte Eingangsregistereinrichtung (214), die mit dem Speicher (116) durch einen zugeordneten Spei­ cherbus (134) verbunden ist, zum vorübergehenden Spei­ chern von Graphikdaten, die durch die zweite Verarbei­ tungseinrichtung (132) aus dem Speicher (116) geholt wor­ den sind;
  • b) eine doppelt gepufferte Pufferregistereinrichtung (216), die mit der zweiten Verarbeitungseinrichtung (132) durch einen zugeordneten Stapelbus (138) verbunden ist, zum Puffern von Daten, die zwischen der zweiten Verarbei­ tungseinrichtung (132) und dem Geometrieprozessor (136) übertragen werden;
  • c) einen arithmetischen Pipelinemodul (212), der mit der Eingangs- und der Pufferregistereinrichtung (214, 216) verbunden ist, zum mathematischen Verarbeiten von Graphik­ daten, die in der Eingangsregistereinrichtung (214) oder der Pufferregistereinrichtung (216) vorübergehend ge­ speichert werden;
  • d) eine doppelt gepufferte Ausgangsregistereinrichtung (220), die mit dem arithmetischen Pipelinemodul (212) und mit der Pufferregistereinrichtung (216) verbunden ist, zum vorübergehenden Speichern des Ausgangssignals des arith­ metischen Pipelinemoduls (212);
  • e) eine Zwischenregistereinrichtung (218), die mit dem arith­ metischen Pipelinemodul (212) und mit der Ausgangsregi­ stereinrichtung (220) verbunden ist, zum vorübergehenden Speichern von Zwischenberechnungswerten während der Ver­ arbeitung von Graphikdaten;
  • f) eine Mikrocontrollereinrichtung (202, 204), die mit der ersten und der dritten Verarbeitungseinrichtung (112, 140) durch einen Systembus (118), mit dem Eingangs-, dem Puf­ fer- und dem Ausgangsregister (214, 216, 220) und mit dem arithmetischen Pipelinemodul (212) verbunden ist, zum Em­ pfangen einer Sequenz von Verarbeitungsbefehlen aus der ersten Verarbeitungseinrichtung (112), zum Speichern der Befehle in einem Befehlsspeicher (202) und zum wahlweisen Ausführen der Befehle aufgrund der in jedem Segment von Graphikdaten gespeicherten Operationscodegruppen, zum:
    • 1) Auswählen während einer ersten Verarbeitungsphase aus der Eingangsregistereinrichtung (214) und zum vorüber­ gehenden Übertragen zu der zweiten Verarbeitungsein­ richtung (132) über den Stapelbus (138) nur von Seg­ menten, die Daten enthalten, welche wenigstens teil­ weise innerhalb eines definierten Darstellungsvolumens sind,
    • 2) Empfangen der ausgewählten Segmente während einer zweiten Verarbeitungsphase aus der zweiten Verarbei­ tungseinrichtung (132) über den Stapelbus (138) und von zugeordneten, aus dem Speicher (116) durch die zweite Verarbeitungseinrichtung (132) geholten Gra­ phikdaten über den Speicherbus (134) und zum Transfor­ mieren der Graphikdaten aus einer dreidimensionalen Darstellung in eine zweidimensionale Darstellung, und
    • 3) Übertragen der transformierten Graphikdaten zu der dritten Verarbeitungseinrichtung (140) über den System­ bus (118) zur Anzeige.
6. Geometrieprozessor nach einem der Ansprüche 2 bis 5, da­ durch gekennzeichnet, daß der arithmetische Pipelinemodul (212) eine dynamisch rekonfigurierbare Berechnungspipeline enthält, mit:
  • a) einer Multiplizierschaltung (600), die mit den Eingängen des arithmetischen Pipelinemoduls (212) verbunden ist, zum Multiplizieren von zwei Eingangszahlen;
  • b) einer Akkumulatorschaltung (602), die mit der Multipli­ zierschaltung (600) verbunden ist, zum Addieren einer Sequenz von Produkten aus der Multiplizierschaltung (600);
  • c) einer Multifunktions-Arithmetisch-Logischen-Einheit (604), die mit den Eingängen des arithmetischen Pipelinemoduls (212) und mit dem Ausgang der Akkumulatorschaltung (602) verbunden ist, zum wahlweisen Arbeiten an Eingangsdaten oder an der Ausgangssumme der Akkumulatorschaltung (602);
  • d) einer Linearapproximationsumformschaltung (606), die mit dem Ausgang der Akkumulatorschaltung (602) verbunden ist, zum wahlweisen Arbeiten an der Ausgangssumme der Akkumu­ latorschaltung (602); und
  • e) einer Buspufferschaltung (608), die mit dem Ausgang der Akkumulatorschaltung (602) verbunden ist, zum wahlweisen Übertragen der Ausgangssumme der Akkumulatorschaltung (602) in die Ausgangsregistereinrichtung (220).
7. Geometrieprozessor nach einem der Ansprüche 2 bis 6, ge­ kennzeichnet durch eine Verzögerungslogikschaltung (210), die mit der Mikrocontrollereinrichtung (202, 204) und mit dem arithmetischen Pipelinemodul (212) verbunden ist, zum wahlweisen Verzögern der Übertragung von Teilen von Befehlen zu dem arithmetischen Pipelinemodul (212), damit sie mit der Verarbeitung von Daten darin zusammenfallen.
DE19873706509 1986-03-07 1987-02-28 Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystem Withdrawn DE3706509A1 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/838,300 US4862392A (en) 1986-03-07 1986-03-07 Geometry processor for graphics display system

Publications (1)

Publication Number Publication Date
DE3706509A1 true DE3706509A1 (de) 1987-09-10

Family

ID=25276760

Family Applications (1)

Application Number Title Priority Date Filing Date
DE19873706509 Withdrawn DE3706509A1 (de) 1986-03-07 1987-02-28 Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystem

Country Status (5)

Country Link
US (1) US4862392A (de)
JP (1) JPS62212785A (de)
DE (1) DE3706509A1 (de)
FR (1) FR2595486A1 (de)
GB (1) GB2187615B (de)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3835110A1 (de) * 1987-10-16 1989-04-27 Toshiba Kawasaki Kk Verfahren und einrichtung zum leiten einer verarbeitung von bilddaten und zusatzinformation
DE10031364B4 (de) * 1999-06-29 2009-12-31 Mitsubishi Denki K.K. Vorrichtung und Verfahren zur Bilddarstellung

Families Citing this family (156)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4974198A (en) * 1986-07-16 1990-11-27 Nec Corporation Vector processing system utilizing firm ware control to prevent delays during processing operations
US5053989A (en) * 1986-08-27 1991-10-01 Minolta Camera Kabushiki Kaisha Digital image processing apparatus having a microprogram controller for reading microinstructions during a vacant period of the image processing circuit
GB2214037A (en) * 1987-12-18 1989-08-23 Ibm Solid modelling system
US5185813A (en) * 1988-01-19 1993-02-09 Kabushiki Kaisha Toshiba Document image processing apparatus
US5714977A (en) 1988-02-24 1998-02-03 Quantel Limited Video processing system for movement simulation
JPH0690042B2 (ja) * 1988-05-13 1994-11-14 本田技研工業株式会社 自走車の位置制御装置
GB2267803B (en) * 1989-01-13 1994-03-02 Sun Microsystems Inc Hardware implementation of clipping and inter-coordinate comparison logic
US5297240A (en) * 1989-01-13 1994-03-22 Sun Microsystems, Inc. Hardware implementation of clipping and intercoordinate comparison logic
US5058042A (en) * 1989-04-03 1991-10-15 Hewlett-Packard Company Method for employing a hierarchical display list in global rendering
GB8908612D0 (en) * 1989-04-17 1989-06-01 Quantel Ltd Video graphics system
US5182797A (en) * 1989-10-23 1993-01-26 International Business Machines Corporation Multi-processor graphics display system for displaying hierarchical data structures
US5175863A (en) * 1989-10-23 1992-12-29 International Business Machines Corporation Signal data processing system having independently, simultaneously operable alu and macu
US5249265A (en) * 1989-10-24 1993-09-28 International Business Machines Corporation Structure storage management in a graphics display device
US5327243A (en) * 1989-12-05 1994-07-05 Rasterops Corporation Real time video converter
US5222204A (en) * 1990-03-14 1993-06-22 Hewlett-Packard Company Pixel interpolation in perspective space
EP0447228A3 (en) * 1990-03-16 1993-01-07 Hewlett-Packard Company Data stream concentrator providing attribute data storage and graphics pipeline access
US5226109A (en) * 1990-04-26 1993-07-06 Honeywell Inc. Three dimensional computer graphic symbol generator
US5329615A (en) * 1990-09-14 1994-07-12 Hughes Aircraft Company Concurrent general purpose and DMA processing in a graphics rendering processor
US5276798A (en) * 1990-09-14 1994-01-04 Hughes Aircraft Company Multifunction high performance graphics rendering processor
CA2050658C (en) * 1990-09-14 1997-01-28 John M. Peaslee Dual hardware channels and hardware context switching in a graphics rendering processor
JP3093247B2 (ja) * 1990-09-21 2000-10-03 株式会社東芝 プレゼンテーション支援環境システム
DK0575346T3 (da) * 1990-11-30 2001-12-03 Sun Microsystems Inc Fremgangsmåde og apparatur til frembringelse af grafiske billeder
JP2824342B2 (ja) * 1991-03-29 1998-11-11 富士通株式会社 イメージ高速描画装置
US5347619A (en) * 1991-04-30 1994-09-13 International Business Machines Corporation Nonconvex polygon identifier
US5414801A (en) * 1991-06-11 1995-05-09 Virtus Corporation Computerized method and apparatus using containment relationships to represent objects in a three-dimensional space, and for moving therethrough
US5313577A (en) * 1991-08-21 1994-05-17 Digital Equipment Corporation Translation of virtual addresses in a computer graphics system
GB2259432A (en) * 1991-09-06 1993-03-10 Canon Res Ct Europe Ltd Three dimensional graphics processing
DE69130958T2 (de) * 1991-10-10 1999-07-01 Hewlett Packard Co Graphisches ausgangs-system und -verfahren.
DE69129339T2 (de) * 1991-10-10 1998-08-20 Hewlett Packard Co Graphisches ausgangssystem mit begrenzter aktualisierung.
US5388841A (en) 1992-01-30 1995-02-14 A/N Inc. External memory system having programmable graphics processor for use in a video game system or the like
JP2755039B2 (ja) * 1992-05-12 1998-05-20 日本電気株式会社 レジスタ・アクセス制御方式
US5261029A (en) * 1992-08-14 1993-11-09 Sun Microsystems, Inc. Method and apparatus for the dynamic tessellation of curved surfaces
GB2271261A (en) * 1992-10-02 1994-04-06 Canon Res Ct Europe Ltd Processing image data
GB2271260A (en) * 1992-10-02 1994-04-06 Canon Res Ct Europe Ltd Processing image data
GB2271259A (en) * 1992-10-02 1994-04-06 Canon Res Ct Europe Ltd Processing image data
US5367632A (en) * 1992-10-30 1994-11-22 International Business Machines Corporation Flexible memory controller for graphics applications
US5404437A (en) * 1992-11-10 1995-04-04 Sigma Designs, Inc. Mixing of computer graphics and animation sequences
US5872570A (en) * 1993-02-15 1999-02-16 Canon Kabushiki Kaisha Method and apparatus for use in generating a rendering order for use in rendering images
EP0612027B1 (de) * 1993-02-15 2002-11-13 Canon Kabushiki Kaisha Bildverarbeitung
GB9303009D0 (en) * 1993-02-15 1993-03-31 Canon Res Ct Europe Ltd Processing image data
GB9315852D0 (en) * 1993-07-30 1993-09-15 Video Logic Ltd Shading three-dimensional images
DE69416152T2 (de) * 1993-10-06 1999-07-01 Honeywell Inc Virtueller graphikprozessor und verfahren für eingebettete echtzeitanzeigesysteme
US5732262A (en) * 1994-01-31 1998-03-24 International Business Machines Corporation Database definition language generator
US5515107A (en) * 1994-03-30 1996-05-07 Sigma Designs, Incorporated Method of encoding a stream of motion picture data
US5598576A (en) * 1994-03-30 1997-01-28 Sigma Designs, Incorporated Audio output device having digital signal processor for responding to commands issued by processor by emulating designated functions according to common command interface
JPH0816820A (ja) * 1994-04-25 1996-01-19 Fujitsu Ltd 3次元アニメーション作成装置
US5528309A (en) 1994-06-28 1996-06-18 Sigma Designs, Incorporated Analog video chromakey mixer
JP3603285B2 (ja) * 1994-07-21 2004-12-22 株式会社セガ 画像処理装置
US5613049A (en) * 1994-10-26 1997-03-18 The Boeing Company Method for creating spatially balanced bounding volume hierarchies for use in a computer generated display of a complex structure
ES2141392T3 (es) * 1994-10-26 2000-03-16 Boeing Co Metodo para controlar el nivel del detalle presentado en un visualizador de pantalla generado por ordenador de una estructura compleja.
US5559941A (en) * 1994-10-26 1996-09-24 Brechner; Eric L. Method for smoothly maintaining a vertical orientation during computer animation
US5790881A (en) * 1995-02-07 1998-08-04 Sigma Designs, Inc. Computer system including coprocessor devices simulating memory interfaces
US5826043A (en) * 1995-06-07 1998-10-20 Ast Research, Inc. Docking station with serially accessed memory that is powered by a portable computer for identifying the docking station
US5657479A (en) * 1995-12-04 1997-08-12 Silicon Graphics, Inc. Hierarchical display list processing in graphics data retrieval system
US5694532A (en) * 1996-01-26 1997-12-02 Silicon Graphics, Inc. Method for selecting a three-dimensional object from a graphical user interface
US5719511A (en) * 1996-01-31 1998-02-17 Sigma Designs, Inc. Circuit for generating an output signal synchronized to an input signal
US6128726A (en) * 1996-06-04 2000-10-03 Sigma Designs, Inc. Accurate high speed digital signal processor
US5818468A (en) * 1996-06-04 1998-10-06 Sigma Designs, Inc. Decoding video signals at high speed using a memory buffer
US6104842A (en) * 1996-06-10 2000-08-15 Integrated Device Technology, Inc. Geometry processing of digital video models and images
US6057857A (en) * 1996-06-12 2000-05-02 Citrix Systems, Inc. Method for the lossless compression of lines in a distributed computer system
US5771392A (en) * 1996-06-20 1998-06-23 Mathsoft, Inc. Encoding method to enable vectors and matrices to be elements of vectors and matrices
US6115047A (en) * 1996-07-01 2000-09-05 Sun Microsystems, Inc. Method and apparatus for implementing efficient floating point Z-buffering
US6230235B1 (en) 1996-08-08 2001-05-08 Apache Systems, Inc. Address lookup DRAM aging
US5877780A (en) * 1996-08-08 1999-03-02 Lu; Hsuehchung Shelton Semiconductor chip having multiple independent memory sections, at least one of which includes simultaneously accessible arrays
US6104658A (en) * 1996-08-08 2000-08-15 Neomagic Corporation Distributed DRAM refreshing
US6209020B1 (en) * 1996-09-20 2001-03-27 Nortel Networks Limited Distributed pipeline memory architecture for a computer system with even and odd pids
US5956047A (en) * 1997-04-30 1999-09-21 Hewlett-Packard Co. ROM-based control units in a geometry accelerator for a computer graphics system
US5930519A (en) * 1997-04-30 1999-07-27 Hewlett Packard Company Distributed branch logic system and method for a geometry accelerator
US6184902B1 (en) 1997-04-30 2001-02-06 Hewlett-Packard Company Centralized branch intelligence system and method for a geometry accelerator
US6195105B1 (en) * 1998-03-24 2001-02-27 Ati Technologies, Inc. Method and apparatus for improved concurrent video graphic processing
KR100298789B1 (ko) * 1998-04-29 2001-09-06 윤종용 그래픽 처리에 있어서 클리핑 처리방법
US6195739B1 (en) * 1998-06-29 2001-02-27 Cisco Technology, Inc. Method and apparatus for passing data among processor complex stages of a pipelined processing engine
US6836838B1 (en) 1998-06-29 2004-12-28 Cisco Technology, Inc. Architecture for a processor complex of an arrayed pipelined processing engine
US6509905B2 (en) * 1998-11-12 2003-01-21 Hewlett-Packard Company Method and apparatus for performing a perspective projection in a graphics device of a computer graphics display system
US6489955B1 (en) 1999-06-07 2002-12-03 Intel Corporation Ray intersection reduction using directionally classified target lists
US7161690B1 (en) * 1999-08-18 2007-01-09 Texas Instruments Incorporated Method for enhancing rendering of picture elements
WO2001029773A1 (de) * 1999-10-18 2001-04-26 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Verfahren zur echtzeit-darstellung von grossen volumendatenmengen
US6618048B1 (en) 1999-10-28 2003-09-09 Nintendo Co., Ltd. 3D graphics rendering system for performing Z value clamping in near-Z range to maximize scene resolution of visually important Z components
US6411301B1 (en) 1999-10-28 2002-06-25 Nintendo Co., Ltd. Graphics system interface
US6452600B1 (en) 1999-10-28 2002-09-17 Nintendo Co., Ltd. Graphics system interface
US7050064B2 (en) * 1999-11-24 2006-05-23 Nintendo Co., Ltd. Method and apparatus for displaying higher color resolution on a hand-held LCD device
US6573900B1 (en) 1999-12-06 2003-06-03 Nvidia Corporation Method, apparatus and article of manufacture for a sequencer in a transform/lighting module capable of processing multiple independent execution threads
US7257328B2 (en) * 1999-12-13 2007-08-14 Finisar Corporation System and method for transmitting data on return path of a cable television system
US6859862B1 (en) 2000-04-07 2005-02-22 Nintendo Co., Ltd. Method and apparatus for software management of on-chip cache
US6857061B1 (en) 2000-04-07 2005-02-15 Nintendo Co., Ltd. Method and apparatus for obtaining a scalar value directly from a vector register
US6789112B1 (en) 2000-05-08 2004-09-07 Citrix Systems, Inc. Method and apparatus for administering a server having a subsystem in communication with an event channel
US6922724B1 (en) 2000-05-08 2005-07-26 Citrix Systems, Inc. Method and apparatus for managing server load
US6785726B1 (en) 2000-05-08 2004-08-31 Citrix Systems, Inc. Method and apparatus for delivering local and remote server events in a similar fashion
US6785713B1 (en) 2000-05-08 2004-08-31 Citrix Systems, Inc. Method and apparatus for communicating among a network of servers utilizing a transport mechanism
US20020029285A1 (en) 2000-05-26 2002-03-07 Henry Collins Adapting graphical data, processing activity to changing network conditions
US7119813B1 (en) 2000-06-02 2006-10-10 Nintendo Co., Ltd. Variable bit field encoding
US6999100B1 (en) 2000-08-23 2006-02-14 Nintendo Co., Ltd. Method and apparatus for anti-aliasing in a graphics system
US6639595B1 (en) 2000-08-23 2003-10-28 Nintendo Co., Ltd. Achromatic lighting in a graphics system and method
US6580430B1 (en) 2000-08-23 2003-06-17 Nintendo Co., Ltd. Method and apparatus for providing improved fog effects in a graphics system
US6867781B1 (en) 2000-08-23 2005-03-15 Nintendo Co., Ltd. Graphics pipeline token synchronization
US6700586B1 (en) 2000-08-23 2004-03-02 Nintendo Co., Ltd. Low cost graphics with stitching processing hardware support for skeletal animation
US6825851B1 (en) 2000-08-23 2004-11-30 Nintendo Co., Ltd. Method and apparatus for environment-mapped bump-mapping in a graphics system
US6664958B1 (en) 2000-08-23 2003-12-16 Nintendo Co., Ltd. Z-texturing
US6707458B1 (en) 2000-08-23 2004-03-16 Nintendo Co., Ltd. Method and apparatus for texture tiling in a graphics system
US7002591B1 (en) 2000-08-23 2006-02-21 Nintendo Co., Ltd. Method and apparatus for interleaved processing of direct and indirect texture coordinates in a graphics system
US6609977B1 (en) 2000-08-23 2003-08-26 Nintendo Co., Ltd. External interfaces for a 3D graphics system
US6664962B1 (en) 2000-08-23 2003-12-16 Nintendo Co., Ltd. Shadow mapping in a low cost graphics system
US6937245B1 (en) 2000-08-23 2005-08-30 Nintendo Co., Ltd. Graphics system with embedded frame buffer having reconfigurable pixel formats
US7034828B1 (en) 2000-08-23 2006-04-25 Nintendo Co., Ltd. Recirculating shade tree blender for a graphics system
US7196710B1 (en) 2000-08-23 2007-03-27 Nintendo Co., Ltd. Method and apparatus for buffering graphics data in a graphics system
US7134960B1 (en) * 2000-08-23 2006-11-14 Nintendo Co., Ltd. External interfaces for a 3D graphics system
US6980218B1 (en) 2000-08-23 2005-12-27 Nintendo Co., Ltd. Method and apparatus for efficient generation of texture coordinate displacements for implementing emboss-style bump mapping in a graphics rendering system
US7184059B1 (en) 2000-08-23 2007-02-27 Nintendo Co., Ltd. Graphics system with copy out conversions between embedded frame buffer and main memory
US6636214B1 (en) 2000-08-23 2003-10-21 Nintendo Co., Ltd. Method and apparatus for dynamically reconfiguring the order of hidden surface processing based on rendering mode
US6811489B1 (en) 2000-08-23 2004-11-02 Nintendo Co., Ltd. Controller interface for a graphics system
US6606689B1 (en) 2000-08-23 2003-08-12 Nintendo Co., Ltd. Method and apparatus for pre-caching data in audio memory
US7538772B1 (en) 2000-08-23 2009-05-26 Nintendo Co., Ltd. Graphics processing system with enhanced memory controller
US6697074B2 (en) 2000-11-28 2004-02-24 Nintendo Co., Ltd. Graphics system interface
US7003588B1 (en) 2001-08-22 2006-02-21 Nintendo Co., Ltd. Peripheral devices for a video game system
US7751718B2 (en) * 2002-02-12 2010-07-06 Finisar Corporation Efficient transmission of digital return path data in cable television return path
US7725036B2 (en) * 2002-02-12 2010-05-25 Finisar Corporation Efficient transmission of digital return path data in cable television return path
US8156535B2 (en) * 2002-02-12 2012-04-10 Finsar Corporation Data rate compression device for cable television return path using bandpass puncturing
US8671213B2 (en) 2002-03-14 2014-03-11 Citrix Systems, Inc. Methods and apparatus for generating graphical and media displays at a client
US7376695B2 (en) * 2002-03-14 2008-05-20 Citrix Systems, Inc. Method and system for generating a graphical display for a remote terminal session
US7012604B1 (en) * 2002-09-12 2006-03-14 Advanced Micro Devices, Inc. System architecture for high speed ray tracing
US7689128B2 (en) * 2002-10-30 2010-03-30 Finisar Corporation Return path transmitter with extended digital processing circuitry
US20070204122A1 (en) * 2004-04-04 2007-08-30 Guobiao Zhang Multimedia Three-Dimensional Memory (M3DM) System
JP2005301904A (ja) * 2004-04-15 2005-10-27 Mitsubishi Electric Corp 住所データベースおよびこれを用いた住所検索システム
US8032916B2 (en) * 2004-05-12 2011-10-04 Finisar Corporation Single master clock control of Ethernet data transfer over both a cable TV return path and an Ethernet forward path
US7765576B2 (en) * 2004-05-12 2010-07-27 Finsiar Corporation Changing communication mode in a CATV pathway using mute commands
US7519078B2 (en) * 2004-05-12 2009-04-14 Finisar Corporation Automated ethernet configuration of CATV network
US7280112B1 (en) 2004-05-14 2007-10-09 Nvidia Corporation Arithmetic logic unit temporary registers
US8743142B1 (en) 2004-05-14 2014-06-03 Nvidia Corporation Unified data fetch graphics processing system and method
US8860722B2 (en) * 2004-05-14 2014-10-14 Nvidia Corporation Early Z scoreboard tracking system and method
US8711155B2 (en) * 2004-05-14 2014-04-29 Nvidia Corporation Early kill removal graphics processing system and method
US8687010B1 (en) 2004-05-14 2014-04-01 Nvidia Corporation Arbitrary size texture palettes for use in graphics systems
US8736620B2 (en) * 2004-05-14 2014-05-27 Nvidia Corporation Kill bit graphics processing system and method
US8736628B1 (en) 2004-05-14 2014-05-27 Nvidia Corporation Single thread graphics processing system and method
US8423673B2 (en) 2005-03-14 2013-04-16 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment using compression
US8171169B2 (en) 2005-03-14 2012-05-01 Citrix Systems, Inc. Method and apparatus for updating a graphical display in a distributed processing environment
US8537168B1 (en) 2006-11-02 2013-09-17 Nvidia Corporation Method and system for deferred coverage mask generation in a raster stage
US9183607B1 (en) 2007-08-15 2015-11-10 Nvidia Corporation Scoreboard cache coherence in a graphics pipeline
US8599208B2 (en) * 2007-08-15 2013-12-03 Nvidia Corporation Shared readable and writeable global values in a graphics processor unit pipeline
US8736624B1 (en) 2007-08-15 2014-05-27 Nvidia Corporation Conditional execution flag in graphics applications
US20090046105A1 (en) * 2007-08-15 2009-02-19 Bergland Tyson J Conditional execute bit in a graphics processor unit pipeline
US8314803B2 (en) * 2007-08-15 2012-11-20 Nvidia Corporation Buffering deserialized pixel data in a graphics processor unit pipeline
US8775777B2 (en) * 2007-08-15 2014-07-08 Nvidia Corporation Techniques for sourcing immediate values from a VLIW
US8521800B1 (en) 2007-08-15 2013-08-27 Nvidia Corporation Interconnected arithmetic logic units
US8310494B2 (en) * 2008-09-30 2012-11-13 Apple Inc. Method for reducing graphics rendering failures
US9001157B2 (en) * 2009-03-25 2015-04-07 Nvidia Corporation Techniques for displaying a selection marquee in stereographic content
US9053562B1 (en) 2010-06-24 2015-06-09 Gregory S. Rabin Two dimensional to three dimensional moving image converter
US9411595B2 (en) 2012-05-31 2016-08-09 Nvidia Corporation Multi-threaded transactional memory coherence
US9336555B1 (en) 2012-10-19 2016-05-10 Google Inc. Record-time optimization of display lists
US9824009B2 (en) 2012-12-21 2017-11-21 Nvidia Corporation Information coherency maintenance systems and methods
US10102142B2 (en) 2012-12-26 2018-10-16 Nvidia Corporation Virtual address based memory reordering
US9317251B2 (en) 2012-12-31 2016-04-19 Nvidia Corporation Efficient correction of normalizer shift amount errors in fused multiply add operations
US9992021B1 (en) 2013-03-14 2018-06-05 GoTenna, Inc. System and method for private and point-to-point communication between computing devices
US9569385B2 (en) 2013-09-09 2017-02-14 Nvidia Corporation Memory transaction ordering
US9390058B2 (en) 2013-09-24 2016-07-12 Apple Inc. Dynamic attribute inference
US9367309B2 (en) * 2013-09-24 2016-06-14 Apple Inc. Predicate attribute tracker
WO2016105218A1 (en) * 2014-12-23 2016-06-30 Intel Corporation Facilitating culling of composite objects in graphics processing units when such objects produce no visible change in graphics images

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0152741A2 (de) * 1984-01-12 1985-08-28 Octree Corporation Hochgeschwindigkeitsbilderzeugung von komplexen festen Objekten mit Verwendung von achtästiger Kodierung

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4181953A (en) * 1978-02-17 1980-01-01 The Singer Company Face vertex correction for real-time simulation of a polygon face object system
NL8300872A (nl) * 1983-03-10 1984-10-01 Philips Nv Multiprocessor-rekenmachinesysteem voor het tot een gekleurde afbeelding verwerken van in een hierarchische datastruktuur gedefinieerde objekt-elementen.
US4609917A (en) * 1983-01-17 1986-09-02 Lexidata Corporation Three-dimensional display system
US4625290A (en) * 1983-11-02 1986-11-25 University Of Florida Apparatus and method for producing a three-dimensional display on a video display device

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0152741A2 (de) * 1984-01-12 1985-08-28 Octree Corporation Hochgeschwindigkeitsbilderzeugung von komplexen festen Objekten mit Verwendung von achtästiger Kodierung

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3835110A1 (de) * 1987-10-16 1989-04-27 Toshiba Kawasaki Kk Verfahren und einrichtung zum leiten einer verarbeitung von bilddaten und zusatzinformation
DE10031364B4 (de) * 1999-06-29 2009-12-31 Mitsubishi Denki K.K. Vorrichtung und Verfahren zur Bilddarstellung

Also Published As

Publication number Publication date
GB2187615A (en) 1987-09-09
GB8704601D0 (en) 1987-04-01
US4862392A (en) 1989-08-29
JPS62212785A (ja) 1987-09-18
GB2187615B (en) 1990-04-04
FR2595486A1 (fr) 1987-09-11

Similar Documents

Publication Publication Date Title
DE3706509A1 (de) Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystem
DE102019103059B4 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE112007002991B4 (de) Computergraphikschattenvolumen unter Verwendung von hierarchischem Okklusions-Culling
DE69832611T2 (de) Computergrafiksystem
DE102019102821A1 (de) Verfahren zur behandlung von ungeordneten opak- und alphastrahl/primitiv-schnittpunkten
US7728848B2 (en) Tools for 3D mesh and texture manipulation
DE102019101873A1 (de) Abfragespezifische Verhaltensmodifizierung von Baumtraversierung
US3816726A (en) Computer graphics clipping system for polygons
DE10296401B4 (de) Verbund-Rendering von 3-D-Graphikobjekten
DE69632578T2 (de) Computer-grafiksystem zum schaffen und verbessern von texturabbildungssystemen
DE69725057T2 (de) Gleitkommaprozessor für einen dreidimensionalen graphischen Beschleuniger
DE112005000804T5 (de) Multi-Label-Bildsegmentierung mit GPU
GB2194656A (en) Solid modelling
JPS62151896A (ja) 計算機画像発生システムに於ける縁平滑化方法
DE112012002623T5 (de) Verfahren zum Simulieren der Bearbeitung von Objekten durch Bewegung eines Werkzeugs, und System und Computerprogrammprodukt für dieses
JP2000348202A (ja) ボクセルを有するボリューム・データ・セットのずらし−ワープ・レンダリング方法、ボリューム・データ・セットのレンダリング装置
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE112017003841T5 (de) Verfahren und vorrichtung für die korrekte reihung und nummerierung mehrerer aufeinanderfolgender strahl-oberflächen-schnittpunkte innerhalb einer raytracing-architektur
DE102021115407A1 (de) Hardwarebeschleunigung zur strahlverfolgung von primitiven, die vertices teilen
DE102019101871A1 (de) Verfahren und Vorrichtung zum Gewinnen von Abtastpositionen von Textuieroperationen
DE102017109472A1 (de) Stereo-mehrfach-projektion implementiert unter verwendung einer graphikverarbeitungs-pipeline
JP2612221B2 (ja) 図形画像を生成する装置及び方法
DE102019134020A1 (de) Dekompprimierungstechniken zur verarbeitung komprimierter daten, die für künstliche neuronale netzwerke geeignet sind
Camahort et al. Integrating volume data analysis and rendering on distributed memory architectures
DE102021114013A1 (de) Techniken zum effizienten abtasten eines bildes

Legal Events

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

Owner name: STAR TECHNOLOGIES, INC., STERLING, VA., US

8128 New person/name/address of the agent

Representative=s name: REINHARD, H., DIPL.-CHEM. DR.RER.NAT. SKUHRA, U.,

8136 Disposal/non-payment of the fee for publication/grant