DE3706509A1 - Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystem - Google Patents
Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystemInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/10—Geometric effects
- G06T15/40—Hidden part removal
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/06—Ray-tracing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Graphics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Image Generation (AREA)
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.
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.
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
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):
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),
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.
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ß 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.
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.
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.
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.
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
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)]
[(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.
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)
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 (157)
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 |
US5175863A (en) * | 1989-10-23 | 1992-12-29 | International Business Machines Corporation | Signal data processing system having independently, simultaneously operable alu and macu |
US5182797A (en) * | 1989-10-23 | 1993-01-26 | International Business Machines Corporation | Multi-processor graphics display system for displaying hierarchical data structures |
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 |
CA2050658C (en) * | 1990-09-14 | 1997-01-28 | John M. Peaslee | Dual hardware channels and hardware context switching in a graphics rendering processor |
US5276798A (en) * | 1990-09-14 | 1994-01-04 | Hughes Aircraft Company | Multifunction high performance graphics rendering processor |
JP3093247B2 (ja) * | 1990-09-21 | 2000-10-03 | 株式会社東芝 | プレゼンテーション支援環境システム |
WO1992009947A1 (en) * | 1990-11-30 | 1992-06-11 | Vpl Research, Inc. | Method and apparatus for rendering graphical images |
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 |
GB2271260A (en) * | 1992-10-02 | 1994-04-06 | Canon Res Ct Europe Ltd | Processing image data |
GB2271261A (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 |
DE69431687D1 (de) * | 1993-02-15 | 2002-12-19 | Canon Kk | Bildverarbeitung |
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 |
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 |
EP0722589B1 (de) * | 1993-10-06 | 1999-01-20 | 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 | 株式会社セガ | 画像処理装置 |
US5559941A (en) * | 1994-10-26 | 1996-09-24 | Brechner; Eric L. | Method for smoothly maintaining a vertical orientation during computer animation |
WO1996013808A1 (en) * | 1994-10-26 | 1996-05-09 | The Boeing Company | Method for controlling the level of detail displayed in a computer generated screen display of a complex structure |
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 |
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 |
US5818468A (en) * | 1996-06-04 | 1998-10-06 | Sigma Designs, Inc. | Decoding video signals at high speed using a memory buffer |
US6128726A (en) * | 1996-06-04 | 2000-10-03 | Sigma Designs, Inc. | Accurate high speed digital signal processor |
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 |
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 |
US6230235B1 (en) | 1996-08-08 | 2001-05-08 | Apache Systems, Inc. | Address lookup DRAM aging |
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 |
US6184902B1 (en) | 1997-04-30 | 2001-02-06 | Hewlett-Packard Company | Centralized branch intelligence system and method for a geometry accelerator |
US5930519A (en) * | 1997-04-30 | 1999-07-27 | Hewlett Packard Company | Distributed branch logic 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 |
CA2388710A1 (en) * | 1999-10-18 | 2001-04-26 | Bernd Froehlich | Method for the real-time rendering of large volume data amounts |
US6452600B1 (en) | 1999-10-28 | 2002-09-17 | Nintendo Co., Ltd. | Graphics system interface |
US6411301B1 (en) | 1999-10-28 | 2002-06-25 | Nintendo Co., Ltd. | Graphics system interface |
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 |
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 |
US6857061B1 (en) | 2000-04-07 | 2005-02-15 | Nintendo Co., Ltd. | Method and apparatus for obtaining a scalar value directly from a vector register |
US6859862B1 (en) | 2000-04-07 | 2005-02-22 | Nintendo Co., Ltd. | Method and apparatus for software management of on-chip cache |
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 |
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 |
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 |
US7127525B2 (en) * | 2000-05-26 | 2006-10-24 | Citrix Systems, Inc. | Reducing the amount of graphical line data transmitted via a low bandwidth transport protocol mechanism |
US7119813B1 (en) | 2000-06-02 | 2006-10-10 | Nintendo Co., Ltd. | Variable bit field encoding |
US7134960B1 (en) * | 2000-08-23 | 2006-11-14 | Nintendo Co., Ltd. | External interfaces for a 3D graphics system |
US6700586B1 (en) | 2000-08-23 | 2004-03-02 | Nintendo Co., Ltd. | Low cost graphics with stitching processing hardware support for skeletal animation |
US7538772B1 (en) | 2000-08-23 | 2009-05-26 | Nintendo Co., Ltd. | Graphics processing system with enhanced memory controller |
US6664958B1 (en) | 2000-08-23 | 2003-12-16 | Nintendo Co., Ltd. | Z-texturing |
US7196710B1 (en) | 2000-08-23 | 2007-03-27 | Nintendo Co., Ltd. | Method and apparatus for buffering graphics data in a graphics system |
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 |
US6609977B1 (en) | 2000-08-23 | 2003-08-26 | 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 |
US7034828B1 (en) | 2000-08-23 | 2006-04-25 | Nintendo Co., Ltd. | Recirculating shade tree blender for a graphics system |
US6639595B1 (en) | 2000-08-23 | 2003-10-28 | Nintendo Co., Ltd. | Achromatic lighting in a graphics system and method |
US6811489B1 (en) | 2000-08-23 | 2004-11-02 | Nintendo Co., Ltd. | Controller interface for a graphics 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 |
US6825851B1 (en) | 2000-08-23 | 2004-11-30 | Nintendo Co., Ltd. | Method and apparatus for environment-mapped bump-mapping 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 |
US6664962B1 (en) | 2000-08-23 | 2003-12-16 | Nintendo Co., Ltd. | Shadow mapping in a low cost graphics system |
US6580430B1 (en) | 2000-08-23 | 2003-06-17 | Nintendo Co., Ltd. | Method and apparatus for providing improved fog effects in a graphics system |
US6606689B1 (en) | 2000-08-23 | 2003-08-12 | Nintendo Co., Ltd. | Method and apparatus for pre-caching data in audio memory |
US6707458B1 (en) | 2000-08-23 | 2004-03-16 | Nintendo Co., Ltd. | Method and apparatus for texture tiling in a graphics system |
US6867781B1 (en) | 2000-08-23 | 2005-03-15 | Nintendo Co., Ltd. | Graphics pipeline token synchronization |
US6999100B1 (en) | 2000-08-23 | 2006-02-14 | Nintendo Co., Ltd. | Method and apparatus for anti-aliasing in a graphics system |
US6937245B1 (en) | 2000-08-23 | 2005-08-30 | Nintendo Co., Ltd. | Graphics system with embedded frame buffer having reconfigurable pixel formats |
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 |
US7725036B2 (en) * | 2002-02-12 | 2010-05-25 | Finisar Corporation | Efficient transmission of digital return path data in cable television return path |
US7751718B2 (en) * | 2002-02-12 | 2010-07-06 | 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 |
US7376695B2 (en) | 2002-03-14 | 2008-05-20 | Citrix Systems, Inc. | Method and system for generating a graphical display for a remote terminal session |
US8671213B2 (en) | 2002-03-14 | 2014-03-11 | Citrix Systems, Inc. | Methods and apparatus for generating graphical and media displays at a client |
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 | 住所データベースおよびこれを用いた住所検索システム |
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 |
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 |
US8736628B1 (en) | 2004-05-14 | 2014-05-27 | Nvidia Corporation | Single thread graphics processing system and method |
US8687010B1 (en) | 2004-05-14 | 2014-04-01 | Nvidia Corporation | Arbitrary size texture palettes for use in graphics systems |
US7280112B1 (en) * | 2004-05-14 | 2007-10-09 | Nvidia Corporation | Arithmetic logic unit temporary registers |
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 |
US8736620B2 (en) * | 2004-05-14 | 2014-05-27 | Nvidia Corporation | Kill bit graphics processing system and method |
US8743142B1 (en) | 2004-05-14 | 2014-06-03 | Nvidia Corporation | Unified data fetch graphics processing system and method |
US8171169B2 (en) | 2005-03-14 | 2012-05-01 | Citrix Systems, Inc. | Method and apparatus for updating a graphical display in a distributed processing environment |
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 |
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 |
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 |
US8314803B2 (en) * | 2007-08-15 | 2012-11-20 | Nvidia Corporation | Buffering deserialized pixel data in a graphics processor unit pipeline |
US8736624B1 (en) | 2007-08-15 | 2014-05-27 | Nvidia Corporation | Conditional execution flag in graphics applications |
US8599208B2 (en) * | 2007-08-15 | 2013-12-03 | Nvidia Corporation | Shared readable and writeable global values in a graphics processor unit pipeline |
US20090046105A1 (en) * | 2007-08-15 | 2009-02-19 | Bergland Tyson J | Conditional execute bit in a graphics processor unit pipeline |
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 |
US20240112397A1 (en) * | 2022-09-30 | 2024-04-04 | Advanced Micro Devices, Inc. | Spatial test of bounding volumes for rasterization |
Citations (1)
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)
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 |
-
1986
- 1986-03-07 US US06/838,300 patent/US4862392A/en not_active Expired - Fee Related
-
1987
- 1987-02-27 FR FR8702636A patent/FR2595486A1/fr not_active Withdrawn
- 1987-02-27 GB GB8704601A patent/GB2187615B/en not_active Expired - Fee Related
- 1987-02-28 DE DE19873706509 patent/DE3706509A1/de not_active Withdrawn
- 1987-03-03 JP JP62046956A patent/JPS62212785A/ja active Pending
Patent Citations (1)
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)
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 |
---|---|
GB8704601D0 (en) | 1987-04-01 |
GB2187615A (en) | 1987-09-09 |
FR2595486A1 (fr) | 1987-09-11 |
JPS62212785A (ja) | 1987-09-18 |
GB2187615B (en) | 1990-04-04 |
US4862392A (en) | 1989-08-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3706509A1 (de) | Elektronische geometrieprozessorschaltung fuer ein graphikanzeigesystem | |
DE102019103059B4 (de) | Hieb- und stichfester Strahl-Dreieck-Schnittpunkt | |
DE3689654T2 (de) | Rechnergraphik, prozessor für parallele subdivision. | |
DE69832611T2 (de) | Computergrafiksystem | |
DE102019102821A1 (de) | Verfahren zur behandlung von ungeordneten opak- und alphastrahl/primitiv-schnittpunkten | |
DE3853336T2 (de) | Rechnergraphikgerät zur Verarbeitung von Beleuchtungsmodellinformation. | |
DE3750803T2 (de) | Schattierungsschaltung zur Schattierung mehrerer Polygone, die ein Festkörpermodel einsetzen, und Schattierungsverfahren dafür. | |
DE102019101873A1 (de) | Abfragespezifische Verhaltensmodifizierung von Baumtraversierung | |
US7728848B2 (en) | Tools for 3D mesh and texture manipulation | |
DE68927781T2 (de) | Geometrisches Modellierungsverfahren und -gerät | |
DE69127915T2 (de) | System und Verfahren von Prioritätsfarbabbildung | |
DE102019103178A1 (de) | Verfahren für vorankommen und programmierbare timeouts von baumtraversierungsmechanismen in hardware | |
DE69632578T2 (de) | Computer-grafiksystem zum schaffen und verbessern von texturabbildungssystemen | |
DE69725057T2 (de) | Gleitkommaprozessor für einen dreidimensionalen graphischen Beschleuniger | |
DE102018121282A1 (de) | Differenzierbare rendering-pipeline für inverse graphik | |
DE3708023A1 (de) | Verbesserter graphikprozessor und insbesondere dafuer vorgesehener durchlaufprozessor | |
DE112005000804T5 (de) | Multi-Label-Bildsegmentierung mit GPU | |
GB2194656A (en) | Solid modelling | |
JPS62151896A (ja) | 計算機画像発生システムに於ける縁平滑化方法 | |
DE112007002991T5 (de) | Computergraphikschattenvolumen unter Verwendung von hierarchischem Okklusions-Culling | |
DE112012002623T5 (de) | Verfahren zum Simulieren der Bearbeitung von Objekten durch Bewegung eines Werkzeugs, und System und Computerprogrammprodukt für dieses | |
DE102019102009A1 (de) | Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing | |
DE102021115407A1 (de) | Hardwarebeschleunigung zur strahlverfolgung von primitiven, die vertices teilen | |
DE112022004426T5 (de) | Verschobene Mikronetze für Ray- und Pathtracing | |
DE102019101871A1 (de) | Verfahren und Vorrichtung zum Gewinnen von Abtastpositionen von Textuieroperationen |
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 |