DE3750784T2 - Generation eines intrapolierten charakteristischen Wertes zur Anzeige. - Google Patents

Generation eines intrapolierten charakteristischen Wertes zur Anzeige.

Info

Publication number
DE3750784T2
DE3750784T2 DE3750784T DE3750784T DE3750784T2 DE 3750784 T2 DE3750784 T2 DE 3750784T2 DE 3750784 T DE3750784 T DE 3750784T DE 3750784 T DE3750784 T DE 3750784T DE 3750784 T2 DE3750784 T2 DE 3750784T2
Authority
DE
Germany
Prior art keywords
error
pel
value
parameter value
integer
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.)
Expired - Fee Related
Application number
DE3750784T
Other languages
English (en)
Other versions
DE3750784D1 (de
Inventor
Jorge Gonzalez-Lopez
Bob Chao-Chu Liang
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE3750784D1 publication Critical patent/DE3750784D1/de
Application granted granted Critical
Publication of DE3750784T2 publication Critical patent/DE3750784T2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects
    • G06T15/80Shading
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/17Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
    • G06F17/175Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method of multidimensional data

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computer Graphics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Generation (AREA)
  • Digital Computer Display Output (AREA)

Description

  • Die vorliegende Erfindung bezieht sich auf die Generation eines interpolierten charakteristischen Wertes zur Anzeige und beschreibt ein Verfahren und eine Einrichtung zur Bereitstellung der interpolierten charakteristischen Werte zur Anzeige von Pels in einem anzeigbaren Polygon.
  • Computer-Graphikanzeigesysteme sind Computersysteme, die Graphikbilder auf einem Bildschirm mit Rasterabtastung erzeugen und anzeigen. Die Graphikbilder kommen von digitalen Daten, die im Systemspeicher gespeichert sind. Die Daten werden normalerweise in Form von Punkten in einem zwei- oder dreidimensionalen Koordinatensystem gespeichert, in dem die Punkte den Spitzen von Polygonen entsprechen, z.B. Dreiecken. Die Polygone bilden die "Bausteine" von größeren Objekten, die angezeigt werden. Zusammen mit den Scheitelpunktdaten werden noch Parameterdaten gespeichert, wie beispielsweise Intensität oder andere Werte zur Berechnung der Intensität, z.B. Oberflächenfarbe, Reflexionsvermögen der Oberfläche, Transparenz, Lichtquellen und normale Vektoren.
  • Die Daten werden für ein bestimmtes Objekt in Form einer Instruktionsliste gespeichert, die als "Anzeigeliste" bezeichnet wird. Um eine solche Anzeigeliste in ein Bild auf einem Bildschirm mit Rasterabtastung umzuwandeln, steht ein Anzeigeprozessor zur Verfügung, der die Liste aus dem Speicher liest, die Daten verarbeitet und Pel-Rohdaten in einen Anzeigenspeicher schreibt. Der Anzeigenspeicher wird in Rasterabtastungs-Echtzeit gelesen und der sich daraus ergebende Datenfluß wird in ein analoges Videosignal umgewandelt, das zum Bildschirm gesendet wird.
  • Die vorliegende Erfindung bezieht sich auf eine Funktion im Anzeigeprozessorteil des Computergraphiksystems. Die Erfindung beschäftigt sich dabei insbesondere mit der Erzeugung von Daten in bezug auf einen dritten Parameterwert für alle Pel- Werte eines angezeigten Dreiecks, die auf der Pel-Position beruhen, sowie mit der Erzeugung von anderen Daten in bezug auf den dritten Parameter. Beispielsweise beim sogenannten Schraffierungsproblem erhält der Anzeigeprozessor für ein bestimmtes Dreieck Schraffierungsinformationen in Form von der Lichtstärke der Spitzen des Dreiecks. Der Anzeigeprozessor kann alternativ dazu auch die Parameter der Objektoberfläche, die Oberflächenausrichtung und das spezifizierte Lichtmodell erhalten. Der Anzeigeprozessor muß daraufhin für jedes zum Dreieck gehörende Pel einen Lichtstärkewert auf der Grundlage der bereitgestellten Werte berechnen.
  • Das Schraffierungsproblem wurde in der herkömmlichen Technik allgemein mit "Gouraud-Schraffierung" zu lösen versucht, die im Zusammenhang mit Polygonen implementiert wurde. In einem Fall beispielsweise wird die Intensität der Polygonpunkte in zwei Stufen berechnet. Zuerst werden die Intensitätswerte aller Pels, die zu jeder Kante gehören, in Abhängigkeit von den Kantenendpunkten (Spitzen) mit Hilfe von eindimensionaler linearer Interpolation berechnet. Danach wird die Pel-Intensität in jeder zum Polygon gehörenden Reihe (oder Spalte) in Abhängigkeit von den zuvor berechneten Intensitäten bestimmt, wobei zwischen zwei Endpunkten interpoliert wird. Der Begriff Intensität bezieht sich in diesem Zusammenhang auf die Helligkeit der Pels, wenn das Objekt in Graustufen (monochrom) vorliegt, oder auf die Rot-, Grün-, und Blauwerte bei einem Farbobjekt.
  • Ein weiteres Beispiel ist in "A 3-D Graphic Display System With Depth Buffer and Pipeline Processor" von A. Fujimoto et al., IEEE CG & A, (Juni 1984), Seite 11 beschrieben. Hier wurden die elementaren Anzeigepolygone zuerst "schachbrettartig eingeteilt", d.h. in Dreiecke unterteilt. Dadurch wird sichergestellt, daß das betreffende Dreieck eine eindeutige Ebene definiert. Die Intensität jedes Pel wird mit Hilfe der zuvor erwähnten linearen Interpolationsmethode bestimmt, wobei dabei die Intensität von vorherigen, benachbarten Pels durch die Addierung einer festen Inkrementmenge für eine X-Bewegung und einer weiteren festen Inkrementmenge für eine Y-Bewegung berechnet wird.
  • Das Problem bei dem von Fujimoto vorgeschlagenen Verfahren liegt darin, daß die arithmetische Genauigkeit zur Darstellung der Inkremente hoch genug sein muß, um eine umfangreiche Fehlersummierung zu vermeiden, wenn der Prozeß wiederholt bei allen Punkten des Dreiecks angewendet wird.
  • Ein weiteres Beispiel für die Funktion, auf die sich die vorliegende Erfindung bezieht, ist die Berechnung der Z-Werte jedes zum Dreieck gehörenden Pel auf der Grundlage der X-, Y- und Z-Werte der Spitzen des Dreiecks. Die herkömmlichen Berechnungsmethoden sind im wesentlichen die gleichen wie bei dem oben beschriebenen Verfahren zur Berechnung des Intensitätswertes für jeden Punkt auf dem Dreieck.
  • Die größte Nachteil der herkömmlichen Technik liegt in der fehlenden Genauigkeit der berechneten Intensitäten (oder Z- Werte) aufgrund der Quantisierung der X- und Y-Koordinaten oder Fehlersumnierung. Bei praktischen Computergraphiksystemen mit Rasterabtastung sind Linien, die Kanten definieren, nicht immer gerade Linien. Die Position eines Punktes auf einer Dreieckskante kann von der theoretischen Position abweichen, so daß die berechnete Intensität nicht mit dem richtigen Wert übereinstimmt.
  • Die vorliegende Erfindung bietet eine Lösung für die genannten Probleme und ermöglicht die Berechnung der Intensität jedes Punktes auf dem Polygon mit einer Fehlerrate, die 0,5 Intensitätseinheiten nicht überschreitet, oder die Bestimmung anderer Mengen wie beispielsweise die Z-Werte für Pels.
  • Darüber hinaus wird auf einen Artikel von D. Field in ACM Transactions on Graphics, Vol. 4, Nr. 1, Januar 1985, Seite 1 bis 11 verwiesen. In diesem Artikel beschreibt der Autor zwei inkrementale, lineare Interpolationsalgorithmen, die durch Geschwindigkeit und Genauigkeit geprüft wurden. Beim ersten Algorithmus handelt es sich um einen einfachen digitalen Differentialanalysator mit Festkomma-Arithmetik, während der zweite Algorithmus eine Verallgemeinerung des Bresenhamschen Zeichnungsalgorithmus ist, der sehr genau ist und schneller als der Festkomma-Algorithmus sein kann.
  • Die vorliegende Erfindung stellt in einem Computer-Graphikanzeigeverarbeitungssystem, zu dem ein Speicher, ein Anzeigeprozessor und ein Anzeigemittel zur Anzeige von Graphikobjekten gehört, bei dem ein Graphikobjekt in einem Speicher durch Positionsdaten dargestellt wird, die den Positionen von Pels in einem zweidimensionalen Raum in Form einer ersten und zweiten Achse entsprechen, aus denen sich das Graphikobjekt zusammensetzt, sowie durch Parameterwerte, die einer Anzeigecharakteristik in bezug auf die Positionsdaten entsprechen, ein Verfahren zur Bereitstellung interpolierter charakteristischer Parameterwerte zur Anzeige für jedes Pel auf dem Rasterabtastungs-Anzeigemittel vor, das zu einem anzeigbaren Graphikobjekt gehört, wobei das Verfahren folgende Schritte umfaßt:
  • die Bereitstellung von Positionsdaten und Parameterwertdaten für zahlreiche Pels, die ausgewählte Punkte auf dem Graphikobjekt zur Interpolation darstellen, um davon die Parameterwertdaten für die anderen Pels des Graphikobjekts zu erzeugen;
  • auf der Grundlage der zahlreichen Pels, die ausgewählte Punkte auf dem Graphikobjekt darstellen, die Erzeugung von Pel- Positionswerten für die anderen Pels des Graphikobjekts, wobei bei einem der zahlreichen Pels begonnen und in einer Abtastoperation in einer ersten und zweiten ausgewählten Abtastrichtung parallel zur ersten bzw. zweiten Achse von einem Pel zum nächsten gegangen wird;
  • wobei das Verfahren dadurch gekennzeichnet ist, daß ganzzahlige Werte, die sich der Änderungsrate der Parameterwerte annähern, ein erster Summierungsfehlerwert, Fehlerterme und Fehlerkorrekturterme bestimmt werden, so daß der Fehler beim Parameterwert nach Durchführung folgender Schritte nicht 0,5 Einheiten übersteigt:
  • die Festlegung von ersten und zweiten ganzzahligen Werten, die sich der Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung annähern;
  • die Festlegung eines ersten Summierungsfehlerwertes auf der Grundlage der Positionsdaten und der Parameterwertdaten;
  • die Festlegung erster und zweiter Fehlerterme, die den Fehler darstellen, indem die ersten und zweiten ganzzahligen Werte als Näherungen der Änderungsrate des Parameterwertes in der ersten und zweiten Richtung verwendet werden;
  • die Festlegung erster und zweiter Fehlerkorrekturterme, die die Fehlerkorrektur darstellen, indem die dritten und vierten ganzzahligen Werte, die sich der Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung nähern, ersetzt werden, wobei die ersten und zweiten ganzzahligen Werte eine erste ganzzahlige Grenze der tatsächlichen Änderungsrate des Parameterwertes darstellen, während die dritten und vierten ganzzahligen Werte eine zweite ganzzahlige Grenze der tatsächlichen Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung darstellen;
  • wobei die ersten, zweiten, dritten und vierten ganzzahligen Werte so ausgewählt werden, daß das Unterschiedsvorzeichen zwischen dem zweiten und vierten Wert mit dem Unterschiedsvorzeichen zwischen dem ersten und dritten ganzzahligen Wert übereinstimmt;
  • die Erzeugung interpolierter Parameterwertdaten für jedes Pel, das durch die Bewegung von einem Pel zum nächsten erzeugt wird, indem die Parameterwertdaten eines zuvor bestimmten Pel verwendet und dabei folgende Schritte durchgeführt werden:
  • wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in die erste Abtastrichtung erreicht wird, wird zu dem zuvor festgelegten Parameterwert folgendes hinzugezählt:
  • der erste ganzzahlige Wert, wenn der summierte Fehlerwert negativ ist, andernfalls der dritte ganzzahlige Wert; und
  • zum summierten Fehlerwert der erste Fehlerterm addiert wird, wenn der Summierungsfehler negativ ist; oder
  • andernfalls der erste Fehlerkorrekturterm;
  • wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in die zweite Abtastrichtung erreicht wird, wird zu dem zuvor festgelegten Parameterwert folgendes hinzugezählt:
  • der zweite ganzzahlige Wert, wenn der summierte Fehlerwert negativ ist, oder andernfalls der vierte ganzzahlige Wert; und
  • zum summierten Fehlerwert der Fehlerterm addiert wird, wenn der summierte Fehlerwert negativ ist, oder andernfalls der zweite Fehlerkorrekturterm; und
  • wenn jedes Pel sich an einer anderen Position befindet, wird eine Summe addiert, die durch den Pfad zu jeder anderen Pel- Position als Kombination einer Bewegung in der ersten Abtastrichtung und als Bewegung in der zweiten Abtastrichtung bestimmt wird.
  • Die vorliegende Erfindung stellt darüber hinaus ein Computer- Graphikanzeigeverarbeitungssystem vor, zu dem ein Speicher (10), ein Anzeigeprozessor (12) und ein Anzeigemittel (16) zur Anzeige von Graphikobjekten gehört, bei dem ein Graphikobjekt in einem Speicher durch Positionsdaten dargestellt wird, die den Positionen von Pels in einem zweidimensionalen Raum in Form einer ersten und zweiten Achse entsprechen, aus denen sich das Graphikobjekt zusammensetzt, sowie durch Parameterwerte, die einer Anzeigecharakteristik in bezug auf die Positionsdaten entsprechen, einschließlich eines Mittels zur Bereitstellung interpolierter charakteristischer Parameterwerte zur Anzeige für jedes Pel auf dem Rasterabtastungs-Anzeigemittel, das zu einem anzeigbaren Graphikobjekt gehört, wobei folgendes dazu gehört:
  • ein Mittel zur Bereitstellung von Positionsdaten und Parameterwertdaten für zahlreiche Pels, die ausgewählte Punkte auf dem Graphikobjekt zur Interpolation darstellen, um davon die Parameterwertdaten für die anderen Pels des Graphikobjekts zu erzeugen;
  • wobei das System dadurch gekennzeichnet ist, daß es ein Mittel (42) hat, um auf der Grundlage der zahlreichen Pels, die ausgewählte Punkte auf dem Graphikobjekt darstellen, Pel- Positionswerten für die anderen Pels des Graphikobjekts zu erzeugen, wobei bei einem der zahlreichen Pels begonnen und in einer Abtastoperation in einer ersten und zweiten ausgewählten Abtastrichtung parallel zur ersten bzw. zweiten Achse von einem Pel zum nächsten gegangen wird;
  • ein Mittel (43) zur Bestimmung ganzzahliger Werte, die sich der Änderungsrate der Parameterwerte annähern, eines ersten Summierungsfehlerwertes, Fehlertermen und Fehlerkorrekturtermen, so daß der Fehler beim Parameterwert nicht 0,5 Einheiten übersteigt und zu dem Bestimmungsmittel weiterhin gehört:
  • ein Mittel zur Festlegung von ersten und zweiten ganzzahligen Werten, die sich der Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung annähern;
  • ein Mittel zur Festlegung eines ersten Summierungsfehlerwertes auf der Grundlage der Positionsdaten und der Parameterwertdaten;
  • ein Mittel zur Festlegung erster und zweiter Fehlerterme, die den Fehler darstellen, indem die ersten und zweiten ganzzahligen Werte als Näherungen der Änderungsrate des Parameterwertes in der ersten und zweiten Richtung verwendet werden;
  • ein Mittel zur Festlegung erster und zweiter Fehlerkorrekturterme, die die Fehlerkorrektur darstellen, indem die dritten und vierten ganzzahligen Werte, die sich der Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung annähern, ersetzt werden, wobei die ersten und zweiten ganzzahligen Werte eine erste ganzzahlige Grenze der tatsächlichen Änderungsrate des Parameterwertes darstellen, während die dritten und vierten ganzzahligen Werte eine zweite ganzzahlige Grenze der tatsächlichen Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung darstellen;
  • ein Mittel zur Erzeugung interpolierter Parameterwertdaten für jedes Pel, das durch diese Bewegungen erzeugt wird, indem die Parameterwertdaten eines zuvor bestimmten Pel verwendet werden und dabei folgendes hinzukommt:
  • ein Mittel zur Addierung von folgenden Werten zum zuvor bestimmten Parameterwert, wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in die erste Abtastrichtung erreicht wird:
  • ein erster ganzzahliger Wert, wenn der summierte Fehlerwert negativ ist, oder andernfalls ein dritter ganzzahliger Wert; und
  • die Addition des ersten Fehlerterms zum summierten Fehlerwert, wenn der Summierungsfehler negativ ist; oder andernfalls des ersten Fehlerkorrekturterms;
  • ein Mittel zur Addierung folgender Werte zum zuvor festgelegten Parameterwert, wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in die zweite Abtastrichtung erreicht wird:
  • ein zweiter ganzzahliger Wert, wenn der summierte Fehlerwert negativ ist, oder andernfalls ein vierter ganzzahliger Wert; und
  • die Addierung des Fehlerterms zum summierten Fehlerwert, wenn der summierte Fehlerwert negativ ist, oder andernfalls des zweiten Fehlerkorrekturterms; und
  • wenn jedes Pel sich an einer anderen Position befindet, ein Mittel zur Addierung einer Summe, die durch den Pfad zu jeder anderen Pel-Position als Kombination einer Bewegung in der ersten Abtastrichtung und einer Bewegung in der zweiten Abtastrichtung bestimmt wird.
  • Die beschriebene Anordnung verringert in hohem Maße Intensitätsfehler, z.B. Lichtstärke oder Schraffierung, bei der linearen Interpolation von charakteristischen Anzeigeparameterwerten in einem Computer-Graphikanzeigesystem mit Rasterabtastung. Durch Vermeidung der zuvor praktizierten Interpolation zwischen den Kanten wird die Hardware-Anordnung im Vergleich zu Verfahren auf dem Stand der Technik maßgeblich vereinfacht. Des weiteren verringert das Verfahren die Zahl der Quotientenbits in Teilungsoperationen im Zusammenhang mit dem Verfahren erheblich, so daß die Setup-Prozedur beschleunigt wird.
  • Die Erfindung wird im folgenden anhand von Beispielen mit Bezug auf bevorzugte Ausführungsbeispiele der Erfindung beschrieben, die in den Begleitzeichnungen dargestellt sind.
  • Fig. 1 ist ein Blockdiagramm eines Computer-Graphiksystems.
  • Fig. 2 ist ein Blockdiagramm des Anzeigeprozessors von Fig. 1.
  • Fig. 3 ist ein Diagramm mit der geometrischen Darstellung eines Anzeigedreiecks.
  • Fig. 4 ist ein Blockdiagramm des Schraffierungsprozessors von Fig. 2.
  • Fig. 5 ist die geometrische Darstellung von Pels in einem Anzeigedreieck.
  • Fig. 6 zeigt eine Tabelle mit den 14 verschiedenen Arten von Anzeigedreiecken und den dazugehörenden Parametern.
  • Fig. 7 ist ein Diagramm einer Linie, die den Bresenhamschen Standardalgorithmus zur Berechnung von I in einer Dimension zeigt.
  • Fig. 8 ist ein Diagramm mit den Logikelementen des Entscheidungsfindungsteils des Schraffierungsgenerators von Fig. 4.
  • Fig. 9 ist ein Diagramm mit dem Intensitätsberechnungsteil des Schraffierungsgenerators von Fig. 4.
  • Fig. 10 zeigt eine Tabelle mit den Intensitätsinkrementen in Abhängigkeit von bestimmten Anfangswerten, die durch Mikrocode festgelegt werden.
  • Fig. 11 ist ein Diagramm mit zwei Vorwärts/Rückwärts-Zählern, die beim Adreßgenerator von Fig. 4 verwendet werden.
  • Fig. 12 ist ein Diagramm mit zwei Registern, die im Zähler von Fig. 4 verwendet werden; und
  • Fig. 13 ist ein Blockdiagramm eines weiteren Ausführungsbeispiels eines Schraffierungsprozessors.
  • Fig. 1 ist ein vereinfachtes Blockdiagramm eines Computer- Graphiksystems. Dazu gehört ein Speicher 10, der über Leitung 11 Befehle zu einem Anzeigeprozessor 12 sendet. Der Anzeigeprozessor arbeitet mit den Befehlen von Speicher 10, um Pel- Werte zu erzeugen, die den anzeigbaren Graphikobjekten entsprechen, wobei die Werte über Leitung 13 zu einem Anzeigenspeicher 14 gehen. Die im Anzeigenspeicher 14 gespeicherten Pel-Werte werden durch Rasterabtastung gelesen und über Leitung 15 zu einem geeigneten Bildschirm 16 übermittelt. Diese Art von Systemen ist in der Technik hinlänglich bekannt.
  • Fig. 2 ist ein genaueres Blockdiagramm des Anzeigeprozessors 12 von Fig. 1. Ein Graphiksteuerungs- und Transformationsprozessor 18 empfängt auf Leitung 11 Daten vom Speicher 10 (Fig. 1) und gibt Daten auf Leitung 19 an den Zeichnungsprozessor 26 weiter, der einen Zeichen/Vektor-Generator 24 und einen Schraffierungsprozessor 20 umfaßt. Der Zeichen/Vektor- Generator 24 erzeugt Pel-Werte für alphanumerische Zeichen und Vektoren. Der Schraffierungsprozessor 20 erzeugt Pel-Werte für Polygone, für die Spitzendaten und andere Daten auf Leitung 19 übermittelt werden. Das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung ist in Zusammenhang mit dem Schattierungsprozessor 20 implementiert. Die Ausgabedaten des Schattierungsprozessors 20 gehen über Leitung 13 zum Anzeigenspeicher 14 (Fig. 1). Der Schattierungsprozessor kann ein Mittel zur Festlegung der Z-Werte für die Entfernung von verdeckten Flächen durch einen nachfolgenden Tiefenpuffer und der dazugehörenden Logik umfassen.
  • Bevor näher auf die Schaltlogik und die Funktionsweise des Schattierungsprozessors 20 eingegangen wird, erfolgt anhand von Fig. 3 eine allgemeine Beschreibung des Graphikanzeigeproblems, mit dem sich die Erfindung befaßt.
  • Fig. 3 ist ein Diagramm mit einem Dreieck 30, das durch die drei Punkte P1, P2 und P3 in einem dreidimensionalen Koordinatensystem X, Y und I definiert wird, das das von der Erfindung gelöste Problem illustriert. Die Achsen I des in Fig. 3 gezeigten Dreiecks 30 stellen die Intensitätskoordinate für einen monochromen Graphikbildschirm dar. Sie könnte auch für die Farben Rot, Grün oder Blau bei einem Farbbildschirm oder für Z bei der Tiefenberechnung stehen.
  • Die Scheitelpunkte P1, P2 und P3 definieren eine Ebene 32, die als Schattierungsebene im X-, Y- und I-Raum bezeichnet werden kann. Die Projektion des Dreiecks 30 auf der XY-Ebene (Bildschirmebene) ergibt ein zweites Dreieck 30', bei dem es sich um das zu schattierende Dreieck handelt. Jeder Punkt von Dreieck 30', der einem Pixel entspricht, wird mit dem Intensitätswert gefüllt, der vom entsprechenden Punkt von Dreieck 30 in der Schattierungsebene kommt. Der korrekte Intensitätswert für ein Pixel mit der Koordinate XjYj im Dreieck 30' ergibt sich dadurch, daß eine Linie von Punkt XiYi parallel zur Achse I gezogen wird, um den Schnittpunkt XiYjIk auf Dreieck 30 zu bestimmen. Ik ist dabei der entsprechende Intensitätswert für diesen Punkt.
  • Fig. 4 ist ein Blockdiagramm mit der Struktur des Schattierungsprozessors von Fig. 2, wobei hier das bevorzugte Ausführungsbeispiel der vorliegenden Erfindung implementiert ist. Die Ausgabedaten des Graphiksteuerungs- und Transformationsprozessors 18 (Fig. 2) gelangen zu einer Steuerlogikeinheit 40. Die beiden Vektorgeneratoren VG 41 und VG 42 legen die Kante eines anzeigbaren Dreiecks fest. Sie implementieren einen Prozeß in Übereinstimmung mit dem Bresenhamschen Algorithmus. Ein Schattierungsgenerator 43 berechnet die interpolierten Intensitäten mit einer neuen zweidimensionalen Interpolationstechnik. Ein Adreßgenerator 44 liefert die X- und Y-Koordinaten, die den durch den Schattierungsgenerator 43 berechneten Intensitäten entsprechen. Der Zähler 45 überwacht die Anzahl der Punkte, die in jeder Reihe schattiert werden müssen. Das Steuerlogikmodul 40 steuert den gesamten Prozeß. Ein allgemeiner Prozessor (nicht gezeigt) oder ein anderes geeignetes Mittel unterstützen das Setup der Schaltlogik im Schattierungsprozessor 20 auf eine Art und Weise, die im folgendem noch näher beschrieben wird.
  • Fig. 5 veranschaulicht den durch den Schattierungsprozessor 20 von Fig. 4 implementierten Prozeß graphisch. Die X- und Y- Achsen entsprechen den Reihen- und Spaltenachsen des durch die Anzeigeeinrichtung des Systems abgetasteten Rasters. Die Punkte Q1, Q2 und Q3 sind die Spitzen eines anzeigbaren Dreiecks.
  • Im ersten Verfahrensschritt werden die drei Punkte des anzeigbaren Dreiecks als Teil der Setup-Prozedur durch einen Mikrocode sortiert. Der Sortieralgorithmus wird unten vorgestellt. Der Algorithmus erfüllt die Anforderungen der Steuerlogik 40 und des Schattierungsgenerators 43 (Fig. 4) und wird nachfolgend unter "Sortieralgorithmus" beschrieben. In diesem Beispiel sind Q1, Q2 und Q3 bereits sortiert, wobei die Q- Numerierung der Sortierung der Punkte entspricht. Das Setup des Schattierungsprozessors 43 sieht den Beginn bei Punkt Q1 vor. Die internen Parameter werden jeweils einmal pro Dreieck durch Mikrocode festgelegt. Die Parameter ändern sich nicht von Reihe zu Reihe.
  • Zuerst erhält der Vektorgenerator 41 den Befehl, eine Linie von Q1 zu Q2 zu ziehen. Ebenso erhält der Vektorgenerator 42 den Befehl, eine Linie von Q1 zu Q3 zu ziehen.
  • Ein zweidimensionaler Schattierungsalgorithmus ist im Schattierungsgenerator 43 implementiert. Der Algorithmus berechnet den Intensitätswert eines Punktes (Xi, Yj), z.B. I(i,j), wenn die einem benachbarten Punkt entsprechende Intensität bekannt ist, z.B. I(i,j-1), I(i,j+1), I(i-1,j) oder I(i+1,j). Der zweidimensionale Schattierungsalgorithmus ist nicht umkehrbar in dem Sinne, daß sich das Ergebnis durch die Bewegung von beispielsweise Punkt P1 zu P2 vom Ergebnis durch die Bewegung von P2 zu P1 unterscheidet. Dies ist vergleichbar mit dem Bresenhamschen Standardalgorithmus.
  • Der Schattierungsgenerator 43 hat zwei Betriebsarten: den "Kantenschattierungsmodus" und den "Reihenschattierungsmodus". Im "Kantenschattierungsmodus" wird der Schattierungsgenerator 43 vom Vektorgenerator 41 gesteuert. Der Schattierungsgenerator 43 speichert die Intensität und den Status des nächsten, zuvor berechneten Punktes durch entsprechende Register in der Hardware, die als "Sicherungsregister" bezeichnet werden. So wie der Vektorgenerator 41 von Q1 zu Q2 geht, geht auch der Schattierungsgenerator 43 den gleichen Weg. Während dieses Prozesses wird in den Anzeigenspeicher 14 (Fig. 1) geschrieben. Wenn der Vektorgenerator 41 die Koordinate Y inkrementiert, stoppt er. Mit Bezug auf Fig. 5 wird davon ausgegangen, daß der Vektorgenerator 41 bei Punkt Pb gestoppt hat, nachdem Punkt Pa geschrieben wurde.
  • Gleichzeitig hat der Vektorgenerator 42 von Q1 zu Q3 gerechnet. Als Y inkrementiert war, stoppte der Vektorgenerator 42 bei Punkt Pd. An dieser Stelle im Prozeß sind die Punkte Pa und Pb schattiert. Mit Hilfe der Sicherungsregister beginnt der Schattierungsgenerator 43 nun, von Punkt Pe zu Punkt Pc zu schattieren, wobei er die Intensität und den Status verwendet, der Punkt Pa als Ausgangspunkt entspricht. Es handelt sich hierbei um den "Reihenschattierungsmodus". Pc ist der Punkt, der dem Ende des aktuellen Durchlaufs des Vektorgenerators 42 entspricht. Bei diesem Beispiel ist hervorzuheben, daß Q3 sich auf der rechten Seite des Dreiecks befindet, ebensogut aber auch auf der linken Seite sein könnte, wie im folgenden noch näher beschrieben wird.
  • Wenn Vektor Q1Q3 beendet ist, erhält der Vektorgenerator 42 den Befehl, Vektor Q3Q2 zu zeichnen. In diesem Fall haben die Richtungskoeffizienten von Q3Q2 und Q1Q3 unterschiedliche Vorzeichen. Daraus folgt, daß Punkt Pg der letzte berechnete Punkt der Pel-Reihe ist, die aus Pf und Pg besteht, die das Segment von Vektor Q3Q2 der Reihe bilden. Bei der Berechnung des Vektors Q1Q3 ist das weitest rechts gelegene Pel in jedem Reihensegment das zuletzt berechnete Pel. Das zuletzt berechnete Pel ist im Fall des Vektors Q1Q3 auch das letzte Pel der gesamten Reihe für das zu schattierende Dreieck. Wenn Vektor Q3Q2 berechnet ist, ist das zuerst berechnete Pel des Reihensegments für den Vektor, in diesem Fall Punkt Pf, der Endpunkt für diese Reihe. Dieser Tatsache wird in der im weiteren näher erläuterten Setup-Prozedur Rechnung getragen.
  • Wenn der Vektorgenerator 41 alle Punkte durchlaufen hat, wird die letzte Reihe schattiert und der Algorithmus stoppt.
  • Es gibt einige ungewöhnliche Fälle, wenn Y1=Y3, oder wenn Y2=Y3 ist. In diesen Fällen wird der Endpunkt für jede Reihe nur von einem Vektor, Q3Q2 bzw. Q1Q3, berechnet.
  • Die eigentliche Gleichung der Schattierungsebene, die durch die drei Punkte Pi (Xi,Yi,I) (i=1,2,3) (Fig. 3) im dreidimensionalen Raum (X,Y,I) definiert wird, lautet:
  • AX+BY+CI=D
  • wobei
  • ist.
  • Die Ebenengleichung kann auch anders dargestellt werden:
  • wobei dI/dX und dI/dY die Teilableitungen sind und IO der Intensitätswert bei (X=0,Y=0) ist.
  • Es kann nachgewiesen werden, daß der absolute Wert der Koeffizienten A, B und C zweimal die Projektionsfläche des dreidimensionalen Dreiecks auf den Ebenen (X=0), (Y=0) bzw. (I=0) ausmacht. Diese Eigenschaft wird zur Analyse des dynamischen Bereichs der Koeffizienten verwendet.
  • Insgesamt werden sechs Multiplikationen benötigt, um A, B und C zu berechnen.
  • Sortieralgorithmus
  • Der Sortieralgorithmus ordnet die drei Dreieckspitzen (hier als Pa, Pb und Pc bezeichnet) neu und bildet eine neue Folge (Q1, Q2, Q3), so daß
  • 1. der Vektorgenerator 41 (und der Schattierungsgenerator 43) immer von Q1 zu Q2 gehen. Vektor Q1Q2 legt die "Anfangskante" des Reihenschattierungsprozesses fest.
  • 2. der Vektorgenerator 42 die "Endkante" Q1-Q3-Q2 bestimmt.
  • 3. sich der Schattierungsgenerator 43 immer in der gleichen X- Richtung und in der gleichen Y-Richtung für alle Punkte im Dreieck bewegt. Dadurch sollen Fehler im Schattierungsalgorithmus vermieden werden.
  • Fig. 6 zeigt eine Tabelle mit den 14 verschiedenen möglichen Dreiecken sowie verschiedene Werte und Parameter im Zusammenhang mit dem Sortieralgorithmus. Die Spalten 3 bis 5 führen die Werte von Ya, Yb und Yc für jeden Fall auf, wobei davon ausgegangen wird, daß Xa< Xb< Xc ist. In diesen Spalten ist:
  • Ymin = Minimum (Ya,Yb,Yc)
  • Ymax = Maximum (Ya,Yb,Yc)
  • In Spalte 6 stehen der Wert von T, mit dem zwischen den Fällen 11 bis 14 unterschieden wird. T wird wie folgt definiert:
  • T = (Xb-Xa) (Yc-Ya)-(Xc-Xa) (Yb-Ya)
  • Zur Berechnung von T sind zwei Multiplikationen notwendig. T stimmt jedoch mit dem oben definierten Koeffizienten C mit Ausnahme eines Vorzeichenunterschieds überein. Es könnte ohne weiteres eine Prozedur entwickelt werden, um die Multiplikation zu vermeiden.
  • Die Spalten 7 bis 9 legen die Reihenfolge der Ausgabesequenz fest. Fall 12 beispielsweise gibt Q1=Pa, Q2=Pc und Q3=Pb.
  • Spalte 2 beschreibt ein Dreieck für jeden Fall. Der Pfeil definiert die "Startkante" und geht von Q1 zu Q2.
  • Die Spalten 10 bis 14 definieren den Wert der Binär-Flags, die vom Schattierungsalgorithmus verwendet werden. Die Flag-Werte bleiben beim ganzen Dreieck konstant.
  • - Flag A ist 1, wenn der Vektor Q1Q3 horizontal ist. In diesem Fall ist die "Endkante" Vektor Q3Q2.
  • - Flag B ist 1, wenn Vektor Q3Q2 horizontal ist. In diesem Fall ist die "Endkante" Vektor Q1Q3.
  • - Flag C ist 1, wenn die Vorzeichen der Richtungskoeffizienten der Vektoren Q1Q3 und Q3Q2 gleich sind.
  • - Flag D ist 1, wenn das Inkrement von X und das Inkrement von Y unterschiedliche Vorzeichen bei der Bewegung des Schattierungsgenerators 43 haben.
  • - Flag E ist 1, wenn das Inkrement in X positiv ist, während sich der Schattierungsgenerator 43 im "Reihenschattierungsmodus" befindet. (Mit anderen Worten heißt dies, daß die linke Kante die "Startkante" und die rechte Kante die "Endkante" ist.)
  • Sortierprozedur
  • Die Sortierprozedur in Microcode-Implementierung sieht wie folgt aus:
  • Zweidimensionaler Schattierungsalgorithmus
  • Die Intensität an jedem Pixel wird mit einem geänderten Bresenhamschen Algorithmus berechnet, der sowohl in X- als auch in Y-Richtung arbeitet. Bei jedem Schritt berechnet der Algorithmus den Intensitätswert eines bestimmten Punktes, wenn die Intensität des benachbarten Punktes (vertikal oder horizontal benachbart) bekannt ist. Dabei sind zwei Schritte notwendig, um von Punkt (X unleserlich, Yj) zu Punkt (Xi+1,Yj+1) zu gehen. Der Schattierungsalgorithmus ist in der Hardware des Schattierungsgenerators 43 von Fig. 4 implementiert.
  • Um den Algorithmus zu erklären, wird zuerst der eindimensionale Fall behandelt. Danach wird der allgemeine zweidimensionale Fall beschrieben.
  • Eindimensionaler Fall
  • Horizontale Linie: Wenn Y=Yq(konstant) ist, hat die Ebenengleichung folgende Form:
  • I = (-A/C)*X + Ky
  • wobei
  • Ky = I0 + (-B/C)*Yq ist,
  • so daß der Intensitätswert entlang der horizontalen Linie Y=Yq berechnet werden kann.
  • Wenn ABS(A/C)&le;1 ist, kann die Intensität mit dem normalen Bresenhamschen Algorithmus in der I-X-Ebene (Fig. 7) berechnet werden. Ein von Punkt P zu Punkt Q gehender Vektor liefert die Intensitätswerte für jedes X. Für den Algorithmus werden die Werte (-A) und C benötigt. Wenn nur der Teil der Schattierungslinie von Punkt R zu Punkt S berechnet werden soll und die Punkt R entsprechende Intensität bekannt ist, kann der Algorithmus auf gleiche Art und Weise angeordnet werden, wobei der einzige Unterschied im Anfangsintensitätswert und der Anzahl der Punkte besteht. Der Richtungskoeffizient wird durch A und C festgelegt, der für alle horizontalen Linien in der X-Y- Ebene konstant bleibt.
  • Wenn ABS (A/C)> 1 ist, kann der Bresenhamsche Algorithmus nicht direkt verwendet werden, da I und X nicht austauschbar sind. Für jedes X darf nur ein Wert von I berechnet werden. Der Bresenhamsche Algorithmus würde mehrere I-Werte für den gleichen X-Wert liefern. Obgleich zwar ein Wert nach bestimmten Kriterien ausgewählt werden könnte, ist der Algorithmus nicht effizient, da mehrere Zyklen benötigt werden, um die Intensität für jeden X-Wert zu berechnen.
  • Der Bresenhamsche Algorithmus muß folgendermaßen geändert werden. Gehen wir davon aus, daß C> 0, (-A)&ge;0 und (-B)> 0 ist.
  • A1 = FLOOR(-A/C)
  • A2 = (-A) - A1*C (z.B. der Rest)
  • wobei FLOOR ( ) als ganzzahliger Teil von ( ) definiert wird.
  • Bei jedem Punkt ist die Intensität gleich mit der Intensität des vorherigen Punktes, der durch A1 (A1+1) inkrementiert wurde. Die Entscheidung wird vom Bresenhamschen Algorithmus getroffen, bei dem der Wert A2 nun die Rolle von (-A) übernimmt. Der vorherige Fall kann auf diesen Fall reduziert werden, wenn A1=0 ist. Der Linien-Richtungskoeffizient besteht aus zwei Termen: einem ganzzahligen Teil und einem Bruchteil. Der Bruchteil wird vom Bresenhamschen Algorithmus bearbeitet. Der ganzzahlige Teil wird zur aktuellen Intensität von einem Punkt zum nächsten hinzugezählt.
  • Bei Verwendung einer ähnlichen Formel ergibt sich folgende Gleichung:
  • A3 = CEIL (-A/C)
  • A4 = AC*3 - (-A) (z.B. der Rest)
  • wobei CEIL ( ) als nächstliegende ganze Zahl definiert ist, die größer oder gleich ( ) ist.
  • Die Intensität an jedem Punkt entspricht der Intensität des vorherigen Punktes plus A3 oder (A3-1). Dabei ist
  • A2 + A4 = C
  • Der Wert A4 nimmt den Platz von (-A) des ersten vorgestellten Falles ein.
  • Die Wahl der Formeln A1-A2 oder A3-A4 ist nicht zufällig. Die Entscheidung wird unten bei der Beschreibung des zweidimensionalen Falles erläutert.
  • Vertikale Linie: Wenn die zu schattierende Linie vertikal anstatt horizontal ist, kann auf ähnliche Art und Weise vorgegangen werden.
  • Wenn X=Xp (konstant) ist, dann ergibt sich
  • I = (-B/C)*Y + Kx
  • wobei
  • Kx = I0 + (-A/C)*Xp
  • und
  • B1 = FLOOR(-B/C)
  • B2 = (-B) - B1*C
  • B3 = CEIL(-B/C)
  • B4 = B3*C - (-B)
  • ist.
  • Dabei ist
  • B2 + B4 = C
  • Zweidimensionaler Fall
  • Der Fall einer beliebigen Linie in der X-Y-Ebene kann als Kombination der vorherigen Fälle angesehen werden. Beim Weg von (Xi,Yj) zu Punkt (Xi+1,Yj+1) geht der Algorithmus zu (Xi+1,Yj) (oder Xi,Yj+1) und von diesem Punkt zu (Xi+1,Yj+1).
  • Die Bewegung in X muß für alle Punkte auf dem Dreieck in die gleiche Richtung gehen. Das gleiche gilt für Y.
  • Wie oben bereits erwähnt kann das Intensitätsinkrement bei der Bewegung von einem Punkt zum nächsten als Beitrag eines ganzzahligen Teils und eines Bruchteils angesehen werden. Der Bruchteil trägt durch 0 oder 1, oder -1 oder 0 zum Intensitätsinkrement bei. Dabei ist es wichtig, daß der Beitrag des Bruchteils für das ganze Dreieck und für beide X- und Y-Richtungen das gleiche Vorzeichen haben muß, z.B. immer 0 oder 1, oder immer -1 oder 0. Die Bedingung kann durch Wahl der entsprechenden Formel (A1-A2 oder A3-A4 für X-Bewegungen oder B1- B2 oder B3-B4 für Y-Bewegungen) auf einer der beiden Achsen erfüllt werden sowie durch Sicherstellung, daß die X-Bewegung immer in der gleichen Richtung ist (entweder positiv oder negativ). Das gleiche gilt für Y.
  • Beschreibung des Algorithmus
  • Die erforderliche Hardware ist in den Figuren 8 und 9 zu sehen. INCR11, INCR12, INCR21 und INCR22 sind durch Microcode implementierte Register. Ihr Inhalt ist für jedes Dreieck festgelegt. D und DB sind Akkumulatoren. D wird als Hauptakkumulator im "Kantenschattierungsmodus" verwendet. DB enthält den Wert von D, der dem unmittelbar zuvor berechneten Punkt entspricht. Während des "Reihenschattierungsmodus" wird DB als Hauptakkumulator verwendet. Der Inhalt von D ändert sich im "Reihenschattierungsmodus" nicht.
  • H1 und H2 enthalten Inkrementierwerte für die Intensität. Sie werden durch Microcode festgelegt. I und IB sind Akkumulatoren mit der aktuellen Intensität. I wird als Hauptakkumulator im "Kantenschattierungsmodus" verwendet. IB enthält den Wert von I, der dem unmittelbar zuvor berechneten Punkt entspricht. Während des "Kantenschattierungsmodus" wird IB als Hauptakkumulator verwendet. Der Inhalt von I ändert sich im "Reihenschattierungsmodus" nicht.
  • Die Sättigungslogik setzt den Ausgabewert zwischen die höchste positive Zahl und Null. Diese Logik ist erforderlich, da aufgrund der Quantisierung der X- und Y-Achsen ein schattierter Punkt außerhalb des theoretischen Dreiecks liegen könnte. Der Wert der Schattierungsebene an diesem Punkt könnte außerhalb des erlaubten Intensitätsbereichs liegen.
  • Setup des Algorithmus
  • Die folgende Prozedur ist in Mikrocode implementiert.
  • Algorithmusoperation
  • Das folgende Pseudoprogramm beschreibt die Operation des Schattierungsgenerators 43 in Fig. 4.
  • Fig. 12 zeigt eine Tabelle mit den Intensitätsinkrementen in Abhängigkeit von den Anfangswerten von H1 und H2, S1 und S2 (Vorzeichen der Richtungskoeffizienten), DIR1 und DIR2, FLAG4 und D (oder DB im Fall des "Reihenschattierungsmodus").
  • Arithmetische Genauigkeit
  • Wie oben bereits erwähnt macht der absolute Wert des Koeffizienten C in der Ebenengleichung das Doppelte des zu schattierenden Dreieckbereichs (in der X-Y-Ebene) aus. Der Höchstwert für C beträgt daher Nx*Ny, wobei Nx und Ny die Bildschirmgröße in X- bzw. Y-Richtung ist. Daraus ergibt sich:
  • 0&le;INCR11&le;2*Nx*Ny
  • -2*Nx*Ny&le;INCR12&le;0
  • 0&le;INCR21&le;2*Nx*Ny
  • -2*Nx*Ny&le;INCR22&le;0
  • Die erforderliche Anzahl von Bits für den Addierer des entscheidungstragenden Teils von Fig. 8 beträgt somit:
  • NBd = CEIL(1[Vorzeichen] + 1[Addierer] + 1[Faktor 2] +
  • LOG2 (Nx+Ny))
  • = 3 + CEIL (LOG2 (Nx) + LOG2 (Ny))
  • Das werthöchste Bit der Addiererausgabe ist immer das wahre Vorzeichenbit des Ergebnisses (z.B. kein Überlauf). Für Nx=Ny=1024 ist NB gleich 23 Bits.
  • Die arithmetische Genauigkeit des Intensitätsteils (siehe Fig. 9) ergibt sich aus:
  • NBi = 2 + LOG2 (Ni)
  • Dabei wird davon ausgegangen, daß Ni, die Anzahl möglicher unterschiedlicher Intensitätsstufen, die Potenz 2 hat. Die Zahl 2 der oben aufgeführten Gleichung ergibt sich aus der Tatsache, daß ein zusätzliches Bit für mögliche negative Zahlen benötigt wird, während ein weiteres Bit zur Erfassung eines Überlaufs notwendig ist.
  • Allgemeine Operation
  • Der grundlegende zweidimensionale Schattierungsgenerator kann unter Verwendung der in Fig. 4 gezeigten Hardware zur Schattierung von Dreiecken verwendet werden. Der Adreßgenerator 44 verfügt für jede Koordinate über einen Vorwärts/Rückwärts-Zähler (siehe Fig. 11). Der Zähler 45 von Fig. 4 ist mit zwei Vorwärts/Rückwärts-Zählern ausgestattet, die die Anzahl der zu jeder Reihe des Dreiecks gehörenden Pixel kontrollieren (siehe Fig. 12). Die Register X, Y und N sind durch den Microcode implementiert. Sie ändern unter Steuerung der Steuerlogik 40 von Fig. 4 ihre Werte im "Kantenschattierungsmodus". Die Register XB, YB und NB werden in erster Linie im "Reihenschattierungsmodus" verwendet.
  • Die folgende Prozedur beschreibt die Operation des Adreßgenerators 44, der Zähler und der Steuerlogik 40 von Fig. 4.
  • Die Sortierprozedur und die Implementierung des Vektorgenerators 41, des Vektorgenerators 42, des Schattierungsgenerators 43, der Zähler und des Adreßgenerators 44 erfolgt über Microcode.
  • Fig. 13 zeigt ein Blockdiagramm eines Ausführungsbeispiels der Erfindung mit einer Erweiterung der in Fig. 4 gezeigten Funktionen; darüber hinaus zeigt die Figur, wie ein Mikroprozessor angeschlossen werden kann, so daß er die Implementierung der oben beschriebenen Prozeduren und Algorithmen steuert. Ein Dreieck-Scanner 100 umfaßt die Steuerlogik 40, den Vektorgenerator VG1 31, den Vektorgenerator VG2 42 und den Zähler 45 von Fig. 4. Der Scanner 100 ist mit dem XY-Generator 44' verbunden, der derselbe wie der Adreßgenerator 44 von Fig. 4 ist. Der Scanner 100 ist auch mit einem Z-Generator 102, einem Rot-Generator 104, einem Grün-Generator 106 und einem Blau-Generator 108 wie gezeigt verbunden.
  • Die in den Generatoren 102, 104, 106 und 108 durchgeführten Sequenzen sind im wesentlichen gleich. Jeder Generator ist im wesentlichen mit unterschiedlichen Anfangswerten konfiguriert, die den Werten an den entsprechenden Spitzen für die jeweiligen Parameterwerte entsprechen, die von diesem Generator erzeugt werden.
  • Fig. 13 zeigt auch, wie ein Mikroprozessor 110 angeschlossen wird, um Steuersignale für die im Zusammenhang mit diesen Ausführungsbeispielen implementierten Prozeduren und Algorithmen zu erzeugen.

Claims (2)

1. In einem Computer-Graphikanzeigeverarbeitungssystem, zu dem ein Speicher, ein Anzeigeprozessor und ein Anzeigemittel zur Anzeige von Graphikobjekten gehört, bei dem ein Graphikobjekt in einem Speicher durch Positionsdaten dargestellt wird, die den Positionen von Pels in einem zweidimensionalen Raum in Form einer ersten und zweiten Achse entsprechen, aus denen sich das Graphikobjekt zusammensetzt, sowie durch Parameterwerte, die einer Anzeigecharakteristik in bezug auf die Positionsdaten entsprechen, ein Verfahren zur Bereitstellung interpolierter charakteristischer Parameterwerte zur Anzeige für jedes Pel auf dem Rasterabtastungs-Anzeigemittel, das zu einem anzeigbaren Graphikobjekt gehört, wobei das Verfahren folgende Schritte umfaßt:
die Bereitstellung von Positionsdaten und Parameterwertdaten für zahlreiche Pels, die ausgewählte Punkte auf dem Graphikobjekt zur Interpolation darstellen, um davon die Parameterwertdaten für die anderen Pels des Graphikobjekts zu erzeugen;
auf der Grundlage der zahlreichen Pels, die ausgewählte Punkte auf dem Graphikobjekt darstellen, die Erzeugung von Pel-Positionswerten für die anderen Pels des Graphikobjekts, wobei bei einem der zahlreichen Pels begonnen und in einer Abtastoperation in einer ersten und zweiten ausgewählten Abtastrichtung parallel zur ersten bzw. zweiten Achse von einem Pel zum nächsten gegangen wird;
wobei das Verfahren dadurch gekennzeichnet ist, daß ganzzahlige Werte, die sich der Änderungsrate der Parameterwerte annähern, ein erster Summierungsfehlerwert, Fehlerterme und Fehlerkorrekturterme bestimmt werden, so daß der Fehler beim Parameterwert nach Durchführung folgender Schritte nicht 0,5 Einheiten übersteigt:
die Festlegung von ersten und zweiten ganzzahligen Werten, die sich der Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung annähern;
die Festlegung eines ersten Summierungsfehlerwertes auf der Grundlage der Positionsdaten und der Parameterwertdaten;
die Festlegung erster und zweiter Fehlerterme, die den Fehler darstellen, indem die ersten und zweiten ganzzahligen Werte als Näherungen der Änderungsrate des Parameterwertes in der ersten und zweiten Richtung verwendet werden;
die Festlegung erster und zweiter Fehlerkorrekturterme, die die Fehlerkorrektur darstellen, indem die dritten und vierten ganzzahligen Werte, die sich der Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung nähern, ersetzt werden, wobei die ersten und zweiten ganzzahligen Werte ein erste ganzzahlige Grenze der tatsächlichen Änderungsrate des Parameterwertes darstellen, während die dritten und vierten ganzzahligen Werte eine zweite ganzzahlige Grenze der tatsächlichen Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung darstellen;
wobei die ersten, zweiten, dritten und vierten ganzzahligen Werte so ausgewählt werden, daß das Unterschiedsvorzeichen zwischen dem zweiten und vierten Wert mit dem Unterschiedsvorzeichen zwischen dem ersten und dritten ganzzahligen Wert übereinstimmt;
die Erzeugung interpolierter Parameterwertdaten für jedes Pel, das durch die Bewegung von einem Pel zum nächsten erzeugt wird, indem die Parameterwertdaten eines zuvor bestimmten Pel verwendet und dabei folgende Schritte durchgeführt werden:
wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in die erste Abtastrichtung erreicht wird, wird zu dem zuvor festgelegten Parameterwert folgendes hinzugezählt:
der erste ganzzahlige Wert, wenn der summierte Fehlerwert negativ ist, andernfalls der dritte ganzzahlige Wert; und
zum summierten Fehlerwert der erste Fehlerterm addiert wird, wenn der Summierungsfehler negativ ist; oder
andernfalls der erste Fehlerkorrekturterm;
wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in die zweite Abtastrichtung erreicht wird, wird zu dem zuvor festgelegten Parameterwert folgendes hinzugezählt:
der zweite ganzzahlige Wert, wenn der summierte Fehlerwert negativ ist, oder andernfalls der vierte ganzzahlige Wert; und
zum summierten Fehlerwert der Fehlerterm addiert wird, wenn der summierte Fehlerwert negativ ist, oder andernfalls der zweite Fehlerkorrekturterm; und
wenn jedes Pel sich an einer anderen Position befindet, wird eine Summe addiert, die durch den Pfad zu jeder anderen Pel-Position als Kombination einer Bewegung in der ersten Abtastrichtung und einer Bewegung in der zweiten Abtastrichtung bestimmt wird.
2. Ein Computer-Graphikanzeigeverarbeitungssystem, zu dem ein Speicher (10), ein Anzeigeprozessor (12) und ein Anzeigemittel (16) zur Anzeige von Graphikobjekten gehört, bei dem ein Graphikobjekt in einem Speicher durch Positionsdaten dargestellt wird, die den Positionen von Pels in einem zweidimensionalen Raum in Form einer ersten und zweiten Achse entsprechen, aus denen sich das Graphikobjekt zusammensetzt, sowie durch Parameterwerte, die einer Anzeigecharakteristik in bezug auf die Positionsdaten entsprechen, einschließlich eines Mittels zur Bereitstellung interpolierter charakteristischer Parameterwerte zur Anzeige für jedes Pel auf dem Rasterabtastungs-Anzeigemittel, das zu einem anzeigbaren Graphikobjekt gehört, wobei folgendes dazu gehört:
ein Mittel zur Bereitstellung von Positionsdaten und Parameterwertdaten für zahlreiche Pels, die ausgewählte Punkte auf dem Graphikobjekt zur Interpolation darstellen, um davon die Parameterwertdaten für die anderen Pels des Graphikobjekts zu erzeugen;
wobei das System dadurch gekennzeichnet ist, daß es ein Mittel (42) hat, um auf der Grundlage der zahlreichen Pels, die ausgewählte Punkte auf dem Graphikobjekt darstellen, Pel-Positionswerten für die anderen Pels des Graphikobjekts zu erzeugen, wobei bei einem der zahlreichen Pels begonnen und in einer Abtastoperation in einer ersten und zweiten ausgewählten Abtastrichtung parallel zur ersten bzw. zweiten Achse von einem Pel zum nächsten gegangen wird;
ein Mittel (43) zur Bestimmung ganzzahliger Werte, die sich der Änderungsrate der Parameterwerte annähern, eines ersten Summierungsfehlerwertes, Fehlertermen und Fehlerkorrekturtermen, so daß der Fehler beim Parameterwert nicht 0,5 Einheiten übersteigt und zu dem Bestimmungsmittel weiterhin gehört:
ein Mittel zur Festlegung von ersten und zweiten ganzzahligen Werten, die sich der Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung annähern;
ein Mittel zur Festlegung eines ersten Summierungsfehlerwertes auf der Grundlage der Positionsdaten und der Parameterwertdaten;
ein Mittel zur Festlegung erster und zweiter Fehlerterme, die den Fehler darstellen, indem die ersten und zweiten ganzzahligen Werte als Näherungen der Änderungsrate des Parameterwertes in der ersten und zweiten Richtung verwendet werden;
ein Mittel zur Festlegung erster und zweiter Fehlerkorrekturterme, die die Fehlerkorrektur darstellen, indem die dritten und vierten ganzzahligen Werte, die sich der Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung annähern, ersetzt werden, wobei die ersten und zweiten ganzzahligen Werte eine erste ganzzahlige Grenze der tatsächlichen Änderungsrate des Parameterwertes darstellen, während die dritten und vierten ganzzahligen Werte eine zweite ganzzahlige Grenze der tatsächlichen Änderungsrate des Parameterwertes in der ersten und zweiten Abtastrichtung darstellen;
ein Mittel zur Erzeugung interpolierter Parameterwertdaten für jedes Pel, das durch diese Bewegungen erzeugt wird, indem die Parameterwertdaten eines zuvor bestimmten Pel verwendet werden und dabei folgendes hinzukommt:
ein Mittel zur Addierung von folgenden Werten zum zuvor bestimmten Parameterwert, wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in die erste Abtastrichtung erreicht wird:
ein erster ganzzahliger Wert, wenn der summierte Fehlerwert negativ ist, oder andernfalls ein dritter ganzzahliger Wert; und
die Addition des ersten Fehlerterms zum summierten Fehlerwert, wenn der Summierungsfehler negativ ist; oder andernfalls des ersten Fehlerkorrekturterms;
ein Mittel zur Addierung folgender Werte zum zuvor festgelegten Parameterwert, wenn jedes Pel vom zuvor bestimmten Pel durch Bewegung in die zweite Abtastrichtung erreicht wird:
ein zweiter ganzzahliger Wert, wenn der summierte Fehlerwert negativ ist, oder andernfalls ein vierter ganzzahliger Wert; und
die Addierung des Fehlerterms zum summierten Fehlerwert, wenn der summierte Fehlerwert negativ ist, oder andernfalls des zweiten Fehlerkorrekturterms; und
wenn jedes Pel sich an einer anderen Position befindet, ein Mittel zur Addierung einer Summe, die durch den Pfad zu jeder anderen Pel-Position als Kombination einer Bewegung in der ersten Abtastrichtung und einer Bewegung in der zweiten Abtastrichtung bestimmt wird.
DE3750784T 1986-04-23 1987-03-17 Generation eines intrapolierten charakteristischen Wertes zur Anzeige. Expired - Fee Related DE3750784T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US06/854,965 US4805116A (en) 1986-04-23 1986-04-23 Interpolated display characteristic value generator

Publications (2)

Publication Number Publication Date
DE3750784D1 DE3750784D1 (de) 1995-01-12
DE3750784T2 true DE3750784T2 (de) 1995-07-13

Family

ID=25320005

Family Applications (1)

Application Number Title Priority Date Filing Date
DE3750784T Expired - Fee Related DE3750784T2 (de) 1986-04-23 1987-03-17 Generation eines intrapolierten charakteristischen Wertes zur Anzeige.

Country Status (5)

Country Link
US (1) US4805116A (de)
EP (1) EP0243644B1 (de)
JP (1) JPH0719297B2 (de)
CA (1) CA1266722C (de)
DE (1) DE3750784T2 (de)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
NL8503461A (nl) * 1985-12-17 1986-04-01 Oce Nederland Bv Werkwijze voor het genereren van lijnstukken.
JP2612260B2 (ja) * 1986-09-24 1997-05-21 ダイキン工業株式会社 テクスチヤマツピング装置
US4930091A (en) * 1987-11-04 1990-05-29 Schlumberger Systems, Inc. Triangle classification setup method and apparatus for 3-D graphics display system
US4962468A (en) * 1987-12-09 1990-10-09 International Business Machines Corporation System and method for utilizing fast polygon fill routines in a graphics display system
JP2618951B2 (ja) * 1988-02-16 1997-06-11 株式会社東芝 三次元図形処理装置
US4988984A (en) * 1988-10-31 1991-01-29 International Business Machines Corporation Image interpolator for an image display system
US4967286A (en) * 1988-12-12 1990-10-30 Disctronics Manufacturing, Inc. Method and apparatus for forming a digital image on an optical recording disc
US5128872A (en) * 1988-12-20 1992-07-07 Sun Microsystems, Inc. Method and apparatus for determining line positions for display and manipulation by a computer system
US5020014A (en) * 1989-02-07 1991-05-28 Honeywell Inc. Generic interpolation pipeline processor
GB2228597A (en) * 1989-02-27 1990-08-29 Ibm Data processor with conditional instructions
US5060172A (en) * 1989-07-06 1991-10-22 Digital Equipment Corporation Method and apparatus for displaying smooth-shaded objects
US5214753A (en) * 1989-07-31 1993-05-25 Shographics, Inc. Video system with parallel attribute interpolations
JPH0760465B2 (ja) * 1989-10-23 1995-06-28 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 凹ポリゴン描出方法及びプロセツサ
US5163126A (en) * 1990-05-10 1992-11-10 International Business Machines Corporation Method for adaptively providing near phong grade shading for patterns in a graphics display system
GB2245460B (en) * 1990-06-18 1994-04-06 Link Miles Ltd Apparatus for generating a visual display
US5253339A (en) * 1990-07-26 1993-10-12 Sun Microsystems, Inc. Method and apparatus for adaptive Phong shading
JPH087715B2 (ja) * 1990-11-15 1996-01-29 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理装置及びアクセス制御方法
US5420972A (en) * 1990-11-15 1995-05-30 International Business Machines Corporation Method and apparatus for rendering lines
JPH0683969A (ja) * 1990-11-15 1994-03-25 Internatl Business Mach Corp <Ibm> グラフィックス・プロセッサ及びグラフィックス・データ処理方法
JPH0785219B2 (ja) * 1990-11-15 1995-09-13 インターナショナル・ビジネス・マシーンズ・コーポレイション データ処理システム及びデータ制御方法
JP2725915B2 (ja) * 1990-11-15 1998-03-11 インターナショナル・ビジネス・マシーンズ・コーポレイション 三角形描画装置及び方法
US5542025A (en) * 1991-01-16 1996-07-30 Hewlett-Packard Company Precision Z-interpolation method and apparatus
US5343558A (en) * 1991-02-19 1994-08-30 Silicon Graphics, Inc. Method for scan converting shaded triangular polygons
JPH0589251A (ja) * 1991-07-12 1993-04-09 Sony Corp 画像の描画装置
US5706415A (en) * 1991-12-20 1998-01-06 Apple Computer, Inc. Method and apparatus for distributed interpolation of pixel shading parameter values
US5345541A (en) * 1991-12-20 1994-09-06 Apple Computer, Inc. Method and apparatus for approximating a value between two endpoint values in a three-dimensional image rendering device
US5422991A (en) * 1992-09-22 1995-06-06 International Business Machines Corporation Parallel vector generator and triangle generator incorporating same
US5748946A (en) * 1995-02-17 1998-05-05 International Business Machines Corporation Method and apparatus for improved graphics picking using auxiliary buffer information
US5973705A (en) * 1997-04-24 1999-10-26 International Business Machines Corporation Geometry pipeline implemented on a SIMD machine
US5951672A (en) * 1997-07-02 1999-09-14 International Business Machines Corporation Synchronization method for work distribution in a multiprocessor system
JP4717208B2 (ja) 1998-02-27 2011-07-06 ダグ カーソン アンド アソシエーツ,インク. 光ディスクマスタ作成プロセスにおけるピットおよびランド遷移ロケーションの個別調整方法、およびそのための最適化回路
US6088044A (en) * 1998-05-29 2000-07-11 International Business Machines Corporation Method for parallelizing software graphics geometry pipeline rendering
DE19915308A1 (de) 1999-04-03 2000-10-12 Daimler Chrysler Ag Verfahren zur zweidimensionalen Bildpunkt-Darstellung von Objekten auf einer Anzeigevorrichtung
US6906732B1 (en) * 1999-12-07 2005-06-14 Nintendo Co., Ltd. Texture morphing process provided by the preferred embodiment of the present invention
TW580642B (en) * 2001-08-23 2004-03-21 Ulead Systems Inc Processing method using 2-dimension graphics to draw 3-dimension objects
TWI222040B (en) * 2001-12-28 2004-10-11 Silicon Integrated Sys Corp Pre-setup and shading device and method of computer graph
AUPS300502A0 (en) * 2002-06-17 2002-07-11 Canon Kabushiki Kaisha Generating one or more linear blends
JP4237046B2 (ja) * 2003-12-24 2009-03-11 株式会社リコー 画像処理装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS57119390A (en) * 1981-01-16 1982-07-24 Tokyo Shibaura Electric Co Shading method
JPS5971093A (ja) * 1982-10-18 1984-04-21 株式会社日立製作所 塗潰し図形発生装置
US4609917A (en) * 1983-01-17 1986-09-02 Lexidata Corporation Three-dimensional display system
US4475104A (en) * 1983-01-17 1984-10-02 Lexidata Corporation Three-dimensional display system
US4586038A (en) * 1983-12-12 1986-04-29 General Electric Company True-perspective texture/shading processor
US4648049A (en) * 1984-05-07 1987-03-03 Advanced Micro Devices, Inc. Rapid graphics bit mapping circuit and method
US4677573A (en) * 1984-05-15 1987-06-30 International Business Machines Corporation Hardware generation of styled vectors in a graphics system
US4697178A (en) * 1984-06-29 1987-09-29 Megatek Corporation Computer graphics system for real-time calculation and display of the perspective view of three-dimensional scenes

Also Published As

Publication number Publication date
JPS62256186A (ja) 1987-11-07
CA1266722A (en) 1990-03-13
CA1266722C (en) 1990-03-13
DE3750784D1 (de) 1995-01-12
EP0243644B1 (de) 1994-11-30
JPH0719297B2 (ja) 1995-03-06
EP0243644A3 (en) 1990-06-06
US4805116A (en) 1989-02-14
EP0243644A2 (de) 1987-11-04

Similar Documents

Publication Publication Date Title
DE3750784T2 (de) Generation eines intrapolierten charakteristischen Wertes zur Anzeige.
DE10053439B4 (de) Grafik-Beschleuniger mit Interpolationsfunktion
DE3854543T2 (de) Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung.
DE68919024T2 (de) Verfahren und Prozessor zur Abtastumsetzung.
DE69122557T2 (de) Bilderzeugung
DE68927471T2 (de) Verfahren zur Schattierung eines graphischen Bildes
DE3855231T2 (de) Prioritätsauflösungssystem zwischen Polygonen mit Antialiasing
DE69127516T2 (de) Verfahren und Gerät zur Bilderzeugung
DE68925399T2 (de) Verfahren und Gerät zur Bildtransformation
DE3854223T2 (de) Erzeugung und Anzeige von Rechnergraphiken.
DE3315148C2 (de)
DE69914355T2 (de) Bildverarbeitungsgerät
DE102005050846A1 (de) Perspektiveneditierwerkzeuge für 2-D Bilder
DE3518416A1 (de) Speicher- und prozessorsystem mit schnellem zugriff zur rasteranzeige
DE4211385A1 (de) Daten-projektionssystem
DE3022454A1 (de) Optisches abbildesystem mit computererzeugtem bild fuer einen bodenfesten flugsimulator
DE2703021A1 (de) Datenprozessor zum liefern von intensitaetssteuersignalen zur verwendung in einer rasteranzeige
DE3801364A1 (de) Anzeigesystem
DE60106301T2 (de) Verfahren und system für die ausfuhr von datenverbänden zu zweidimensionalen oder dreidimensionalen geometrischen entitäten
DE3407983A1 (de) Mehrprozessorrechnersystem zum verarbeiten in einer hierarchischen datenstruktur definierter objektelemente zu einer farbigen abbildung
DE19619288A1 (de) System und Verfahren zur Dreieck-Rasterung mit in zwei Dimensionen verschachtelten Rahmenpuffern
DE69031942T2 (de) Gleichzeitiges Initialisierungsverfahren von Doppelpuffer und Rasterpuffer
DE69008766T2 (de) Verfahren und Vorrichtung zur linearen Abschattung für ein Rastergrafikdisplay.
DE3854619T2 (de) Quadratische interpolation zur schattierten bilderzeugung.
DE112011105126T5 (de) Texturkartierungsvorrichtung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8339 Ceased/non-payment of the annual fee