DE3705124A1 - Anzeigeprozessor und videoverarbeitungsuntersystem fuer computergraphik - Google Patents
Anzeigeprozessor und videoverarbeitungsuntersystem fuer computergraphikInfo
- Publication number
- DE3705124A1 DE3705124A1 DE19873705124 DE3705124A DE3705124A1 DE 3705124 A1 DE3705124 A1 DE 3705124A1 DE 19873705124 DE19873705124 DE 19873705124 DE 3705124 A DE3705124 A DE 3705124A DE 3705124 A1 DE3705124 A1 DE 3705124A1
- Authority
- DE
- Germany
- Prior art keywords
- data
- register
- scene
- intensity
- polygon
- 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.)
- Ceased
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
- G06T15/405—Hidden part removal using Z-buffer
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/20—Drawing from basic elements, e.g. lines or circles
- G06T11/203—Drawing of straight lines or curves
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Geometry (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
- Digital Computer Display Output (AREA)
Description
Die Synthese von sichtbaren Szenen durch die Verwendung
von Computern (Computergraphik) ist ein wachsender Bereich
der Computerwissenschaft. Es gibt zahllose Verwendungszwecke
für Computergraphik, beispielsweise computerunterstützte
Entwicklung (CAD), die Synthese von Demonstrationskarten,
die Erzeugung von Titeln und anderen graphischen
Anzeigen für den Fernsehgebrauch und die Simulation
von physikalischen Ereignissen.
Zum Erleichtern der Erzeugung einer ein Objekt oder Objekte
enthaltenden Szene durch Computer besteht normalerweise
der erste Schritt darin, dreidimensionale Beschreibungen
der anzuzeigenden Objekte herzustellen und in mathematischer
Form in einer Datenbasis zu speichern. Die Daten werden
dann verarbeitet und manipuliert, so daß die Szene auf
einem Bildschirm angezeigt werden kann.
Die Verarbeitung der Information aus der Datenbasis kann so
aufgefaßt werden, daß sie fünf Grundfunktionen beinhaltet:
- 1. Zerlegen der Objekte (mathematisch) in kleine Abschnitte, die bequem gehandhabt werden können. Diese Abschnitte sind üblicherweise ebene Polygone, von denen jedes einen Teil der Oberfläche eines anzuzeigenden Objekts darstellt.
- 2. Entnehmen von Daten, die einem Abschnitt eines Objekts entsprechen, aus der Datenbasis;
- 3. Umformen der dreidimensionalen Beschreibung in eine zweidimensionale Beschreibung in "Bildschirm"-Koordinaten;
- 4. Wählen der Bildelemente eines Bildschirms, die aktiviert werden müssen, um den Abschnitt anzuzeigen, und Festlegen von deren Farbe und Intensität; und
- 5. Feststellen, welche Bereiche des Abschnitts in der Szene sichtbar sind, und Anzeigen dieser Bereiche.
Die Wiederholung dieses Verfahrens für sämtliche Abschnitte
von sämtlichen Objekten in der Szene wird eine Anzeige ergeben,
die die gewünschte Szene darstellt.
Die Erfindung befaßt sich mit den beiden letztgenannten Verfahren.
Darüber hinaus befaßt sich die Erfindung mit dem
Zeichnen von Vektoren oder Strecken auf einem Bildschirm,
der andere Objekte anzeigen kann oder auch nicht anzeigen
kann.
Bekannte Anzeigeprozessoren sind in der Geschwindigkeit,
mit der Daten verarbeitet und angezeigt werden, beschränkt.
Die Beschränkung ist in gewissem Maße auf die Tendenz im
Stand der Technik zurückzuführen, Mehrzweckcomputer zu benutzen,
die durch Software gesteuert werden, welche die
Algorithmen zum Ausführen der erforderlichen Operationen
enthält. Das erfordert notwendigerweise, daß die Berechnungen
seriell ausgeführt werden, so daß das Endergebnis nicht
so schnell wie gewünscht erzielt werden kann.
Es ist demgemäß Aufgabe der Erfindung, einen verbesserten
Anzeigeprozessor für ein Graphikverarbeitungssystem zu
schaffen, der gegenüber dem Stand der Technik eine erheblich
verbesserte Verarbeitungsgeschwindigkeit aufweist.
In dem Anzeigeprozessor nach der Erfindung sind zweckorientierte
Hardware und Pipeline-Architektur vorgesehen,
so daß viele der benötigten Berechnungen parallel ausgeführt
werden, was zu einer beträchtlichen Steigerung der
Arbeitsgeschwindigkeit führt. Darüber hinaus werden besondere
wirksame Algorithmen benutzt, wodurch die Geschwindigkeit
weiter verbessert wird.
Bei der Erfindung wird eine Rasterabtastanzeige benutzt, im
Gegensatz zu einer Anzeige mit beliebiger Abtastung oder mit
Punktaufzeichnung. Die Erfindung ist zur Verwendung in Verbindung
mit einer externen Datenbasis und einem Geometrieprozessor
vorgesehen, die Daten in Form von Datenpaketen
liefern, von denen jedes ein ebenes Polygon oder eine Strecke
in einem dreidimensionalen Koordinatensystem beschreibt.
Der Ursprung des Koordinatensystems ist in der gegenwärtig
bevorzugten Ausführungsform des Systems die obere linke
Ecke des Schirms, bei Bedarf könnten aber auch andere Stellen
benutzt werden. Ganzzahlige Werte von X beziehen sich
auf Bildelementpositionen rechts vom Ursprung, und ganzzahlige
Werte von Y beziehen sich auf Rasterliniennummern
unterhalb vom oberen Rand. Tiefenwerte Z beziehen sich auf
den relativen Abstand hinter dem Schirm.
Wie auf dem Gebiet der Computergraphik üblich wird jedes
in der Szene anzuzeigende Objekt in eine Serie von kleinen,
nicht notwendigerweise regelmäßigen, ebenen Polygonen zerlegt.
Im Falle von komplexen Objekten, wie beispielsweise
einem menschlichen Gesicht, werden die Polygone klein genug
gemacht und ihnen werden eine derartige Form und Farbe gegeben,
daß sie gemeinsam eine zufriedenstellende Darstellung
des gewünschten Objekts ergeben. Einfachere Objekte,
wie beispielsweise ebene Oberflächen mit ebener Beleuchtung,
können durch größere Polygone zufriedenstellend dargestellt
werden. Der Anzeigeprozessor nach der Erfindung ist zum
Wiedergeben von Darstellungen sowohl von komplexen als auch
von einfachen Objekten vorgesehen.
Es gib zwei grundlegende Betriebsarten des Anzeigeprozessors.
In einer Betriebsart (als "Polygonausfüllung" bezeichnet)
werden Polygone auf dem Bildschirm wiedergegeben,
die so positioniert sind, daß die Wirkung von sämtlichen
Polygonen gemeinsam eine Darstellung der gewünschten Objekte
oder Szene ist. In dieser Betriebsart wird jedes Polygon
auf dem Schirm als ein Farbbereich wiedergegeben, der
durch keinen kontrastierenden Umriß begrenzt ist. Jedes
Polygon ist durch eine gleichmäßige Farbe in seinem Bereich
gekennzeichnet, deren Intensität sich je nach der gewünschten
Schattierung ändern kann. Die Schattierung wird durch
Intensitätsgradienteninformation gesteuert, welche durch
einen externen Geometrieprozessor geliefert wird. Die Schattierung
eines Polygons kann eben (gleichmäßig) sein oder
kann sich über der Oberfläche des Polygons entweder in der
X-Richtung oder in der Y-Richtung oder in beiden Richtungen
linear verändern.
In einer gegenwärtig bevorzugten Ausführungsform der Erfindung
werden Farb- und Intensitätsinformation für jedes
Bildelement auf dem Schirm in einer einzelnen 12-Bit-Binärzahl
verknüpft, die in einem Bildpuffer gespeichert wird.
Die höherwertigen Bits werden benutzt, um Farbe zu bezeichnen,
und die niederwertigen Bits werden benutzt, um die
Intensität zu bezeichnen. Der Benutzer kann frei bestimmen,
wieviel von dem Wort benutzt wird, um Farbe zu bezeichnen,
und wieviel benutzt wird, um die Intensität zu bezeichnen.
Zum Bilden des kombinierten Wortes werden die Ergebnisse
von Intensitätsberechnungen um die Zahl von Bits "rechtsverschoben",
die notwendig ist, um sie in die gewünschte
Position in dem Wort zu bringen, und dann wird der verschobene
Intensitätswert zu der die Farbe bezeichnenden
Binärzahl, in der die die Farbe bezeichnenden Bits die
höchstwertigen Positionen einnehmen, addiert.
In der Polygonausfüllbetriebsart benutzt der Anzeigeprozessor
Daten, die jede Seite eines Polygons festlegen, um
"Spannen" zu erzeugen, die Farb- und Intensitätsinformation
enthalten, wobei jede "Spanne" Information enthält, die
sich auf eine anzuzeigende Rasterzeile bezieht. Nach dem
Vergleichen der Tiefenlage des Polygons an jeder Bildelementadresse
mit der Tiefe von früher verarbeiteten Polygonen
(durch die Verwendung eines Z- oder Tiefenpuffers),
wird die Farb- und Intensitätsinformation in den Bildpuffer
an der Bildelementadresse nur eingegeben, wenn der Vergleich
zeigt, daß das neue Polygon näher bei dem Schirm an
diesem Bildelementplatz als irgendeines der früher verarbeiteten
Polygone ist. Auf diese Weise werden verborgene
Oberflächen von Polygonen beseitigt und nicht angezeigt.
Die Polygone, die in der Polygonausfüllbetriebsart benutzt
werden, sind nicht notwendigerweise vollflächig, sondern
können innere Öffnungen haben. Gemäß der Erfindung brauchen
Polygone, die solche Öffnungen oder Ausschnitte haben,
nicht speziell verarbeitet zu werden, sondern können auf
dieselbe Weise wie normale Polygone gehandhabt werden. Es
wird mehr als eine Spanne für jede Rasterlinie erzeugt, die
eine Polygonöffnung schneidet, wobei aber der Systembetrieb
derselbe bleibt.
In der zweiten Betriebsart, dem sogenannten "Vektorzeichnen",
können gerade Strecken auf dem Schirm an gewünschten Stellen
gezeichnet werden. Die Betriebsart Vektorzeichnen wird
auch zur "Seitenbetonung" benutzt, d. h. zum Begrenzen eines
Polygons (oder einer Gruppe von Polygonen) mit einer Linie,
deren Farbe von der des Polygons selbst verschieden ist.
Bei der Betriebsart Vektorzeichnen wird Information benutzt,
welche die Koordinaten jeder Ecke und die Liniensteigung
(in den XY-, XZ- und YZ-Ebenen) festgelegt, um sequentiell
die Bildelemente zu adressieren, die zum Zeichnen der
Linie aktiviert werden müssen.
Vorkehrungen sind getroffen zum Zeichnen von Vektoren, die
ein gestricheltes Aussehen haben. Das Wiederholen einer
"Schrift" ("font"), die irgendein gewünschtes Muster von
EIN- und AUS-Bildelementen erzeugt, kann bis zu 64 Bildelemente
umfassen. Das erfolgt durch die Verwendung eines besonderen
Schieberegisters mit einer kontinuierlich umlaufenden
Kombination von Einsen und Nullen, die dem gewünschten
Muster entspricht. Ein Ausgangssignal des Schieberegisters
blockiert das Einschreiben in den Bildpuffer, wenn das Registerausgangssignal
in dem "Eins"-Zustand ist. Das Schriftmerkmal
kann in Verbindung mit der Polygonausfüllbetriebsart
benutzt werden, um den Effekt einer texturierten Oberfläche
zu erzeugen.
Ausführungsbeispiele der Erfindung werden im folgenden unter
Bezugnahme auf die Zeichnungen näher beschrieben. Es zeigen
Fig. 1 ein vereinfachtes Blockschaltbild eines vollständigen
Graphikverarbeitungssystems,
Fig. 2 ein Blockschaltbild des Anzeigeprozessors
nach der Erfindung,
Fig. 3A und 3B gemeinsam ein Blockschaltbild des Videoverarbeitungsuntersystems
nach der Erfindung,
Fig. 4 ein Beispiel eines Polygons, das bei der Erläuterung
der Arbeitsweise der Erfindung in
der Polygonausfüllbetriebsart benutzt wird,
Fig. 5 ein Beispiel einer Strecke, die bei der Erläuterung
der Arbeitsweise der Erfindung in
der Betriebsart "Vektorzeichnen" benutzt
wird, und
Fig. 6 ein Blockschaltbild des Schriftmusterregisters
und des Schriftlängenzählers nach der
Erfindung.
Fig. 1 zeigt ein verallgemeinertes Blockschaltbild eines
vollständigen Graphikverarbeitungssystems, das in Verbindung
mit dem Anzeigeprozessor nach der Erfindung benutzt
werden kann, wobei die Hauptuntersysteme und deren gegenseitige
Verbindungen dargestellt sind. Information, die jedes
Objekt oder jede Oberfläche innerhalb der anzeigenden
Szene beschreibt, wird in das System über eine Benutzerschnittstelle
10 eingegeben, die beispielsweise einen
Steuerknüppel, eine Maus, ein Graphiktablett, einen Wählkasten,
eine Steuerkugel oder eine alphanumerische Tastatur
umfassen kann.
Zum Synthetisieren einer Szene wird die Oberfläche jedes
Objekts in der Szene als eine Serie von ebenen Polygonen
organisiert, die gemeinsam eine enge Annäherung des Objekts
oder der Objekte sind, die angezeigt werden sollen. Daten,
die diese Polygone festlegen, sind in einer Datenbasis 11
gespeichert. Wenn die Szene angezeigt werden soll, werden
Datenpakete, von denen jedes ein Polygon beschreibt, eines
nach dem anderen in einen Geometrieprozessor 13 über einen
VME-Datenbus 12 überführt. Während der Geometrieprozessor
13 an einem Datenpaket Berechnungen ausführt, bereitet die
Datenbasis 11 die Überführung des nächsten Datenpaketes vor.
Für jedes anzuzeigende Polygon liefert der Geometrieprozessor
13 Daten zu dem Anzeigeprozessor 20 in Rasterkoordinaten,
die jede Kante des Polygons festlegen und gewisse Daten
beinhalten, die sich auf das Polygon als ganzes beziehen.
Diese Daten werden ebenfalls über den VME-Datenbus 12
übertragen. Der Anzeigeprozessor 20 wandelt die empfangenen
Ecken- und Polygondaten in Daten um, die die Farbe, die Intensität
und die relative Tiefe jedes Bildelements in dem
aktiven Raster angeben, speichert die Daten in Bild- und
Z-Puffern 22 bzw. 23 und bewirkt schließlich eine Anzeige
einer sichtbaren Wiedergabe der Szene auf einer Katodenstrahlröhre
21.
Der Bildpuffer 22 und der Z-Puffer 23 sind herkömmliche
Vorrichtungen, die auf dem Gebiet der Computergraphik benutzt
werden. In der gegenwärtig bevorzugten Ausführungsform
der Erfindung umfaßt der Bildpuffer ein beliebig
adressierbares Speicheruntersystem mit 1280 × 1024 Adressen,
wobei jede Adresse 12 Bits speichert. Der Z-Puffer hat dieselbe
Untersystemgröße, nimmt aber 16 Bits auf.
Es gibt zwei grundlegende Betriebsarten für das Verarbeiten
von Daten in dem Anzeigeprozessor, was im folgenden beschrieben
wird. Diese Betriebsarten sind das Wiedergeben
von Polygonen in Farbe oder "Polygonausfüllen" und das
Zeichnen von Wegstrecken oder "Vektorzeichnen". Darüber hinaus
ermöglicht eine "Bypass"-Betriebsart, Initialisierungsbefehle
zu dem Bildpuffer 22 und dem Z-Puffer 23 zu leiten, um
die X- und Y-Adressen zu setzen, die als Startadressen für
die Betriebsarten benutzt werden sollen.
Zu Erläuterungszwecken werden im folgenden das Koordinatensystem
und die Darstellung in Fig. 4 benutzt. Fig. 4 zeigt
zu Erläuterungszwecken ein ebenes Polygon 42, 43, 44, 45,
das einem Koordinatengitter überlagert ist. Ein dreieckiges
Loch 46, 47, 48 befindet sich im Inneren des Polygons.
Das gezeigte Polygon kann eine vollständige Oberfläche an
sich oder ein kleiner Abschnitt einer anzuzeigenden komplexen
Oberfläche sein. Der Anzeigeprozessor behandelt beide
Fälle identisch.
Ein XY-Koordinatensytem, dessen Ursprung sich in der oberen
linken Ecke des Bildschirms befindet, wird benutzt. Die
Rasterlinien sind nach unten hin nacheinander beziffert,
und die Bildelementpositionen sind rechts von dem Ursprung
nacheinander beziffert. Eine Bildelementstelle ist durch
die Koordinaten der oberen linke Ecke des Quadrats festgelegt,
welches das Bildelement enthält. Daher befindet sich
das Bildelement, das durch die Schraffur bei 41 dargestellt
ist, bei 7,3.
Jede Bildelementadresse (z. B. X t , Y t ) besteht aus einer
ganzen Zahl, die durch die höchstwertigen Bits eines 12-Bit-Binärwortes
dargestellt wird. Der genaue Wert von X in dem
Schnittpunkt einer Seite mit einer Rasterlinie ist jedoch
üblicherweise eine ganze Zahl, was durch den Punkt X u in
Fig. 4 veranschaulicht ist. In einigen Fällen wird der
ganzzahlige Wert einer Größe, wie beispielsweise X u , statt
ihres genauen Wertes bei den Berechnungen benutzt, und in
diesen Fällen wird eine Unterstreichung benutzt (z. B. X u ),
um den ganzzahligen Wert zu bezeichnen. Der ganzzahlige
Wert kann erhalten werden, indem einfach das Binärwort für
den genauen Wert auf die Zahl von Bits gekürzt wird, die
ganze Zahlen darstellen.
Die Seite 42 des Polygons 42, 43, 44 und 45 endigt in zwei
Ecken 40 und 49. Ein Satz von Koordinaten X t , Y t und Z t ist
durch das Bildelement festgelegt, in welchem sich die obere
Ecke 40 befindet, wobei Z t den Abstand des Punkts X t , Y t
hinter dem Schirm darstellt. Ein als X u bezeichneter Wert
wird ebenfalls definiert als der Wert von X (mit höher Präzision)
in dem Schnittpunkt der Seite mit der ersten Rasterlinie,
die sie schneidet, d. h. die Rasterlinie Y t + 1,
bezeichnet mit Y u .
Ebenso kann gezeigt werden, daß X d die genaue X-Koordinate
des Schnittpunkts der Seite 42 mit der Rasterlinie unmittelbar
oberhalb der Ecke 49 ist. X b , Y b und Z b sind die Koordinaten
des Bildelements, das die Ecke 49 enthält. Die Steigungen
der Seite in bezug auf die drei Achsen werden durch
die Funktionen dX/dY, dZ/dX und dZ/dY bezeichnet.
Eine weitere Variable, die an der Anzeige beteiligt ist, ist
die Intensität, die mit dem Buchstaben S bezeichnet wird. In
Abhängigkeit von der gewünschten Schattierung des Polygons
kann sich S in bezug auf irgendeine oder sämtliche Achsen
verändern, was durch die Funktionen dS/dX, dS/dY und dS/dZ
dargestellt wird.
In einer gegenwärtig bevorzugten Ausführungsform der Erfindung
werden die Intensitätsberechnungen mit einer 27-Bit-
Präzision ausgeführt, damit Abrundungsfehler die Anzeige
nicht nachteilig beeinflussen. Diese Präzision ist jedoch
für Anzeigezwecke viel höher als notwendig, und weniger
Bits werden benutzt, um die Bildelementintensität der Katodenstrahlröhre
einzustellen. Die Farb- und Intensitätsinformation
für jedes Bildelement sind beide in einem einzelnen
12-Bit-Wort enthalten, das während der Verarbeitung gebildet
und in dem Bildpuffer 22 an der Bildelementadresse
gespeichert wird. Die Farbe wird durch die höchstwertigen Bits
(MSB) angegeben, wobei der Benutzer die Zahl der Bits wählt,
die benötigt werden, um die Zahl von gewünschten Farben anzugeben.
Die Intensität wird durch die niedrigstwertigen Bits
(LSB) angegeben. Zum Erzeugen eines 12-Bit-Wortes, das beide
Arten von Informationen enthält, wird zuerst ein 12-Bit-Farbwort
erzeugt (durch den Geometrieprozessor), wobei die
Farbinformation die vom Benutzer zugeordnete Anzahl an
höchstwertigen Bits einnimmt, während die übrigen Bits
Nullen sind. Das 27-Bit-Intensitätswort wird auf 12 Bits
gekürzt und zugeschnitten und dann um die Anzahl der Bits,
die zum Vermeiden der Farbbits notwendig ist, nach rechts
verschoben. Das Farbwort und das Intensitätswort werden dann
addiert, um ein Verbundwort zu erhalten, das beide Größen
enthält. Eine Begrenzungsschaltung 98 ist vorgesehen, um zu
verhindern, daß das Intensitätswort in den Farbbitbereich
des Wortes überläuft.
Ein vereinfachtes Blockschaltbild einer gegenwärtig bevorzugten
Ausführungsform des Anzeigeprozessors 20 nach der
Erfindung zeigt Fig. 2, in welcher die Hauptblöcke des Prozessors
dargestellt und die vorherrschenden Daten- und Befehlswege
gezeigt sind. Der Prozessor steht unter der direkten
Steuerung eines Mikrosteuerwerks 26, das Befehle über
den VME-Datenbus 12 aus dem Geometrieprozessor 13, der
Benutzerschnittstelle 10 oder anderen Teilen des Systems empfängt.
In dem Mikrosteuerwert 26 befinden sich ein schreibbarer Steuerspeicher (ein wahlfrei adressierbares Speicheruntersystem),
das in dem gegenwärtig bevorzugten System 8 K
Wörter × 60 Bits aufnehmen kann. Nach der Initialisierung
wird das Mikroprogramm zum Steuern des Anzeigeprozessors
20 über den VME-Datenbus 12 in den schreibbaren Steuerspeicherteil
des Mikrosteuerwerks 26 geladen. Im Betrieb erzeugt
das Mikrosteuerwerk 26 eine Sequenz von Adressen, und
Programmbefehle werden an diese Adressen durch den schreibbaren
Steuerspeicher abgegeben. Befehle an einen Mikroprozessor
27 werden über einen Bus 39 geleitet, und Befehle
an eine Videoverarbeitungseinrichtung 30 werden über einen
Bus 34 geleitet. Bezugnahmen in der Beschreibung auf das
Mikrosteuerwerk 26 sollen sich sowohl auf das Mikrosteuerwerk
als auch auf den schreibbaren Steuerspeicher beziehen.
Wie oben erwähnt empfängt der Anzeigeprozessor 20 Daten
aus dem Geometrieprozessor 13 und manipuliert sie, so daß
sich die gewünschte Anzeige ergibt. Daten, die aus dem
Geometrieprozessor 13 ankommen, werden in einen von zwei
identischen Eingangsspeichern 24, 25 eingegeben. Die Eingangsspeicher
24, 25 bestehen jeweils aus Bustorsteuerung,
Eingangs- und Ausgangsregistern, einem Adreßzähler/Register
und einem Speicheruntersystem mit wahlfreiem Zugriff.
Zu irgendeiner gegebenen Zeit wird einer dieser Speicher
mit dem VME-Datenbus 12 und der andere mit den Y- und D-
Bussen des Anzeigeprozessors 20 verbunden. Daher kann ein
Speicher Eingangsdaten über die externe Schnittstelle empfangen,
während mit früher empfangenen Daten, die in dem
anderen Speicher gespeichert sind, gearbeitet wird. Befehle
aus dem schreibbaren Steuerspeicher 26 steuern die Eingangsspeicherfunktionswahl.
Das Adressieren der Speicher kann entweder sequentiell oder
wahlfrei unter Mikroprogrammsteuerung erfolgen. Wenn eine
Leseoperation ausgeführt wird, werden die Daten in das Ausgangsregister
des Speichers geladen und zur geeigneten Zeit
dem D-Bus zugeführt. Für Schreiboperationen werden Daten
von dem Y-Bus in das Speichereingangsregister und dann in
das Speicheruntersystem selbst unter Mikroprogrammsteuerung
geladen. Während der Verarbeitung eines Blocks von Eingangsdaten
kann der Eingangsspeicher benutzt werden, um unmittelbare
Ergebnisse zu speichern.
Die arithmetischen Verarbeitungselemente und Datenpuffer
(Mikroprozessor 27, Multiplizierer 28 und zugeordnete Register)
führen 16-Bit-parallele arithmetische und logische
Operationen aus. Die arithmetischen Operationen bestehen
aus Addition, Subtraktion, Multiplikation, Division, Inkrementieren,
Dekrementieren, Summieren, Einzel- und Mehrfachverschiebungen
und Vergleichen. Alle üblichen logischen
Funktionen können ausgeführt werden, einschließlich und,
oder, exklusiv-oder, logischen Inversionen und anderen.
Die Multiplikation wird in dem Hochgeschwindigkeitsmultiplizierer
28 ausgeführt, der zwei 16-Bit-Operanden von dem Y-Bus
empfängt und ein 32-Bit-Produkt auf dem D-Bus (in zwei
Zyklen) abgibt. Durch Hindurchleiten eines der Operanden
durch eine Kehrwerttabelle, die zu Erläuterungszwecken als
innerhalb des Multiplizierers 28 befindlich angesehen werden
kann, erfolgt die Division.
Sämtliche arithmetischen Operationen mit Ausnahme der Multiplikation
und der Division und sämtliche logischen Operationen
werden in dem mikroprogrammierbaren Mikroprozessor
27 ausgeführt, der in einer gegenwärtig bevorzugten Ausführungsform
aus einer voll-16-Bit-parallelen Arithmetisch-logischen-
Einheit, einem 16-Bit-parallel-Verschieber, zweiunddreißig
16-Bit-Registern und zugeordneter Logik besteht.
Ausgangsdaten und/oder Zwischendaten können vorübergehend
in den Eingangsspeichern 24, 25 oder in einem Zwischenspeicher
31 gespeichert werden.
Das Ausgangssignal der Verarbeitungsfunktion wird normalerweise
in einem "64 Wort × 18 Bit"-Silo- oder FIFO-Speicher
29 eingegeben, der für eine lose Datenkopplung mit dem
Videoverarbeitungsuntersystem (VPS) 30 sorgt.
Die Information, die dem Anzeigeprozessor 20 zugeführt
wird, hängt von der gewünschten Betriebsart, Polygonausfüllen
oder Vektorzeichnen, ab. Je nach dem, welche Betriebsart
gewählt wird, wird die Information in Paketen geliefert, wobei
ein Paket in der Polygonausfüllbetriebsart ein Polygon
und in der Betriebsart Vektorzeichnen eine Strecke beschreibt.
In der Polygonausfüllbetriebsart enthält ein Paket Information,
die jede Seite des Polygon definiert, und Information,
die sich auf das Polygon als ganzes bezieht. Für jede Seite
werden folgende Daten (als "Seitenpaket" bezeichnet) geliefert:
PTR - ein Identifizierungszeiger, der Zugriff auf die
polygonbezogenen Daten gestattet;
HOR - ein Flag, das anzeigt, ob die Seite horizontal ist oder nicht;
SSF - ein Start/Stop-Flag, das anzeigt, ob das Polygoninnere links oder rechts von der Seite ist;
X t ;
Y t ;
Z t ;
X u ;
S u+;
Y b ;
dX/dY; und
dS/dY.
HOR - ein Flag, das anzeigt, ob die Seite horizontal ist oder nicht;
SSF - ein Start/Stop-Flag, das anzeigt, ob das Polygoninnere links oder rechts von der Seite ist;
X t ;
Y t ;
Z t ;
X u ;
S u+;
Y b ;
dX/dY; und
dS/dY.
Für das Polygon als ganzes wird folgendes geliefert:
Farbe der Polygonoberfläche;
dZ/dX; und
dZ/dY.
dZ/dX; und
dZ/dY.
Nachdem die obige Information für ein vollständiges Polygon
in einem der Eingangsspeicher 24, 25 empfangen worden ist, verbindet das Mikrosteuerwerk 26 diesen Speicher mit den D-
und Y-Bussen und leitet die Berechnung ein, um festzustellen,
welche Bildelemente in dem Raster aktiviert werden müssen,
um das Polygon anzuzeigen. Zu Erläuterungszwecken wird
die Arbeitsweise des Systems unter Bezugnahme auf das in
Fig. 4 zur Veranschaulichung dargestellte Polygon beschrieben.
Es sei beachtet, daß die Bildelementgröße, die in Fig. 4
gezeigt ist, im Verhältnis zu der Polygongröße sehr groß
ist, so daß die angezeigte Darstellung des Polygons nach
Fig. 4 beträchtlich verzerrt sein würde. Die Prinzipien der
Erfindung lassen sich jedoch leichter erläutern, wenn auf
relativ große Bildelemente Bezug genommen wird.
Allgemein gesagt, der Mikroprozessor 27 und der Multiplizierer
28 sowie die ihnen zugeordneten Komponenten nehmen die
Seiten- und Polygondaten, die in die Eingangsspeicher 24,
25 eingegeben worden sind, und liefern für jede aktive Rasterlinie
des Polygons Daten zu dem Videoverarbeitungsuntersystem
(VPS) 30, die die Start- und Stopbildelemente auf der
Linie und die Z- und S-Werte für die Startbildelemente bezeichnen.
VPS 30 nimmt diese Daten zusammen mit Gradientendaten,
die ihm zugeführt werden, und berechnet die Intensitäts-
und Z-Werte für jedes Bildelement zwischen den Start-
und Stopbildelementen. Die Z-Werte werden zum Beseitigen
von verborgener Oberfläche benutzt und in dem Z-Puffer 23
gespeichert, wogegen die Intensitätswerte für die Oberflächen,
die nicht verborgen sind, in dem Bildpuffer 22 zur
späteren Anzeige durch die Katodenstrahlröhre 21 gespeichert
werden.
Wenn die Berechnung eingeleitet wird, wird eine Liste von
Eingangsspeicheradressen (als "geordnete Y t -Liste" bezeichnet)
gebildet und in dem Zwischenspeicher 31 abgespeichert.
Die Adressen in der Liste beziehen sich auf Plätze in dem
aktiven Eingangsspeicher (24 und 25), die die Seitenpaketdaten
enthalten, welche sich auf die betreffenden Seiten
des Polygons beziehen, das verarbeitet wird. Die Liste wird
in der Reihenfolge der Rasterlinie aufrechterhalten, die
die obere Spitze jeder Seite, d. h. Y t , enthält. Eine bestimmte
Eingabe in der geordneten Y t -Liste kann die Adressen von
mehrals einem Satz Seitenpaketdaten beinhalten. Die geordnete
Y t -Liste für das einfache Polygon, das in Fig. 4 gezeigt
ist, würde Adressen zum Festlegen der Seitenpaketdaten
in folgender Reihenfolge enthalten:
Eingabe Nr.Seitenpaketadresse
142, 43
246, 47
344
445
Es ist zu erkennen, daß die Seite 48 in der obigen Liste
nicht erscheint. Der Grund dafür ist, daß die Seite 48 eine
horizontale Seite ist und daher nicht irgendwelche inneren
Bildelemente begrenzt. Das Horizontalseitenflag HOR verhindert,
daß horizontale Seiten verarbeitet werden. Die Verwendung
der geordneten Y t -Liste vergrößert die Geschwindigkeit
des Anzeigeprozessors, da sie das sequentielle Verarbeiten der
Rasterlinien gestattet, welche jede Seite schneiden,
ohne daß es notwendig ist, Rasterlinien oberhalb oder
unterhalb der Endpunkte der Seiten zu verarbeiten. Mit anderen
Worten, bei Verwendung des in Fig. 4 als Beispiel dargestellten
Polygons gestattet die geordnete Y t -Liste, das
Verarbeiten der Daten bei der Rasterlinie zu beginnen, die
der oberen Ecke des zweiten Pakets zugeordnet ist, das den
Seiten 42 und 43 zugeordnet ist, d. h. der Linie 1 und nicht
der Linie 0. Weiter unten wird sich zeigen, daß wegen der
Art und Weise, auf die die Daten verarbeitet werden, die
Rasterlinie Y t + 1, d. h. Y u (oder die Rasterlinie 2 in dem
Fall der Seiten 42 und 43), in Wirklichkeit die erste Rasterlinie
sein wird, die aktive Bildelemente hat.
Nachdem die geordnete Y t -Liste vollständig ist, geht die
Berechnung durch den Anzeigeprozessor 20 weiter, um eine
Reihe von "Spannen" zu erzeugen, die gemeinsam bewirken
werden, daß auf dem Schirm der Katodenstrahlröhre 21 ein
Polygon erscheint, daß die gewünschte Farbe hat. Eine "Spanne"
sind die Daten, die den Zustand jedes Bildelements längs
einer Rasterlinie festlegen, welche durch zwei Seiten des
Polygons begrenzt wird. Im Falle von einigen Polygonen kann
es mehr als eine Spanne auf einer Rasterlinie geben. Beispielsweise
wird in Fig. 4 die Rasterlinie 6 zwei Spannen
enthalten. Die Spannen werden eine nach der anderen erzeugt,
und zwar beginnend mit der Spanne, die die Rasterlinie mit
der niedrigsten Zahl beinhaltet, welche durch das Polygon
geschnitten wird (was durch Bezugnahme auf die geordnete
Y t -Liste bestimmt wird). Zum Erleichtern der Verarbeitung
wird eine "aktive Seitenliste" erzeugt und aufrechterhalten.
Die aktive Seitenliste enthält die Adressen der Seitenpaketdaten,
welche jeder Seite entsprechen, die die Rasterlinie
schneidet, welche gegenwärtig verarbeitet wird.
Die Erzeugung der Spannen wird in zwei Schritten beschrieben,
erstens den Berechnungen, die durch den Mikroprozessor
27 und den Multiplizierer 28 und deren zugeordnete Komponenten
ausgeführt werden, und zweitens die Operationen, die
in dem Videoverarbeitungsuntersystem 30 ausgeführt werden.
Die geordnete Y t -Liste für das als Beispiel gewählte Polygon
in Fig. 4 zeigt, daß die aktiven Seiten, die der ersten zu
verarbeitenden Rasterlinie entsprechen, die Seiten 42 und 43
sind. Die aktive Seitenliste wird dann die Seitenpaketadressen
für die Seiten 42 und 43 enthalten. Das Seitenpaket für
die Seite 42 wird ein Startflag enthalten, während das Seitenpaket
für die Seite 43 ein Stopflag enthalten wird.
In Verbindung mit der gegenwärtig bevorzugten Ausführungsform
der Erfindung ist eine willkürliche Regel benutzt worden,
die festlegt, daß ein Bildelement nicht als Teil eines
Polygons betrachtet wird, sofern nicht die Koordinaten des
Bildelements (die obere linke Ecke des Bildelementraums)
innerhalb der Grenzen des Polygons ist. Gemäß dieser Regel
ist daher das erste aktive Bildelement in dem Polygon in
Fig. 4 das Bildelement 5, 2. Die Start- und Stopbildelemente
längs einer Rasterlinie können durch folgende Gleichungen
bestimmt werden:
Für eine Startseite:
Für eine Startseite:
X 1 = X i + 1
und
für eine Stopseite:
X 2 = X i
wobei X 1 die X-Koordinate des Startbildelements der
Spanne ist,
X 2 die X-Koordinate des letzten Bildelements der Spanne ist, und
X i der ganzzahlige Wert des tatsächlichen Schnittpunkts der Seite und der Y-Koordinate der Spanne ist.
X 2 die X-Koordinate des letzten Bildelements der Spanne ist, und
X i der ganzzahlige Wert des tatsächlichen Schnittpunkts der Seite und der Y-Koordinate der Spanne ist.
Für die erste Spanne (Y = 2), X i für die Seite
42 ist X u , d. h. 4; für die Seite 43 ist X i
gleich 6.
Vor dem Ausführen der obigen Berechnungen müssen die X-Koordinaten
der Start- und Stopseiten für die Rasterlinie geordnet
und gepaart werden. In Verbindung mit der Paarbildungsberechnung
wird ein Test ausgeführt, um alle scheinbaren
Spannweiten auszuschließen, bei denen das Stopbildelement
eine niedrigere Adresse als das Startbildelement hat.
Eine solche Anomalie kann auftreten, wenn ein Teil eines
Polygons weniger als einem Bildelement gegenüberliegt oder
wenn ein Berechnungsabrundungsfehler die Seiten etwa aus
der Reihenfolge herausbringt. In jedem Fall werden diese
Daten nicht verarbeitet. Die Paarbildung und das Ordnen erfolgen
durch den Mikroprozessor 27 unter der Steuerung des
Programms in dem schreibbaren Steuerspeicher 26. Eine Konsequenz
des Ordnens der Start/Stop-Koordinaten und des Nichtverarbeitens
von Paaren, bei denen das Stopbildelement eine
niedrigere Adresse als das Starbildelement hat, besteht darin,
daß Löcher in einer Oberfläche automatisch als Löcher
erscheinen und keine spezielle Bearbeitung zum Berücksichtigen
derselben erforderlich ist.
Der Wert von Z 1 (die Z-Koordinate des ersten aktiven Bildelements)
für die erste Rasterlinie (Y u ) wird aus Z t und
den durch den Geometrieprozessor 13 gelieferten Z-Gradienten
folgendermaßen berechnet:
Z 1 = Z t + ( X u - X t )
(dZ/dX) + dZ/dY
wobei X u der ganzzahlige Wert von X u ist.
Für die Y u folgenden Rasterlinien gilt die Gleichung:
Z 1 = Z 1(prev) + ( X i -
(prev) (dZ/dX) + dZ/dY
wobei Z 1(prev) das Z 1 der vorherigen Rasterlinie
ist,
X i der ganzzahlige Wert des tatsächlichen Schnittpunkts der Seite und der Y-Koordinate auf der gegenwärtigen Rasterlinie ist und X i (prev) das X i der vorherigen Rasterlinie ist.
X i der ganzzahlige Wert des tatsächlichen Schnittpunkts der Seite und der Y-Koordinate auf der gegenwärtigen Rasterlinie ist und X i (prev) das X i der vorherigen Rasterlinie ist.
Die Daten, die durch den Geometrieprozessor 13 geliefert
werden, beinhalten S u+1, die Intensität des ersten aktiven
Bildelements der Rasterlinie Y u (d. h. X u + 1). Für die
anschließenden Rasterlinien wird folgende Gleichung benutzt:
S 1 = S 1(prev) + dS/dY
wobei S 1(prev) das S 1 der vorherigen Rasterlinie
ist.
Die Endintensität für jede Rasterlinie (S 2) wird ebenfalls
auf ähnliche Weise unter Verwendung des Startwerts S und
des Gradienten für die obere Seite der Spanne berechnet.
Der Gradient dS/dX für die Spanne wird dann berechnet:
Die zusätzliche 1 im Nenner berücksichtigt die Tatsache,
daß S 2 wie berechnet nicht wirklich in Beziehung zu dem letzten
Bildelement in der Spanne steht, sondern zu dem Bildelement
jenseits des letzten Punkts.
Es kann mehr als eine Spanne in einer gegebenen Rasterlinie
geben, beispielsweise in dem Gebiet des Polygons nach Fig. 4,
das ein Loch enthält. Jede Seite des Loches wird als
eine Polygonseite behandelt, und, wenn die Seiten gepaart
sind, wird sich zeigen, daß das Stopflag, das die Seite 46
begleitet, dem Startflag vorangeht, welches die Seite 47
begleitet. Das Gebiet der Rasterlinie zwischen den Seiten 46
und 47 wird daher nicht verarbeitet. Die obigen Berechnungen
müssen in bezug auf jedes Paar aktiver Seiten ausgeführt
werden. Bei Abschluß sämtlicher Spannenberechnungen für eine
Rasterlinie wird Y b für sämtliche aktiven Seiten mit der
laufenden Rasterlinienadresse verglichen. Wenn Y b für irgendeine
Seite erreicht worden ist, wird diese Seite nicht
länger verarbeitet. Außerdem wird auf das Seitenpaket, das
der nächsten Eintragung in der geordneten Y t -Liste entspricht,
zugegriffen, um festzustellen, ob Y t für eine neue
Seite erreicht worden ist. Wenn das eine oder andere eingetreten
ist, sind die Seitenpaarungen geeignet eingestellt.
Wenn das letzte Y b vorbei ist, werden die Berechnungen für
dieses Polygon beendet und die Berechnung für das nächste
Polygon eingeleitet.
Beispielsweise für das in Fig. 4 dargestellte Polygon enthält
die aktive Seitenliste anfänglich die Adressen für die
Seitenpakete, welche die Seiten 42 und 43 beschreiben.
Nachdem die Rasterlinie 3 verarbeitet worden ist, werden
die Seiten 46 und 47 der aktiven Seitenliste hinzugefügt,
und die Seitenpaarungen werden aktualisiert auf: 42, 46 und
47, 43. Nach der Rasterlinie 4 wird, da Y b für die Seite 43
und Y t für die Seite 44 erreicht worden sind, die Seite 43
gelöscht und die Seite 44 zu der aktiven Seitenliste hinzugefügt.
Die Paarbildungen werden geeignet eingestellt.
Wenn die Spannenberechnungen abgeschlossen sind, werden die
Ergebnisse in das FIFO-Register 29 geladen, und sie fließen
dann in die geeigneten Register des Videoverarbeitungsunterabschnitts
30 über Pufferregister 33, wenn es der Videoverarbeitungsunterabschnitt
30 verlangt. Das FIFO-Register 29
gestattet dem Videoverarbeitungsunterabschnitt 30, mit einem
Satz von Spanndaten zu arbeiten, während ein weiterer Satz
Daten in das FIFO-Register geladen wird. Um diese Überlappung
zu gestatten, wird bevorzugt, daß das FIFO-Register 29
"tief" genug ist, um wenigstens zwei vollständige Sätze von
Spanndaten aufzunehmen.
Die Daten, die zu dem VPS 30 in der Polygonausfüllbetriebsart
übertragen werden, sind folgende: (Die Bezugnahme auf
eine Anzahl von Bits im Anschluß an jede Eintragung bezieht
sich auf die Anzahl von Bits, die in der gegenwärtigen bevorzugten
Ausführungsform der Erfindung gesendet werden, auf
welche hier zu Erläuterungszwecken Bezug genommen wird. Es
sei angemerkt, daß der benutzte Datenbus nur 16 Bits aufnehmen
kann, so daß einige Datenwerte zwei Maschinenzyklen
benötigen, um vollständig übertragen zu werden.)
Polygondaten:
dZ/dX - 30 Bits
Y 1 - 1 (die Adresse der Rasterlinie oberhalb des ersten Y u des Polygons) - 12 Bits
Farbe - 12 Bits
Intensitätsverschiebung - 4 Bits
Schriftmuster - 64 Bits (alles Nullen)
Schriftlänge - 6 Bits (alles Einsen)
dZ/dX - 30 Bits
Y 1 - 1 (die Adresse der Rasterlinie oberhalb des ersten Y u des Polygons) - 12 Bits
Farbe - 12 Bits
Intensitätsverschiebung - 4 Bits
Schriftmuster - 64 Bits (alles Nullen)
Schriftlänge - 6 Bits (alles Einsen)
Spannendaten:
X 1 - 12 Bits,
X 2 - 12 Bits,
Z 1 - 30 Bits;
S 1 - 27 Bits;
Y inc - 1 Bit
X 1 - 12 Bits,
X 2 - 12 Bits,
Z 1 - 30 Bits;
S 1 - 27 Bits;
Y inc - 1 Bit
Zusätzlich zu Obigem wird der Gradient dS/dX übertragen. In
Abhängigkeit von dem Typ der gewünschten Schattierung kann
dS/dX eine polygonbezogene Größe oder eine spannenbezogene
Größe sein. Das Flag Y inc wird mit der ersten Spanne auf
einer gegebenen Rasterlinie als ein Signal zum VPS 30 gesendet,
um das Y-Register in VPS 30 und den Bild- und den
Z-Puffer auf die nächste Rasterlinie vor dem Verarbeiten der
Spannendaten zu inkrementieren. Die Bedeutung der Schriftsignale
wird unten in Verbindung mit der Betriebsart Vektorzeichnen
erläutert.
Wie in Verbindung mit der Polygonausfüllbetriebsart (alles
Nullen in dem Schriftmusterregister und alles Einsen in dem
Schriftlängenregister) beschrieben ist die Schriftfunktion inaktiv.
Nach dem Lesen der Erläuterung der Schrift in der Betriebsart
Vektorzeichnen wird jedoch klar sein, daß die Schriftfunktion
in der Polygonausfüllbetriebsart benutzt werden
kann, um eine Texturierung der angezeigten Oberfläche zu
erzielen.
Die Fig. 3A und 3B beinhalten ein Blockschaltbild des VPS
30 (d. h. des Videoverarbeitungsuntersystems, wobei 30 A die
Datenhandhabungselemente sind und 30 B die Steuereinheit
ist, die die Datenverarbeitungsfunktionen des VPS steuert.
Die Pfeile "C" in Fig. 3A beziehen sich auf eine Verbindung
mit der Steuereinheit 30 B. Die Steuerleitungen von der
Steuereinheit 30 B zu den verschiedenen Registern, Multiplexern,
Addierern und Komparatoren sind der Übersichtlichkeit
halber nicht dargestellt worden.
Nach Empfang eines Befehls über die Leitung 34 leitet das
VPS 30 das Laden von Daten in seine Datenregister über die
Leitung 35 ein. Die Daten werden in die folgenden Register
in einer vorbestimmten Folge unter der Steuerung des Mikrosteuerwerks
26 über das Y-Busregister 31 und das Pufferregister
32 über die Leitung 35 geladen:
GrößeRegister
dZ/dX dZ/dX, 52
Y 1Bildpuffer 22 und Z-Puffer 23
FarbeFarbe, 54
IntensitätsverschiebungIntensitätsverschiebung, 55
SchriftmusterSchieberegister 56 (alles Nullen)
SchriftlängeSchriftlänge 57, (alles Einsen)
Nachdem die vorstehend polygonbezogenen Größen geladen
worden sind, werden die folgenden spannenbezogenen Größen
aus dem FIFO-Register 29 durch das Pufferregister 33 über
die Leitung 35 geladen:
GrößeRegister
X 1 X 1, 58
X 2 X 2, 59
S 1 S, 61
Z 1 Z, 60
Y inc Bildpuffer 22 und Z-Puffer 23
Wenn X 1 in das X 1-Register 58 geladen wird, werden die X-
Adreßregister des Bildpuffers 22 und des Z-Puffers 23
ebenfalls auf X 1 gesetzt. Y inc begleitet nur die erste
Spanne auf einer Rasterlinie.
Die gegenwärtig bevorzugte Ausführungsform der Erfindung
arbeitet mit einer Taktfrequenz von 10 MHz, so daß jede
-röße, die 16 Bits oder weniger hat, in einem Maschinenzyklus
von 100 ns geladen werden kann, wogegen diejenigen, die
mehr als 16 Bits haben, in zwei Maschinenzyklen geladen werden.
Nachdem das Laden beendet ist, beginnt das Verarbeiten
der Spannendaten für die erste Spanne. Die Berechnungen für
die verschiedenen Parameter erfolgen parallel mit der Taktgeschwindigkeit
von 100 ns. Die Z- und S-Berechnungen werden
mit hoher Präzision gemacht (30 bzw. 27 Bits), aber nur 16
bzw. 12 Bits werden in den Z- und Bildpuffern gehalten. Das
erfolgt, um zu verhindern, daß ein Aufsummieren von Abrundungsfehlern
den Betrieb des Systems nachteilig beeinflußt.
Das Kürzen auf 16 bzw. 12 Bits ist in dem Blockschaltbild in
Fig. 3 mit "TRUNC" bezeichnet. Die Größe der Daten wird
ebenfalls begrenzt, so daß sie innerhalb zulässiger Bereiche
sind. Dieses Begrenzen ist in Fig. 3A mit "LIMIT" bezeichnet.
Wenn die Berechnungen für die erste Spanne begonnen werden,
bewirkt Y inc , daß die Y-Adreßregister der Bild- und Z-Puffer
22, 23 um 1 erhöht werden, wodurch die Adressen auf den
Wert Y u für die erste Rasterlinie des Polygons gebracht
werden.
Gleichzeitig wird der Z-Wert in dem Z-Puffer 23 an dem Platz
X 1, Y 1 über das Register 62 dem Komparator (CMP) 63
zugeführt, wo er mit dem Inhalt des Z-Registers 60 (gekürzt auf
16 Bits) verglichen wird. Wenn der Wert aus dem Register 60
gleich dem oder kleiner als der Wert in dem Z-Puffer ist,
wird der gekürzte Wert in dem Z-Register 60 über Multiplexer
64 und 66 an den Z-Puffer angelegt und anstelle des alten
Z-Werts eingeschrieben. Wenn der Inhalt des Registers 60
größer als der alte Z-Pufferwert ist, wird der alte Wert
wieder in den Z-Puffer eingeschrieben. Auf diese Weise behält
der Z-Puffer eine Aufzeichnung des Z-Wertes des Objekts,
das sich an jeder Adresse dem Schirm an nächsten befindet.
Die Ergebnisse des Vergleichs in dem Komparator 63 zusammen
mit einem Signal aus dem Schriftmusterregister 56 signalisieren
über ein UND-Gatter 65 der Steuereinheit 30 B, ob das
Einschreiben in den Bildpuffer 22 an dieser Adresse freizugeben
ist. Zu Erläuterungszwecken wird angenommen, daß das
Ausgangssignal des Schriftmusterregisters 56 so ist, daß das
UND-Gatter 65 freigegeben wird, so daß es nur der Z-Wert-
Vergleich ist, der bestimmt, ob ein neuer Wert in den Bildpuffer
22 eingeschrieben wird. Die Schriftmerkmale werden
weiter unten erläutert. Es ist zu erkennen, daß der Z-Wert-
Vergleich das Beseitigen von verborgener Oberfläche bewirkt,
indem er bewirkt, daß der Bildpuffer 22 nur Information bezüglich
des nahesten Objekts enthält.
Gleichzeitig wird der Inhalt des dZ/dX-Registers 52 zu dem
Inhalt des Z-Registers 60 in dem Addierer 67 addiert, und
das Ergebnis wird über einen Multiplexer 68 zu dem Z-Register
60 rückgekoppelt. Der neue Inhalt des Z-Registers 60
ist der Z-Wert, der dem Bildelementplatz X 1 + 1 (Z 1 +
dZ/dX) entspricht.
Parallel zu den vorgenannten Berechnungen wirkt der Inhalt
eines Intensitätsschieberregisters 55 auf eine Verschiebungseinheit
75 ein, um den gekürzten Inhalt des S-Registers 61
um eine vorbestimmte Anzahl von Bits nach rechts zu verschieben,
wobei der sich ergebende Wert zu dem Inhalt des Farbregisters
54 in dem Addierer 76 addiert wird. Eine Begrenzungsschaltung
98 ist vorgesehen, um sicherzustellen, daß
der Intensitätswert, der zu dem Inhalt des Farbregisters 54
addiert wird, nicht die Farbbits stört. Die so gebildete
Summe legt eine Farbe und eine Intensität fest, wie es oben
beschrieben worden ist. Das Ausgangssignal des Addierers 76
wird über einen Mulitplexer 77 und ein Bilddatenregister 78
an den Bildpuffer 22 angelegt. Wenn bei dem Z-Vergleich
festgestellt wird, daß das Polygon, das verarbeitet wird,
an dieser Adresse näher bei dem Schirm als früher verarbeitete
Polygone ist, wird das Einschreiben dieses Werts in
den Bildpuffer freigegeben, wie es oben erläutert worden
ist.
Außerdem wird gleichzeitig der Inhalt eines dS/d X-Registers
85 zu dem Inhalt des S-Registers 61 in einem Addierer 86 addiert,
was zu einem neuen Intensitätswert führt, der zu dem S-Register
61 über einen Multiplexer 87 rückgekoppelt wird. Das
wird der Wert von S sein, der für das Bildelement
X 1 + 1 (S 1 + dS/dX) benutzt wird.
Schließlich wird ein Vergleich des X 1-Registers 58 und des
X 2-Registers 59 in einem Komparator 90 gemacht. Wenn die
Registerinhalte nicht gleich sind, werden das X 1-Register
und die X-Adressregister in dem Bild-Puffer 22 und dem Z-
Puffer 23 alle um 1 erhöht, und die obigen Berechnungen werden
für das Bildelement X 1 + 1 wiederholt. Das Inkrementieren
des X 1-Registers erfolgt durch Addieren von Eins zu dem
Inhalt des Registers in einem Addierer 93 und Wiedereinschreiben
des Ergebnisses in das Register. Dieser Prozeß
wird fortgesetzt, bis der Inhalt des X 1-Registers 58 gleich
dem Inhalt des X 2-Registers 59 ist, zu welcher der
Komparator 90 bewirkt, daß die Steuereinheit 30 B ein "Getan"-
Signal von einem Bit über die Leitung 36 zu dem Mikrosteuergerät
26 sendet. Bei Empfang des "Getan"-Signals, was bedeutet,
daß VPS 30 die Berechnungen für eine Spanne beendet hat,
bewirkt das Mikrosteuergerät 26, daß der FIFO-Speicher 29
die Register von VPS 30 mit Daten für die nächste Spanne zu
füllen beginnt. Dieser Vorgang setzt sich fort, bis sämtliche
Spannen für ein bestimmtes Polygon abgeschlossen sind.
woran anschließend entweder ein weiteres Polygon begonnen
oder eine Strecke in der Betriebsart Vektorzeichnen gezeichnet
werden kann.
Wenn die nächste auszuführende Funktion das Zeichnen eines
Vektors oder das Zeichnen der Seite eines Polygons in einer
Schattierung, die anders als die Schattierung der Fläche
ist (Seitenhervorhebung), werden der Bild- und der Z-Puffer
gefüllt, indem ein anderer Verarbeitungsalgorithmus als
oben beschrieben benutzt wird. Die Information, die an den
Eingangsspeichern 24, 25 in der Betriebsart Vektorzeichnen
benutzt wird, ist ähnlich, aber etwas anders als die in der
Polygonausfüllbetriebsart empfangene. Als Beispiel wird sich
die folgende Erläuterung des Zeichnens einer Strecke in der
Betriebsart Vektorzeichnen auf die Strecke beziehen, die in
Fig. 5 dargestellt ist. Die Strecke hat eine obere Spitze
innerhalb des Bildelementraums 9, 1 und eine untere Spitze in
dem Raum 1, 5. Die Bezeichnung ist dieselbe wie die in Verbindung
mit der Polygonausfüllbetriebsart benutzte. Zu Erläuterungszwecken
sind die Bildelementbereiche, die aktiviert
werden, wenn die angenommene Strecke gezeichnet wird,
schraffiert dargestellt (unter der Annahme, daß die gezeichnete
Gerade das dem Bildschirm nächstgelegene Objekt ist).
Für den Vektor werden folgende Größen durch den Geometrieprozessor
13 über den VME-Datenbus 12 gesendet:
X t (X 1)
Y t (Y 1)
X b (X 2)
Y b (Y 2)
Z t oder stattdessen Z b ;
X u oder stattdessen X v ;
dX/dY;
dZ/dX;
dZ/dY;
Farbe (einschließlich Intensität);
Schriftmuster;
Schriftlänge;
Y t (Y 1)
X b (X 2)
Y b (Y 2)
Z t oder stattdessen Z b ;
X u oder stattdessen X v ;
dX/dY;
dZ/dX;
dZ/dY;
Farbe (einschließlich Intensität);
Schriftmuster;
Schriftlänge;
Die Reihenfolge, in der X t , Y t und X b , Y b gesendet werden,
legt fest, ob die Strecke von oben nach unten oder von unten
nach oben gezeichnet wird. Die Reihenfolge in der vorstehenden
Liste wird zum Zeichnen nach unten führen. Durch Senden
von X b , Y b in den X 1, Y 1-Positionen, X t , Y t in den
X 2, Y 2-Postionen und durch Senden der alternativen Größen Z b und
X v erfolgt das Zeichnen nach oben. Die folgende Erläuterung
gilt für Zeichnen nach unten.
Die Zeichenrichtung wird durch zwei Flags SBX und SBY festgelegt.
Diese Flags werden durch den Mikroprozessor 26 als
Ergebnis des Vergleichens von X 1 mit X 2 und Y 1 mit Y 2 erzeugt.
Wenn X 1 größer als X 2 ist, SBX = 1, und wenn Y 1 größer
als Y 2 ist, SBY = 1. Diese Flags legen fest, ob die X 1-
und/oder Y 1-Register (58 und 95) in VPS 30 während der
Zeichensequenz zu inkrementieren oder zu dekrementieren sind.
Wenn ein SB-Flag gesetzt wird (1), wird das zugeordnete Register
auf Dekrementieren gesetzt, wogegen, wenn das Flag nicht
gesetzt wird (0), es inkrementiert wird. Wenn das X 1-Register
58 dekrementiert wird (SBX = 1), und wenn das Y 1-Register
95 inkrementiert wird (SBY = 0), wird der Vektor abwärts
und nach links gezeichnet. Wenn SBX auf 0 gesetzt
wird, wird das X 1-Register inkrementiert, und der Vektor
geht nach rechts. Wenn SBY gleich 1 ist, wird der Vektor
aufwärts gezeichnet. Das Inkrementieren oder Dekrementieren
der X 1 und Y 1-Register erfolgt durch Addierer 93 und 94,
die von dem Inhalt des zugeordneten Registers Eins addieren
oder subtrahieren und die Ergebnisse wieder zurück in das
Register einschreiben.
Wie in der Polygonausfüllbetriebsart werden die zum Zeichnen
einer Strecke erforderlichen Daten an VPS 30 über einen
von zwei Wegen angelegt: über den FIFO-Speicher 29 und das
Pufferregister 33 oder über das Y-Busregister 31 und das
Pufferregister 32. Folgende Register werden geladen:
DatenRegister
X 1 X 1 (58)
Y t Y 1 (95)
Z t Z (60)
X u X u (61)
X b X 2 (59)
Y b Y 2 (96)
dX/dY dX/dY (85)
dZ/dX dZ/dX (52)
dZ/dY dZ/dY (97)
FarbeFarbe (54)
SchriftmusterSchriftmuster (56)
SchriftlängeSchriftlänge (57)
HORSteuereinheit 30 B
SBXSteuereinheit 30 B
SBYSteuereinheit 30 B
Die Adreßregister des Bildpuffers 22 und des Z-Puffers 23
werden über die Leitungen 70 und 71 auf X t bzw. Y t gesetzt.
Nachdem die Daten in die Register von VPS 30 geladen worden
sind, wird die Zeichenfolge durch einen Befehl aus dem Mikrosteuergerät
26 gestartet. Ein Vergleich des Inhalts des
Z-Registers 60 (gekürzt auf dieselbe Zahl von Bits wie in
dem Z-Puffer (16)) mit dem vorherigen Inhalt des Z-Puffers
wird auf gleich Weise wie oben für die Polygonausfüllbetriebsart
beschrieben ausgeführt, mit der Ausnahme, daß
nach jeder Berechnung das Z-Register 60 nicht nur um dZ/dX
jedesmal dann inkrementiert wird, wenn die X-Adresse inkrementiert
wird, sondern auch um dZ/dY aus dem dZ/dY-Register
97 jedesmal dann inkrementiert wird, wenn die Y-Adresse inkrementiert
wird. Wenn der gekürzte Inhalt des Z-Registers
60 bei irgendeinem Vergleich gleich dem oder kleiner als
der Inhalt des Z-Puffers 23 an dieser Adresse ist, wird
der neue Wert von Z in den Z-Puffer eingeschrieben, und
der Inhalt des Farbregisters 54 wird über den Multiplexer
77 und das Bilddatenregister 78 dem Bildpuffer 22 auf dieselbe
Weise zugeführt, wie es oben beschrieben worden ist.
Die Anfangsbildelementadresse ist X t , Y t , wie oben erwähnt.
Bei Verwendung des Vektors, der in Fig. 5 zu Erläuterungszwecken
dargestellt ist, ist zu erkennen, daß X t , Y t die
Koordinaten 9, 1 haben. Da X 1 größer als X 2 und Y 2 größer
als Y 1 ist, gilt SBX = 1 und SBY = 0. Das X 1-Register 58
wird deshalb dekrementiert und das Y 1-Register 95 wird inkrementiert,
wenn das Vektorzeichen vonstatten geht.
Bevor irgendein Register inkrementiert oder dekrementiert
wird, wird Y 1 mit Y 2 verglichen (Komparator 91), X 1 wird mit
X 2 verglichen (Komparator 92), und X 1 wird mit X u verglichen
(dem Inhalt des X u -Registers 61, gekürzt auf 12 Bits
(Komparator 90)). In dem besonderen Beispiel der Strecke,
die in Fig. 5 dargestellt ist, gilt Y 1 = 1, Y 2 = 5, X 1 = 9,
X 2 = 1 und X u = 8. Wenn keiner der Vergleiche Gleichheit
ergibt, was bei dem gewählten Beispiel der Fall ist, wird
das X 1-Register 58 um einen Bildelementraum dekrementiert,
ebenso wie die X-Adreßregister des Bild- und des Z-Puffers.
Die Operation des Z-Vergleichs und des Einschreibens in den
Z- und den Bildpuffer wird dann für das Bildelement wiederholt,
nun adressiert: 8, 1. Wenn die X- und Y-Vergleiche
dieses Mal gemacht werden, ist zu erkennen, daß X u gleich
dem Inhalt des X 1-Registers 58 sein wird. Wenn das der Fall
ist, gibt der Komparator 92 die Steuereinheit 30 B frei, um
das Register Y 1 und die Y-Adreßregister des Bild- und des
Z-Puffers 22, 23 zu inkrementieren. Gleichzeitig wird der
Inhalt des dX/dY-Registers 85 zu dem Inhalt des X u -Registers
61 addiert. Der Inhalt des X u -Registers 61 wird dann die
exakte Koordinate des Schnittpunkts des Vektors mit Y = 3
sein. Es sei angemerkt, daß die Schnittpunkte des Vektors
mit den Y-Bildelement-Koordinaten mit 27-Bit-Genauigkeit
berechnet werden und daß die Werte später gekürzt werden,
um integrale X-Koordinatenadressen darzustellen. Der Grund
dafür ist, daß, wenn der Vektor zum Zwecke der Seitenhervorhebung
gezeichnet wird, der Vektor genau auf der Seite des
Polygons erscheinen wird und es keine Bildelemente der Polygonfarbe
geben wird, die sich über die hervorgehobene Seite
hinauserstrecken werden.
Nach einer Wiederholung der Z-Vergleichs- und Einschreiboperation
an den Adressen des Bildelements 8, 3, werden die
drei X-Vergleiche durchgeführt, die keine Gleichheiten ergeben.
Das hat zur Folge, daß das X 1-Register 58 und die
X-Adreßregister des Z- und des Bildpuffers um eine Adresse
dekrementiert werden. Diese Prozedur wird bei jedem Taktzyklus
wiederholt, bis es eine Gleichheit zwischen dem X 1-
Register 58 und dem X 2-Register 59 oder dem Y 1-Register 95
und dem Y 2-Register 96 oder beides gibt. Nachdem X 1 (58)
gleich X 2 (59) ist, werden die X-Register nicht länger dekrementiert,
und nachdem Y 1 (95) gleich Y 2 (96) ist, werden
die Y-Register nicht länger inkrementiert. Wenn beide
Gleichheiten auftreten, ist der Vektor vollendet, und die
Steuereinheit 30 B sendet ein "Getan"-Signal über die Leitung
36 zu dem Mikrosteuergerät 26.
Es ist klar, daß Gebiete des Vektors, in denen der in dem
Z-Puffer 23 gespeicherte Z-Wert kleiner als der Z-Wert des
Vektors an dieser Adresse ist, nicht gezeichnet werden,
sondern daß das früher in diesem Gebiet eingegebene Objekt
in den Puffern bleiben und in der endgültigen Szene gezeigt
wird. Ebenso werden anschließende Polygone oder Linien,
der Z-Werte anzeigen, daß sie näher bei der Frontseite
der Szene als der gezeichnete Vektor an irgendeiner Bildelementadresse
ist, den Vektor an dieser Adresse verdrängen.
Die vorstehende Erläuterung des Zeichnens wurde ohne Berücksichtigung
der Möglichkeit des "Schriftsetzens" des Systems gegeben.
Der Begriff "Schriftsetzen" ("fonting"), wie er
hier benutzt wird, bezieht sich auf die Fähigkeit des
Systems, intermittierende Linien, beispielsweise gestrichelte
Linien, zu erzeugen. Eine Vielfalt von Kombinationen
oder Schriftmustern ist möglich unter Verwendung des
Schriftmusterregisters 56 und des Schriftlängenregisters 57
zum Steuern, ob ein besonderes Bildelement eines Vektors
aktiviert wird.
Das Schriftmusterregister 56 ist ein Umlaufschieberegister
mit 64-Bit-Paralleleingabe und serieller Ausgabe, das mit
vier sequentiellen 16-Bit-Wörtern zu der Zeit geladen wird,
zu der die Vektorzeichendaten in VPS 30 geladen werden.
Darüber hinaus wird ein 6-Bit-Wort in den Schriftlängenzähler
57 geladen. Das 6-Bit-Wort in dem Schriftlängenregister
57 steuert die Betriebslänge des Schriftmusterregisters 56,
so daß, obgleich maximal 64 Stufen verfügbar sind, das Register
als ein kürzeres Register arbeiten kann, je nach dem
Inhalt des Schriftlängenzählers 57. Wenn die Wiederholung
des Schriftmusters 40 Bildelemente beträgt, würde das
Schriftlängenregister 57 so eingestellt, daß es bewirkt,
daß das Schriftmusterregister 56 als ein 40-Stufen-Umlaufschieberegister
arbeitet.
Das mit einer Länge von 64 Bit programmierbare Schriftmusterregister
56 ist auf besondere Weise so ausgelegt worden, daß
die Gatterzahl und die Fläche minimal sind. Ein typisches
Schieberegister ist mit einem Flipflopspeicherelement und
einem Multiplexer für jede Zelle versehen. Ein 2 : 1-Multiplexer
wählt entweder den vorherigen Zellenwert oder den
Buswert, je nach dem Verschieben/Laden-Signal. Zusätzliche
Komplexität ergibt sich für den Multiplexer und die Wähllogik
dadurch, daß das Schieberegister eine programmierbare
Länge von 1 bis 64 erfordert. Der Multplexer wird in diesem
Fall zu einem 3 : 1-Selektor. Die drei Eingangssignale sind
der voreingestellte oder ladbare Wert, der am nächsten gelegene
Nachbar in der Verschiebungsbetriebsart und das Umlaufbit
zum Wählen der programmierbaren Länge.
Die besondere Realisierung des Schriftmusterregisters 56
bei der Erfindung hat die Gatterzahl von der eines typischen
Entwurfs, der über 600 äquivalente Gatter mit zwei Eingängen
erfordert, auf etwa 400 Gatter reduziert. Um das zu erreichen,
sind erstens die Speicherzellen in D-Speicherglieder
oder -Flipflops geändert worden, wodurch die Gatterzahl von
6 auf 3,5 Gatter pro Zelle reduziert worden ist. Das ist
möglich, da das Register die Daten nicht von Zelle zu Zelle
verschiebt, sondern vielmehr die Ausgangsverbindung multiplexiert
ist. Das Verschieben des Ausgangssignals erfolgt
durch einen dreistufigen 4 : 1-Multiplexer. Die erste Stufe
reduziert die 64 Bits auf 16, die zweite Stufe wählt 4 von
16 und die dritte Stufe wählt ein einzelnes Bit unter den
verbleibenden 4 Bits aus. Die Folgesteuerung durch die 64
Flipflops über die drei Stufen von Multiplexern erfolgt
durch den 6-Bit-Schriftlängenzähler 57. Die Zählerausgangssignale
steuern die Multiplexerwählleitungen. Nach dem Erreichen
der programmierten Länge wird der Zähler rückgesetzt
und beginnt wieder zu zählen. Insgesamt wird die Zahl
der Gatter um einen Faktor von einem Drittel bei vergleichbarer
Leistung und Vielseitigkeit im Vergleich zum Stand
der Technik reduziert.
Ein Blockschaltbild des Schriftlängenzählers 57 und des
Schriftmusterregisters 56 ist in Fig. 6 gezeigt. Vierundsechzig
D-Flipflops 101 sind verbunden mit 4-16-Bit-Eingangsregistern
105 gezeigt. Die Eingangsdaten, die das
Schriftmuster angeben und auf der Leitung 35 ankommen,
werden in vier sequentiellen 16-Bit-Wörtern durch ein Eingangsregister
105-1, -2, -3 und -4 zu den 64 D-Registern
105-1 bis 105-64 geleitet. Das Q-Ausgangssignal jedes Flipflops
wird in Gruppen von vier zu 16 Multiplexern 102-1 bis
102-16 geleitet. Ebenso wird das Ausgangssignal jeder Gruppe
von vier Multiplexern 102 zu einem von vier Multiplexern
103-1 bis 103-4 geleitet. Schließlich werden die Ausgangssignale
der vier Multiplexer 103 dem letzten Multiplexer
104 zugeführt.
Der Schriftlängenzähler 57 empfängt ein 6-Bit-Signal über
die Leitung 35, welches ihn setzt, so daß er vorwärts bis
zu der Zahl der Wiederholung in dem Schriftmuster zählt und
dann wieder beginnt. Das Ausgangssignal des Schriftlängenzählers
57 wählt eines der 64 Flipflops 101 aus, das mit dem
Ausgang des Schriftmusterregisters 56 zu verbinden ist, und
zwar über die Multiplexer 102, 103 und 104, je nach dem
Zählwert in dem Zähler. Wenn sich der Zählwert des Schriftlängenzählers
57 ändert, tastet das Ausgangssignal des Multplexers
104 die Flipflops 101 der Reihe nach ab. Auf diese
Weise wird das Schriftmusterregister 56 veranlaßt, als ein
Schieberegister programmierbarer Länge mit parallelem Eingang
und seriellem Ausgang zu arbeiten.
Zur Veranschaulichung der Arbeitsweise des Schriftsetzmerkmals
der Erfindung in der Betriebsart Vektorschreiben wird
als Beispiel angenommen, daß es erwünscht ist, einen Vektor
mit einem Strichelungseffekt von 15 Bildelementen EIN,
5 Bildelementen AUS, 5 Bildelementen EIN, 5 Bildelementen
AUS, 5 Bildelementen EIN und schließlich 5 Bildelementen AUS
zu zeichnen. Mit anderen Worten, mit einem längeren Strich
gefolgt von zwei kurzen Strichen. Die Schriftlänge würde
durch den Schriftlängenzähler 57 auf 40 Bildelemente gesetzt
werden, da das die Gesamtzahl von Bildelementen in
der Wiederholung ist. Das Schriftmusterregister 56 würde
dann so arbeiten, als wäre es ein Schieberegister mit 40
Stufen, wobei das Ausgangssignal der 40. Stufe zur Stufe 1
zurückgeleitet würde. Eine negative Logik wird in dem
Schriftsteuersystem benutzt (0 aus dem Register 56 führt
zu einem aktiven Bildelement), so daß das Laden des Registers
56 sein sollte 15 Nullen, 5 Einsen, 5 Nullen, 5 Einsen,
5 Nullen und 5 Einsen. Das Ausgangssignal des Schriftmusterregisters
56 wird an das UND-Gatter 65 angelegt, das
(in Abhängigkeit von einem geeigneten Z-Vergleich) der
Steuereinheit 30 B signalisiert, das Einschreiben von Daten
in den Bildpuffer immer dann zu blockieren, wenn das
Schriftregister 56 als Ausgangssignal eine 1 hat.
Am Schluß der Verarbeitung von sämtlichen Polygonen und
Strecken in der Szene wird der Bildpuffer 22 ein 12-Bit-Wort
enthalten, das jedem Bildelement auf dem Schirm der Katodenstrahlröhre
21 entspricht. Jedes Wort wird Information über
die Farbe und die Intensität enthalten, die für jedes anzuzeigende
Bildelement erforderlich sind. Zum Anzeigen der
Szene werden die Adressen des Bildpuffers in einem Raster
abgetastet, und der Inhalt jeder Adresse wird durch eine
Farbensuchtabelle 36 und einen D/A-Wandler 37 zu der Katodenstrahlröhre
21 geleitet. Für jede Bildpufferadresse werden
drei Digitalwörter durch die Suchtabelle 36 erzeugt,
die, nachdem sie in dem D/A-Wandler 37 in eine Spannungsamplitude
umgewandelt worden sind, den Rot-, Grün- und
Blau-Strahlerzeuger der Kathodenstrahlröhre 21 ansteuern, um
die gewünschte Farbe und Intensität in jedem Bildelement
herzustellen.
Claims (8)
1. Anzeigeprozessor für ein Computergraphiksystem mit
Rasterabtastung, gekennzeichnet durch:
- a) einen Eingangsspeicher (24, 25) zum Empfangen und Speichern von Daten, die sich auf wenigstens einen Teil einer anzuzeigenden Szene beziehen;
- b) einen Steuerspeicher (26) zum Speichern eines Verarbeitungsprogramms;
- c) eine arithmetische Verarbeitungseinheit (27, 28) zum Ausführen von arithmetischen und logischen Operationen an Daten in dem Eingangsspeicher (24, 25) unter der Steuerung des Programms,
- d) ein Videoverarbeitungsuntersystem (30), das Daten sowohl aus dem Eingangsspeicher (24, 25) als auch aus der arithmetischen Einheit (27, 28) empfängt und eine parallele Berechnung der relativen Tiefe in der Szene und der Intensität für jede Bildelement durchführt, das Teil des Teils einer anzuzeigenden Szene ist;
- e) eine Einrichtung (22) zum Speichern von Daten, die die Farbe und die Intensität jedes Bildelements festlegen, das Teil der anzuzeigenden Szene ist;
- f) eine Einrichtung (23, 30) zum Vergleichen der relativen Tiefe an jeder Bildelementstelle in dem Teil der anzuzeigenden Szene mit der relativen Tiefe jeder Bildelementstelle von Teilen der Szene, die früher verarbeitet worden sind; und
- g) eine Einrichtung zum Verhindern des Speicherns von Farb- und Intensitätsdaten für jedes Bildelement, welches Teil des Teils der Szene ist, der anzuzeigen ist, wenn die relative Tiefe von früher verarbeiteten Teilen der Szene, die anzuzeigen ist, kleiner als die relative Tiefe des Teils der Szene ist, der an der Bildelementstelle anzuzeigen ist.
2. Anzeigeprozessor nach Anspruch 1, gekennzeichnet durch
einen Weg für Programmbefehle von dem Steuerspeicher (26)
zu der arithmetischen Verarbeitungseinrichtung (27, 28) und
zu dem Videoverarbeitungsuntersystem (30) unabhängig von dem
Datenweg zwischen dem Eingangsspeicher (24, 25), der arithmetischen
Verarbeitungseinrichtung (27, 28) und dem Videoverarbeitungsuntersystem
(30).
3. Anzeigeprozessor nach Anspruch 1 oder 2, gekennzeichnet
durch einen ersten FIFO-Speicher (29) zum Liefern von Daten
aus der arithmetischen Verarbeitungseinrichtung (27, 28) zu
dem Videoverarbeitungsuntersystem (30).
4. Anzeigeprozessor nach einem der Ansprüche 1 bis 3, dadurch
gekennzeichnet, daß der Eingangsspeicher (24, 25) aus
zwei Abschnitten besteht, wobei die Abschnitte zwischen
verbunden mit einem Eingangsbus (12) zum Empfangen von Daten
und verbunden mit der arithmetischen Verarbeitungseinrichtung
(27, 28) derart abwechseln, daß früher empfangene
Daten innerhalb des Anzeigeprozessors (20) benutzt werden
können.
5. Videoverarbeitungsuntersystem zum Erzeugen von Daten, die
die gewünschte Intensität jedes Bildelements auf wenigstens
einem Teil einer Rasterlinie eines Anzeigeschirms in einem
System zum Anzeigen einer Darstellung von dreidimensionalen
Objekten auf einem zweidimensionalen Raster anzeigen, gekennzeichnet
durch:
- a) ein erstes Datenregister (55) zum Speichern von Daten, die eine gewünschte Bildelementintensität eines vorbestimmten ersten Bildelements in einem Raster festlegen;
- b) ein zweites Datenregister zum Speichern von Daten, die einen inkrementellen Wert der Intensität festlegen;
- c) eine Einrichtung zum wiederholten Bilden der Summe des Inhalts des ersten und zweiten Datenregisters und zum Ersetzen des Inhalts des ersten Datenregisters durch die Summe; und
- d) ein drittes Datenregister zum Empfangen und Speichern jeder Summe an vorbestimmten Adressen.
6. Videoverarbeitungsuntersystem nach Anspruch 5, gekennzeichnet
durch:
- a) ein viertes Datenregister (54) zum Speichern von Daten, die die Farbe der Bildelemente in dem Teil einer Rasterlinie festlegen;
- b) eine Einrichtung zum Addieren des Inhalts des vierten Datenregisters zu jeder der Summen, die mehrere Digitalwörter bilden, derart, daß die Daten, die die Farbe festlegen, durch eine erste Gruppe von Ziffern in den Digitalwörtern dargestellt werden, und daß die Daten, die die Intensität festlegen, durch eine zweite Gruppe von Ziffern in den Digitalwörtern dargestellt werden, wobei die Digitalwörter statt der Summen in dem dritten Datenregister gespeichert werden.
7. Videoverarbeitungsuntersystem nach Anspruch 6, dadurch
gekennzeichnet, daß die Einrichtung zum Addieren des
Inhalts des vierten Datenregisters (54) zu jeder der Summen
eine Einrichtung beinhaltet zum Umpositionieren der Ziffern
jeder der Summen, so daß eine Binärzahl erzeugt wird, die
in den Ziffernpositionen nur Nullen enthält, die durch
Farbdaten in dem Inhalt des vierten Datenregisters (54)
eingenommen werden.
8. Videoverarbeitungsuntersystem nach Anspruch 5, gekennzeichnet
durch:
- a) ein viertes Datenregister (54) zum Speichern von Daten, die die relative Tiefe in der anzuzeigenden Szene des Punktes auf einem Objekt in der Szene, der jedem Bildelement in dem vorbestimmten Bildelement entspricht, festlegen;
- b) ein fünftes Datenregister zum Speichern von Daten, welche einen inkrementellen Wert der Tiefe festlegen;
- c) eine Einrichtung zum wiederholten Bilden von Gesamtzahlen des Inhalts des vierten und fünften Datenregisters;
- d) ein sechstes Datenregister zum Empfangen und Speichern der Gesamtzahlen und vorbestimmten Adressen;
- e) eine Einrichtung zum Vergleichen jeder Gesamtzahl mit vorher erzielten Gesamtzahlen, die an entsprechenden Adressen in dem sechsten Datenregister gespeichert sind, und Blockieren des Speicherns irgendeiner der Gesamtzahlen und der entsprechenden Summen, in denen die Gesamtzahl die früher erzielte Gesamtzahl übersteigt, welche an der entsprechenden Adresse gespeichert ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US83251886A | 1986-02-21 | 1986-02-21 |
Publications (1)
Publication Number | Publication Date |
---|---|
DE3705124A1 true DE3705124A1 (de) | 1987-09-24 |
Family
ID=25261878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE19873705124 Ceased DE3705124A1 (de) | 1986-02-21 | 1987-02-18 | Anzeigeprozessor und videoverarbeitungsuntersystem fuer computergraphik |
Country Status (4)
Country | Link |
---|---|
JP (1) | JPS62219182A (de) |
DE (1) | DE3705124A1 (de) |
FR (1) | FR2594980A1 (de) |
GB (1) | GB2187368A (de) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3832222A1 (de) * | 1987-06-16 | 1990-03-29 | Toshiba Kawasaki Kk | Vorrichtung und verfahren zum anzeigen eines 2-dimensionalen bildes eines 3-dimensionalen gegenstandes |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5084830A (en) * | 1987-10-26 | 1992-01-28 | Tektronix, Inc. | Method and apparatus for hidden surface removal |
KR930000693B1 (ko) * | 1988-09-14 | 1993-01-29 | 가부시키가이샤 도시바 | 패턴 데이터 발생장치 |
US5036316A (en) * | 1989-04-03 | 1991-07-30 | Honeywell Inc. | Method and apparatus for high speed linear shading in a raster graphics system |
EP0431776A3 (en) * | 1989-11-17 | 1992-11-19 | Digital Equipment Corporation | Method of drawing a line segment in a graphics system |
EP0430501B1 (de) * | 1989-11-17 | 1999-02-03 | Digital Equipment Corporation | System und Verfahren zum unverfälschten Polygonenzeichnen |
GB2243520A (en) * | 1990-04-11 | 1991-10-30 | Afe Displays Ltd | Image creation system |
GB2245463A (en) * | 1990-06-18 | 1992-01-02 | Rank Cintel Ltd | Generating graphic images with run length encoded data |
US5293467A (en) * | 1991-04-03 | 1994-03-08 | Buchner Gregory C | Method for resolving priority between a calligraphically-displayed point feature and both raster-displayed faces and other calligraphically-displayed point features in a CIG system |
GB2278524B (en) * | 1993-05-28 | 1997-12-10 | Nihon Unisys Ltd | Method and apparatus for rendering visual images employing area calculation and blending of fractional pixel lists for anti-aliasing and transparency |
US5463723A (en) * | 1993-09-20 | 1995-10-31 | International Business Machines Corporation | Method and apparatus for filling polygons |
US8339411B2 (en) | 2006-05-04 | 2012-12-25 | Microsoft Corporation | Assigning color values to pixels based on object structure |
US7609269B2 (en) | 2006-05-04 | 2009-10-27 | Microsoft Corporation | Assigning color values to pixels based on object structure |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3602702A (en) * | 1969-05-19 | 1971-08-31 | Univ Utah | Electronically generated perspective images |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4679041A (en) * | 1985-06-13 | 1987-07-07 | Sun Microsystems, Inc. | High speed Z-buffer with dynamic random access memory |
-
1987
- 1987-02-13 FR FR8701846A patent/FR2594980A1/fr not_active Withdrawn
- 1987-02-16 JP JP3166687A patent/JPS62219182A/ja active Pending
- 1987-02-18 DE DE19873705124 patent/DE3705124A1/de not_active Ceased
- 1987-02-20 GB GB08704004A patent/GB2187368A/en not_active Withdrawn
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3602702A (en) * | 1969-05-19 | 1971-08-31 | Univ Utah | Electronically generated perspective images |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3832222A1 (de) * | 1987-06-16 | 1990-03-29 | Toshiba Kawasaki Kk | Vorrichtung und verfahren zum anzeigen eines 2-dimensionalen bildes eines 3-dimensionalen gegenstandes |
Also Published As
Publication number | Publication date |
---|---|
GB2187368A (en) | 1987-09-03 |
FR2594980A1 (fr) | 1987-08-28 |
JPS62219182A (ja) | 1987-09-26 |
GB8704004D0 (en) | 1987-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE10053439B4 (de) | Grafik-Beschleuniger mit Interpolationsfunktion | |
DE3407983C2 (de) | Mehrprozessorrechnersystem zum Erzeugen von Bildpunktinformationen aus in einer hierarchischen Datenstruktur definierten Objektelementen | |
DE3619420C2 (de) | ||
DE3339178C2 (de) | ||
DE3636394C2 (de) | Einrichtung und Verfahren zur Speicherorganisation | |
DE3230679C2 (de) | Bildzeilen-Zwischenspeicher-Vorrichtung | |
DE2703021A1 (de) | Datenprozessor zum liefern von intensitaetssteuersignalen zur verwendung in einer rasteranzeige | |
DE3718501A1 (de) | Videoanzeigegeraet | |
EP0038411A2 (de) | Einrichtung zur Speicherung und Darstellung graphischer Information | |
DE69633477T2 (de) | Bildspeicher für graphische Daten | |
WO2000063846A1 (de) | Verfahren zur rasterisierung eines graphikgrundelements | |
DE2252556A1 (de) | Vorrichtung zum erzeugen eines videosignals zur eingabe in ein rasterabgetastetes sichtgeraet | |
DE3705124A1 (de) | Anzeigeprozessor und videoverarbeitungsuntersystem fuer computergraphik | |
DE3518416A1 (de) | Speicher- und prozessorsystem mit schnellem zugriff zur rasteranzeige | |
DE2525155A1 (de) | Verfahren und anordnung zur rasterpunktdarstellung von codierter - liniensegmente darstellende - information in computergesteuerten datensichtgeraeten, insbesondere in kathodenstrahlbildschirmstationen | |
DE2261141C3 (de) | Einrichtung zur graphischen Darstellung von in einem Computer enthaltenen Daten | |
DE4139704A1 (de) | Anzeigesteuerungsvorrichtung fuer ein flachanzeigegeraet | |
DE68929485T2 (de) | Synchrone dynamische integrierte Speicherschaltung, Zugriffverfahren auf dieses System und System mit einem solchem Speicher | |
DE3702613A1 (de) | Geraet zum verschieben digitaler daten in einem speicher eines datenverarbeitungssystems | |
DE4100691B4 (de) | Verfahren zur Darstellung eines dreidimensionalen Modells | |
DE69721736T2 (de) | Verfahren zum Füllen einer Polygone und Bildverarbeitungssystem | |
DE2324063B2 (de) | Pufferspeichereinrichtung | |
DE3941550A1 (de) | Schaltungsanordnung zum zerlegen einer auf einem computer-ausgabedisplay anzuzeigenden graphikfigur | |
DE60306388T2 (de) | Verfahren und vorrichtung zur bilddatenverarbeitung unter verwendung von bildstreifen und zirkularadressierungsanordnung | |
DE69914814T2 (de) | Bildverarbeitungsgerät |
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., |
|
8131 | Rejection |