DE69032932T2 - System und Verfahren zum unverfälschten Polygonenzeichnen - Google Patents
System und Verfahren zum unverfälschten PolygonenzeichnenInfo
- Publication number
- DE69032932T2 DE69032932T2 DE69032932T DE69032932T DE69032932T2 DE 69032932 T2 DE69032932 T2 DE 69032932T2 DE 69032932 T DE69032932 T DE 69032932T DE 69032932 T DE69032932 T DE 69032932T DE 69032932 T2 DE69032932 T2 DE 69032932T2
- Authority
- DE
- Germany
- Prior art keywords
- polygons
- pixels
- frame buffer
- graphics processor
- pixel
- 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 - Lifetime
Links
- 238000000034 method Methods 0.000 title claims description 30
- 239000011159 matrix material Substances 0.000 claims description 54
- 239000000872 buffer Substances 0.000 claims description 45
- 238000012545 processing Methods 0.000 claims description 14
- 239000003086 colorant Substances 0.000 claims description 6
- 238000002156 mixing Methods 0.000 claims description 4
- 238000011156 evaluation Methods 0.000 description 18
- 238000005070 sampling Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000014509 gene expression Effects 0.000 description 8
- 239000011449 brick Substances 0.000 description 6
- 230000000694 effects Effects 0.000 description 6
- 238000007792 addition Methods 0.000 description 5
- 238000009877 rendering Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000013178 mathematical model Methods 0.000 description 2
- 230000001154 acute effect Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
- G06T11/40—Filling a planar surface by adding surface attributes, e.g. colour or texture
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
- G06T15/50—Lighting effects
- G06T15/503—Blending, e.g. for anti-aliasing
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Graphics (AREA)
- Image Generation (AREA)
Description
- Die vorliegende Erfindung bezieht sich allgemein auf ein System und ein Verfahren zur Reduzierung eines Treppeneffektes, der als Alias-Effekt in Polygonen, die auf ein Rastergraphik-Anzeigeuntersystem gezeichnet sind, bekannt ist. Die Reduzierung des Treppeneffektes durch Glätten der Kanten des Rasterpolygons ist als Antialiasing-Verarbeitung bekannt. Insbesondere bezieht sich die Erfindung auf ein Antialiasing-System und ein -Verfahren, die das Polygon pro Pixel mehrfach abtasten.
- Die Publikation des Standes der Technik WO 89/06033 mit dem Titel "Method of Tiling a Figure in Graphics Rendering System" lehrt das Auswählen jener Pixel aus einer adressierten Pixelmatrix, auf die eine in den Rahmenpuffer zu zeichnende Figur abgebildet wird. In der WO-Publikation des Standes der Technik ist eine Bildaufbereitungsoperation enthalten, die die durch die Rahmenpuffer-Speicherarchitektur geschaffene erhöhte Bandbreite effizient nutzt. Sie lehrt jedoch kein Verfahren zum Zeichnen von einer Antialiasing-Verarbeitung unterworfenen Polygonen.
- Die Aufgabe der Abtast-Umsetzung eines Polygons auf einem Rastergraphik-Anzeigeuntersystem besteht im Bestimmen der Koordinaten der Pixel, die innerhalb des Polygons auf einem zweidimensionalen Gitterraster liegen. Das vollständige Beleuchten jener Pixel in dem Liniensegment, das das Polygon enthält, führt zu einem Treppenmuster, das das Polygon approximiert.
- Bekannte Techniken zur Antialiasing-Verarbeitung sind sowohl zeitaufwendig als auch rechenintensiv und würden, falls sie hardwaremäßig implementiert würden, eine teure zusätzliche Hardwareunterstützung erfordern. Solche Algorithmen erfüllen die ihnen zugedachte Funktion sehr gut, wenn das Rastergraphik-Anzeigeuntersystem ein Untersystem mit ausreichender Leistung ist. Jedoch sind für preiswerte Arbeitsplatzrechneranwendungen, um dem Preiswettbewerb standzuhalten, Kompromisse bei der Bildaufbereitungsgeschwindigkeit notwendig. Die Verwendung von Zentraleinheiten (CPUs) für Computer mit reduziertem Befehlssatz (RISC) in solchen Arbeitsplatzrechnern minimiert das Ausmaß der notwendigen Kompromisse bezüglich der Rechnerleistung, jedoch läßt die Anwendung herkömmlicher Antialiasing-Algorithmen die graphische Antwort auf diesen Arbeitsplatzrechnern träge erscheinen. Es besteht deshalb ein Bedarf an einem System und Verfahren zur Antialiasing-Verarbeitung von Polygonen, das schneller und weniger rechenintensiv als die herkömmlichen Techniken ist.
- Die Erfindung beruht in ihrer weitesten Form auf einer Vorrichtung bzw. einem Verfahren gemäß der Ansprüche 1 bzw. 13 zum Zeichnen eines einer Antialiasing-Verarbeitung unterworfenen Polygons. Ein System zum Zeichnen von einer Antialiasing-Verarbeitung unterworfenen Polygonen, wie es im folgenden beschrieben ist, besitzt einen Host- Datenprozessor. Ein Speicher ist mit dem Host-Datenprozessor über einen Bus verbunden. Ein Graphikprozessor ist mit dem Bus verbunden. Eine Anzeige enthält mehrere Pixel zum Anzeigen der Polygone. Ein Rahmenpuffer ist zwischen den Graphikprozessor und die Anzeige geschaltet. Der Graphikprozessor enthält ein Programm zur Abtastung einer Bildmatrix. Die Bildmatrix ist wahlweise durch das Programm rekonfigurierbar, so daß sie entweder mehrere der Pixel oder mehrere Stellen innerhalb eines der Pixel enthält.
- Ein Verfahren zum Zeichnen von einer Antialiasing-Verarbeitung unterworfenen Polygonen in Übereinstimmung mit dieser Erfindung umfaßt die Vorsorge eines Graphikprozessors einschließlich eines Programms zur Abtastung einer Bildmatrix.
- Die Bildmatrix wird wahlweise mit dem Programm so konfiguriert, daß es entweder mehrere Pixel oder mehrere Stellen in einem der Pixel enthält. Die Bildmatrix wird der Konfiguration entsprechend abgetastet. Diese Schritte erzeugen durch Antialiasing verarbeitete Polygone.
- Wie der obige Gegenstand erreicht wird und welche Vorteile und Merkmale der Erfindung damit verbunden sind, wird Fachleuten leichter deutlich nach Durchsicht der folgenden, genaueren Beschreibung der Erfindung und unter Bezugnahme auf die Zeichnung, worin:
- Fig. 1 eine dem Verständnis der vorliegenden Erfindung dienende Darstellung eines einer Antialiasing-Verarbeitung unterworfenen Polygons ist;
- Fig. 2 ein verallgemeinertes Blockdiagramm eines Systems zum Zeichnen von einer Antialiasing-Verarbeitung unterworfenen Polygonen gemäß der Erfindung ist;
- Fig. 3 eine zweidimensionale Matrix von Pixeln ist, wie sie in dem System nach Fig. 2 verwendet wird;
- Fig. 4 ein Diagramm ist, das zeigt, wie die zweidimensionale Matrix aus Fig. 3 in eine lineare Matrix umgesetzt wird;
- die Fig. 5A-5D zeigen, wie ein Polygon in dem System nach Fig. 2 dargestellt wird;
- Fig. 6 ein Diagramm ist, das einen Abschnitt des Verfahrens dieser Erfindung zeigt;
- die Fig. 7A und 7B zweidimensionale Pixelmatrizen sind, die einen weiteren Abschnitt des Verfahrens der Erfindung zeigen;
- die Fig. 8-9 weitere zweidimensionale Pixelmatrizen sind, die zusätzliche Abschnitte des Verfahrens der Erfindung zeigen;
- Fig. 10 ein Fig. 4 ähnliches Diagramm ist, jedoch mit bestimmten dem Verständnis des Verfahrens der Erfindung dienenden mathematischen Darstellungen;
- Fig. 11 ein genaueres Blockdiagramm eines Abschnitts des Systems nach Fig. 2 ist;
- Fig. 12 ein weiteres genaueres Blockdiagramm eines weiteren Abschnitts des Systems nach Fig. 2 ist;
- Fig. 13 eine dem Verständnis des Verfahrens der Erfindung dienende zweidimensionale Pixeluntermatrix ist; und
- Fig. 14 eine zweidimensionale Pixelmatrix ist, die die Arbeitsweise eines Abschnitts des Verfahrens der Erfindung zeigt.
- In der Zeichnung, insbesondere in Fig. 1, ist ein der Antialiasing-Verarbeitung unterworfenes Dreieck 10 gezeigt, in dem Pixel 12, die eine innerhalb des Dreiecks 10 liegende obere linke Ecke 14 besitzen, beleuchtet sind. Wie gezeigt ist, entsprechen die beleuchteten Pixel 12 nur angenähert der durch die Liniensegmente 16, 18 und 20 begrenzten Dreiecksform. Die Aufgabe der Umsetzung des Polygons wie etwa des Dreiecks 10 auf ein Rastergraphik- Anzeigeuntersystem durch Abtastung besteht in dem Bestimmen der Koordinaten der Pixel 12, die innerhalb des Dreiecks 10 eines zweidimensionalen Gitterrasters 22 liegen. Das vollständige Beleuchten jener Pixel 12 innerhalb der Liniensegmente 16-20 führt zu einem Treppenmuster 24, das das Dreieck annähert.
- Fig. 2 ist ein Blockdiagramm eines Systems 30 zum Zeichnen des Dreiecks 10 in einer durch Antialiasing verarbeiteten Form. Eine CPU 32 ist über einen Bus 36 mit einem Gleitpunktprozessor (FPU) 34 verbunden. Die CPU 32 ist über einen 32-Bit-Systembus 38 mit einem Direktzugriffsspeicher (RAM) 40, einem Cache 42 und einer Schnittstelle 44 in dem Graphik-Untersystem 45 verbunden. Die Schnittstelle 44 ist über den Bus 46 mit dem Graphikprozessor 48 verbunden. Der Graphikprozessor 48 ist über den 120-Bit- Graphikbus 50 mit dem Rahmenpuffer 52 verbunden. Der Rahmenpuffer 52 ist über den Bus 56 mit einem Video- Digital/Analog-Wandler (DAC) 54 verbunden. Der DAC 54 ist über die Leitung 60 mit der Videoanzeige 58 verbunden.
- In Fig. 3 gibt der Ort der Verweisargumente an, daß der Graphikprozessor 48 den Rahmenpuffer 52 in einer rechtekkigen Matrix 70 von Pixeln 72 aktualisieren muß. Die folgenden Algorithmusbeschreibungen verwenden exemplarisch eine 4 · 4-Matrix, auch wenn reale Implementierungen sich davon unterscheiden können. Mehrere Graphikprozessoren 48 können gemeinsam verwendet werden, um eine höhere Bandbreite für den Rahmenpufferspeicher 52 zu erzielen. Jeder der Graphikprozessoren 48 kann auf jeden 4 · 4-Bereich in dem Rahmenpuffer 52 zugreifen. An beliebiger Stelle angeordnet stellt die obere linke Ecke 74 den Ursprung (origin) dar, wobei jedes Pixel 72 in der Matrix durch einen (x, y)-Versatz (offset) dargestellt wird. Die Stellen der Pixel 72 in der Matrix werden Standorte genannt. Jeder Standort (site) enthält die für das entsprechende Pixel 72 relevanten Informationen.
- Die in Fig. 3 gezeigte zweidimensionale Darstellung der Matrix 70 dient als Anleitung zum Verständnis der Geometrie des Algorithmus, da die Standorte 72 in der Matrix 70 und die Pixel in dem Rahmenpuffer 52 auf intuitive Weise eins zu eins abgebildet werden. Alternativ könnte die Matrix 70, wie bei 74 in Fig. 4 gezeigt ist, linear dargestellt werden. Eine lineare Darstellung erscheint nützlicher für die Beschreibung der Hardware-Implementierungen der Algorithmen, da die Register des Graphikprozessor-48-Bausteins in Wirklichkeit linear ausgelegt sind.
- Das geometrische Grundelement in dem Graphikprozessor 48 ist die Auswertung eines geometrischen Halbraums. Wie in den Fig. 5A, 5B und 5C gezeigt ist, teilt jede Linie (Gerade) 80 in einer Ebene die Ebene in zwei Halbräume 82 und 84. Die Halbraumauswertung bestimmt, auf welcher Seite einer Linie 80 ein bestimmter Punkt liegt. Alle Punkte auf der rechten Seite einer Linie befinden sich in einem Halbraum, während alle Punkte auf der linken Seite sich in dem anderen Halbraum befinden.
- Der Graphikprozessor 48 unterstützt drei geometrische Grundelemente: Dreiecke, konvexe Trapezoide und Geraden. Diese Grundelemente wurden wegen ihrer geometrischen Einfachheit und aufgrund der Möglichkeit, mit ihnen komplexere Grundelemente aufzubauen, ausgewählt. Kompliziertere Grundelemente wie etwa konvexe Polygone schaffen eine größere Allgemeingültigkeit, jedoch auf Kosten eines starken Anwachsens der Komplexität des Graphik-Untersystems. Da die zur Beschreibung beliebiger konvexer Polygone erforderliche Datenmenge unbeschränkt ist, ist der Umfang einer atomaren Operation für ein Graphikbaustein ebenfalls unbeschränkt. Manche Graphik-Untersysteme unterbrechen die CPU, um während der Umsetzung durch Abtastung von Polygonen neue Kanten hinzuzufügen. Dieses Schema ist nicht nur komplex, sondern in einer Mehrprozessorumgebung außerdem nicht zugelassen. Um eine effiziente Nutzung der Prozessoren zu ermöglichen, muß der Umfang einer atomaren Operation gering sein. Komplizierte Polygone können von der CPU 32 leicht und effizient schachbrettartig in Dreiecke oder Trapezoide zerlegt werden. Da drei Punkte eine Ebene definieren und mehr Punkte eine Überbestimmung ergeben, führt das Aufbrechen eines Polygons in Dreiecke im allgemeinen tatsächlich zu besseren Ergebnissen für die Glättung.
- Die zugrundeliegende Mathematik für die Halbraumgeometrie ist einfach und ihre VLSI-Implementierung kann sehr regelmäßig und effizient ausgeführt werden, jedoch liefert der Halbraum selbst kein nützliches Grundelement für 2D- oder 3D-Graphiken. Jedoch muß, wie in Fig. 5D gezeigt ist, das Innere 90 eines Dreiecks 92 betrachtet werden. Es handelt sich hier um nicht anderes als den Schnitt von drei Halbräumen 82. Das Dreieck 92 ist aus spitzen Win keln 94 und drei gemeinsamen Kanten 80 aufgebaut. Der Graphikprozessor 48 kann bestimmen, auf welcher Seite einer Kante 80 ein beliebiges Pixel 72 liegt. Er kann ein Pixel 72 in bezug auf eine Kante 80 mit '+' oder '-' markieren. Ein '+' bedeutet, daß sich ein Pixel 72 in bezug auf eine Kante 80 innerhalb eines Dreiecks 92 befindet, während ein '-' bedeutet, daß es sich außerhalb befindet. Die Bestimmung des Innenliegens eines Pixels 72 in bezug auf das gesamte Dreieck 92 besteht aus einer einfachen Prüfung des Innenliegens in bezug auf die drei Kanten 80, die als UND-Verknüpfung der Vorzeichenbits der Halbraumkomponenten-Auswertungen implementiert ist. Selbstverständlich läßt sich die Halbraumgeometrie genau so gut auf konvexe Trapezoide anwenden, die einfach der Schnitt von vier Halbräumen sind.
- Die Grundbaublöcke sind eingerichtet worden: die Matrix 70 als Einheit für den Verweis auf den Rahmenpufferspeicher 52, die Halbraumauswertungen zur Bestimmung, welche Pixel 72 in einer geometrischen Figur enthalten sind und die Ebeneauswertungen zur Bestimmung der Objekteigenschaften im Inneren der Pixel 72. Die Grundmodelle der unterstützten Geometrie sind in Ausdrücken der Halbraumgeometrie eingerichtet worden, jedoch hat noch keine Diskussion der Verwirklichung dieser geometrischen Modelle in Ausdrücken für den Verweis auf den Matrixspeicher 52 stattgefunden. Die Erzeugung von Mehrfach-Matrixverweisen zur Aufteilung einer geometrischen Figur in Ziegel wird Wegverfolgung genannt und durch die angewandte Halbraumdarstellungen vereinfacht. Die Algorithmen des Graphikprozessors 48 prüfen die Halbraumgeometrie bei jedem Matrixverweis, um zu bestimmen, in welcher Richtung die geometrische Figur verläuft, wobei angegeben wird, wo der nächste Matrixverweis sein muß. Diese Matrixbewegung wird fortgesetzt, bis die gesamte geometrische Figur in Ziegel aufgeteilt worden ist. Fig. 6 zeigt, wie die Grundmatrix 70 verwendet wird, um ein Dreieck 100 in Ziegel aufzuteilen. Die Matrix 70 wird an der Spitze 102 des Dreiecks 100 angelegt, danach nach unten und nach links längs der Linie 104 bewegt und so lange zur Rechten abgetastet, bis sie die Linie 106 schneidet. Diese Operationen werden wiederholt, bis die Linie 108 erreicht und durch die Matrix 70 abgetastet worden ist.
- Die Konstruktion geometrischer Formen bei einer gegebenen Halbraum-Auswerteeinrichtung als Grundelement ist sowohl geometrisch als auch konzeptionell attraktiv. Die Halbraumdarstellung ist ein mathematisches Modell, das an Pixelkoordinaten abgetastet wird, wobei die Darstellung zu jener des Rahmenpuffers 52 diskretisiert wird. Konzeptionell bietet dieses mathematische, mit der Pixelfrequenz abgetastete Modell eine einfache und elegante Lösung für die Aufbereitung gemeinsamer Computer-Datenbanken. Die folgende Beschreibung zeigt, daß diese konzeptionelle Einfachheit wiederum zu einer einfachen Implementierung führt, wobei eine hohe Parallelität bei relativ niedrigen Kosten geschaffen wird.
- Die zugrundeliegende Mathematik, die zur Auswertung eines Halbraums verwendet wird, basiert auf der allgemeinen Gleichung einer Geraden:
- y = mx + b
- wobei m die Steigung der Geraden ist und b der Abstand auf der Y-Achse ist.
- Die obige Gleichung ist erfüllt für Werte x und y auf der Geraden y > mx + b auf einer Seite der Gerade und y < mx + b auf der anderen Seite.
- Für eine bestimmte Gerade, die durch (x1, y1) und (x2, y2) geht, betragen die Konstanten für die Geradengleichung:
- m = dy/dx
- b = y1 - dy/dx x1
- wobei dy = y2 - y1 und dx = x2 - x1 sind.
- Diese Werte werden durch Lösen der Gruppe simultaner Gleichungen für die Unbekannten m und b gefunden:
- y1 = mx1 + b
- und
- y2 = mx2 + b
- Somit erfordert die Auswertung eines durch zwei Punkte (x1, y1) und (x2, y2) parametrisierten Halbraums die Auswertung der linearen Gleichung:
- y = dy/dx x + y1 - dy/dx x1 (1)
- Die Mathematik der obigen Diskussion wurde in einem System der reellen Zahlen dargestellt. Jedoch erfordert die Adressierung der Raster-Rahmenpuffer die Diskretisierung der reellen Zahlenwerte von x und y. Diese Diskretisierung ist als Abtastung bekannt und in Fig. 7 A gezeigt. Das Ziel einer einfachen Rastergraphik besteht in der Abtastung der Halbraumgleichung an diskreten Pixel-72- Adressen, die einen Abtastpunkt pro Pixel 72 repräsentieren. In dieser Hinsicht kann bei jedem Pixel 72 in der Graphikprozessor-48-Matrix 70 entschieden werden, ob es innerhalb oder außerhalb der geometrischen Figur liegt.
- Alternativ läßt sich, wie in Fig. 7B gezeigt ist, durch Überabtastung mittels bestimmter Antialiasing-Algorithmen der Prozentsatz an Pixeln 72, die innerhalb einer geometrischen Figur liegen, bestimmen. Werden mehrere Abstastwerte 120 aus einem Pixel 72 genommen und gemittelt, kann eine ausgezeichnete Antialiasing-Verarbeitung erzielt werden, wenn die Anzahl der Abtastwerte ausreichend groß ist. Da die Abtastfrequenz von der Mathematik unab hängig ist, können verschiedene Algorithmen dieselbe Geradengleichung bei verschiedenen Frequenzen abtasten.
- Das Erzwingen von Endpunkten zu Pixelmittelpunkten 122 liefert schlechte Ergebnisse für durch Antialiasing verarbeitete Bilder. Durch Antialiasing verarbeitete Bilder profitieren außerdem aus der Anordnung von Unterpixeln, auch wenn die Verbesserung aufgrund der geringeren Bildqualität weniger deutlich ist. Es ist sehr wichtig, daß die Endpunkte mit einer höheren Auflösung angeordnet werden können, als dies der gegenwärtige Rahmenpuffer-Speicheraufwand und die gegenwärtige Videobandbreite gestatten. Deshalb verwendet der Graphikprozessor 48 eine Festpunktnotation für die Spitzen von Polygonen und Endpunkten von Geraden. Wie in Fig. 8 gezeigt ist, wird jedes Pixel 72 in ein 8 · 8-Gitterraster aufgebrochen, wobei (0, 0) in der linken oberen Ecke 124 liegt. Dem Graphikprozessor 48 angegebene Koordinaten können als eine einer Pixel-72-Koordinate beigefügten Unterpixel-120-Position sichtbar gemacht werden. Die Koordinate (x, y) befindet sich im Pixel (x div 8, y div 8) mit einem Unterpixel-Koordinatenwert (x mod 8, y mod 8). Daten können dem Graphikprozessor 48 entweder im Unterpixel-120-Format oder im Basispixel-72-Koordinatenformat angegeben werden. Wenn das Pixel-72-Koordinatenformat verwendet wird, schiebt der Graphikprozessor 48 intern die Daten unmittelbar nach der Eingabe in den Baustein um 3 Bits nach links.
- Die Mathematik hierfür ist sehr einfach. Zurück zu Gleichung (1):
- y = dy/dx x + y1 - dy/dx x1
- Es ist anzumerken, daß diese Gleichung nicht streng an das Koordinatensystem gebunden ist. Für die Umgebung ist das Koordinatensystem, in dem die Gleichung ausgewertet wird, irrelevant: die Mathematik funktioniert dennoch.
- Folglich werden dx, dy, x1 und y1 um den Faktor 8 vergrößert, um Unterpixel-120-Koordinatenwerte zu schaffen. Zuvor ist in einem Koordinatensystem abgetastet worden, in dem jedes Pixel 72 einer Einheit entsprach, weshalb x- und y-Werte von {0, 1, 2, 3, ...} von Interesse waren. Jetzt muß, um in jedem Pixel 72 abzutasten, bei Werten von {0, 8, 16, 24, ...} abgetastet werden. Da dieses neue Koordinatensystem 8 mal größer ist, sind die Pixel 72 8 Einheiten voneinander entfernt, wobei diese Beabstandung einen Abtastwert pro Pixel ergibt. Es ist anzumerken, daß die Abtastung in der oberen linken Ecke 124 eines Pixels geschieht, an der der Unterpixel-Anteil der Adresse (0, 0) ist.
- Bei gegebener Technologie zur Auswertung eines Halbraums ist der nächste Schritt die Anwendung dieser Mathematik auf den Rahmenpuffer mittels des Graphikprozessors 48. Wie in Fig. 9 gezeigt ist, soll daran erinnert werden, daß der Graphikprozessor 48 in der Lage ist, einen 4 · 4- Bereich 130 parallel zu aktualisieren. Folglich bestimmt für jeden gegebenen 4 · 4-Bereich 130 auf dem Bildschirm die parallele Auswertung der Geradengleichung
- y = dy/dx x + y1 - dy/dx x1
- für jeden der 16 Koordinatenwerte an jedem der 16 Standorte 72 das Innenliegen in einem einzigen Auswertezeitraum. Zur Auswertung eines Halbraums über einen Bereich, der größer als 4 · 4 ist, muß die Matrix 130 über den Bereich gezogen werden, wobei dieser vollständig in Ziegel aufgeteilt wird. Wenn die Auswertung innerhalb der VRAM-Zugriffszeit durchgeführt werden kann, ist die Aktualisierung, jedoch nicht die Geschwindigkeit des Algorithmus durch den Speicherzugriff beschränkt.
- Da eine Rastereinrichtung inhärent an diskreten Werten abtastet, geschieht die Auswertung eines Halbraums durch Auswertung der Geradengleichung an jedem Pixel 72 in dem Rahmenpuffer 52. In der Praxis werden nur die Pixel, die dem gewünschten Ergebnis am nächsten liegen, ausgewertet. Trotz der einfachen Konzeption ist nicht ohne weiteres zu sehen, daß eine VLSI-Implementierung der Halbraumauswertung preiswert und effizient durchgeführt werden kann. Die folgende Beschreibung legt eine sehr einfache und effiziente Technik zur parallelen Auswertung einer Geradengleichung für diskrete Werte dar.
- Ein logischer Startpunkt ist durch die Geradengleichung gegeben:
- y = mx + b
- Für eine Gerade durch (x1, y1) und (x2, y2) sind die Konstanten:
- m = dy/dx
- b = y1 - dy/dx x1
- wobei dy = y2 - y1 und dx = x2 - x1 sind.
- Folglich ist
- y = dy/dx x + y1 - dy/dx x1
- y - dy/dx x - (y1 - dy/dx x1) = 0
- Da Divisionen numerisch aufwendig sind und einen Verlust an Genauigkeit mitsichbringen, werden beide Seiten mit dx multipliziert.
- dxy - dydx - dxy1 + dyx1 = 0
- Die linke Seite der Gleichung ist 0, wenn (x, y) auf der Gerade liegt, positiv, wenn (x, y) auf einer Seite der Gerade liegt, und negativ, wenn (x, y) auf der anderen Seite liegt. Durch ausschließliches Auswerten des Vorzeichens der Gleichung an jedem Standort in der 4 · 4-Matrix kann der Graphikprozessor 48 für jedes Pixel 72 das Innenliegen bestimmen. Jedoch ist die durch eine VLSI- Implementierung gedachte Einfachheit noch nicht erreicht, da die Berechnung von dxy und dyx durch das Beinhalten zweier Multiplikationen und einer Addition an jedem Standort noch zu schwierig ist. Dies ist sowohl bezüglich des Umfangs als auch bezüglich der Ausführungszeit unzulässig aufwendig. Mit einigen einfachen Substitutionen können die Multiplikationen von der Pro-Pixel-Stufe zu der Pro-Halbraum-Stufe verschoben werden, wodurch die Pixel-Auswertungsstufe bei einer einzigen Addition mit Vorzeichenvergleich belassen wird.
- Nun soll (originx, originy) den Ursprung des Bereichs 130 repräsentieren. Außerdem soll (offsetx, offsety) der Versatz von diesem Ursprung sein, so daß x = originx + offsetx und y = originy + offsety sind.
- Durch Substitution von x und y ergibt sich:
- dx(originy + offsety) - dy(originx + offsetx) - dxy1 + dyx1 = 0
- dxoriginy + dxoffsety - dyoriginx - dyoffsetx - dxy1 + dyx1 = 0
- Durch Umordnen ergibt sich die endgültige Gleichung:
- dxoffsety - dyoffsetx = -dxoriginy + dyoriginx + dxy1 - dyx1
- dxoffsety - dyoffsetx = (2)
- - dxoriginy + dyoriginx + (3)
- dxy1 - dyx1 (12)
- Es ist sowohl zu beachten, wann die Auswertung der verschiedenen Ausdrücke geschieht, als auch die Dauer ihrer Gültigkeit. Einige Ausdrücke werden einmal für den gesamten Halbraum berechnet und einige werden einmal pro Einzelfall der Matrix 130 berechnet (d. h., wenn die Matrix 130 bewegt wird, muß der Ausdruck neu ausgewertet werden). Kein Ausdruck wird einmal pro Ort ausgewertet. Somit kann ein hoher Grad an Parallelität bei sehr geringen Kosten realisiert werden. Die Werte von dx, dy, x1 und y1 sind für die Definition eines geometrischen Halbraums im wesentlichen konstant, was dadurch angegeben wird, daß (4) einmal pro Halbraum ausgewertet wird und von der Position in der Matrix 130 oder der Bewegung der Matrix 130 unberührt bleibt.
- Offsetx und offsety sind positive ganze Zahlen (0, 8, 16, 24), die x- und y-Versätze vom Ursprung des Bausteins angeben, dessen Werte in den Baustein eingearbeitet sind. Die Werte sind (0, 8, 16, 24) anstatt (0, 1, 2, 3), da das Gitterraster voraussetzt, daß die Positionierung und Abtastung der Unterpixel einmal pro Pixel geschieht. Somit wird (2) ebenfalls einmal pro Pixel berechnet. Ferner kann seine Auswertung zu aufeinanderfolgenden Additionen von dx und dy vereinfacht werden, da seine Werte regelmäßig beabstandet sind. Der Ausdruck (2) enthält die einzigen Werte, die von der Position in der Matrix abhängig sind.
- Der einzige Ausdruck, der von der Position in der Matrix abhängt, ist (3), dxoriginy - dyoriginx. Dies beläßt nur zwei Multiplikationen und eine Addition pro Fall der Matrix, im Vergleich zu zwei Multiplikationen und einer Addition pro Standort 72 in der Matrix 130.
- Dieser Abschnitt beschreibt eine einfache VLSI-Schaltung zur Implementierung des Algorithmus aus dem vorhergehenden Abschnitt. Die Geradengleichung
- dxoffsety - dyoffsetx = -dxoriginy + dyoriginx + dxy1 - dyx1
- dxoffsety - dyoffsetx = (2)
- -dxoriginy + dyoriginx + (3)
- dxy1 - dyx1 (4)
- hat nur einen Unterausdruck, der für jeden Standort 72 in der Matrix 130 verschieden ist: den Ausdruck (2). Da dieser Ausdruck für alle 16 Permutationen der zugelassenen Werte für offsetx und offsety berechnet werden muß, scheint dies die aufwendigste Berechnung zu sein. Glücklicherweise liefert die Regelmäßigkeit des diskreten Gitterrasters 130 eine sehr effiziente Implementierung.
- Die Tabellen I und II veranschaulichen die Regelmäßigkeit der für die Unterausdrücke von (2), dxoffsety und dyoffsetx, benötigten Werte. Tabelle I dx offsety Tabelle II dy offsetx
- Die Erzeugung dieser Tabellen ist einfach. Jeder Wert in der Matrix 70 (Fig. 10) ist einfach gleich dem 8-Fachen von dx oder dy, das als Verschiebung um 3 Stellen nach rechts implementiert und zum vorhergehenden Wert in der Matrix hinzugezählt wird. Sobald diese Werte erhalten worden sind, läßt sich (2) durch eine einzige Subtraktion, dxoffsety - dyoffsetx, an jedem der 16 Standorte 72 berechnen. Die Standorte werden seriell mit einer sehr effizienten systolischen Matriximplementierung ausgefüllt. Die Ergebnisse dieser Subtraktion müssen, wie in Fig. 10 gezeigt ist, in jedem der 16 Standorte 140 gespeichert werden.
- Die anderen Ausdrücke in der Geradengleichung sind vom Versatz innerhalb der Matrix unabhängig. Die Summe (3) + (4) wird Halbraumkonstante genannt. Vorausgesetzt, daß (2) aus der Halbraumgleichung, wie gezeigt, an jedem der Standorte 140 gespeichert worden ist, ergibt das Vorzeichen der Summe aus dem Standortwert und der Halbraumkonstante die Seitenlage des Pixels 72 bezüglich der Linie 80 (Fig. 5A-5D). Da die Halbraumkonstante von den Standortversatzkoordinaten unabhängig ist, wird zu jedem Standort derselbe Wert addiert. Somit ist die VLSI-Struktur 150 (Fig. 11) sehr einfach. Ein einziger n-Bit-Bus 152 tastet die Werte an jedem Standort 140 ab, die zu den an den Standorten 140 gespeicherten Werten addiert werden. Da das Vorzeichenbit das einzige interessierende Bit ist, genügt es, einen Wertevergleicher 154 statt eines Addierers zu verwenden. Somit ist jeder Standort 140 mit einem Wertevergleicher 154 und einem Register 156 zum Speichern der Standort-140-Werte versehen. Der Komparator 154 bestimmt, in welchem Halbraum jedes der Pixel 72 liegt. Fig. 11 zeigt ein Blockdiagramm der VLSI-Zelle für jeden Standort 140 in der Matrix. Das Register wird von dem Bus 152 geladen, wenn der Halbraum initialisiert wird. Jedesmal, wenn die Matrix 70 bewegt wird, werden die Register-156-Inhalte mit der Halbraumkonstante 158 auf dem Bus 152 verglichen. Die Ausgangssignale der Schaltungen bei 160 sind die Ergebnisse der Vergleiche.
- Fig. 11 zeigt die Ansammlung 170 von Standortzellen 160, die die VLSI-Struktur zur Durchführung der parallelen Auswertung eines Halbraums an jedem der 16 Standorte 140 in der Matrix 70 bilden. Diese Struktur wird als Halbraum-Auswerteeinrichtung oder Halbraumturm bezeichnet. Die Spalte von Drähten des Busses 152 repräsentiert den einzigen Wert, (3) + (4), der zu jedem der gespeicherten Werte an den Standorten 140 addiert wird. Jeder Standort 140 enthält einen Komparator und ein Register, wie in Fig. 11 gezeigt ist. Die von jedem Standort 140 kommenden Linien 160 sind Boolesche Werte, die angeben, in welchem Halbraum die Standortpixel 72 liegen.
- Bei einer gegebenen Schaltung 140 für die Halbraum-Auswerteeinrichtung ist eine Trapezoid-Auswerteschaltung, wie sie in Fig. 12 gezeigt ist, trivial. Dieselbe Schaltung wird viermal verwendet, einmal für jede Kante des Trapezoids. Die Booleschen Ergebnisse an den jeweiligen Standorten 140 in vier Halbraum-Auswerteeinrichtungen werden durch UND verknüpft, um das Innenliegen jedes Pixels 72 zu bestimmen. Wenn sich ein Pixel 72 in bezug auf alle vier Kanten in dem Trapezoid befindet, dann liegt es innerhalb des Trapezoids, andernfalls liegt es außerhalb. Ähnlich verwendet die Geraden-Auswerteeinrichtung die vier Halbraum-Auswerteeinrichtungen zur Erlangung des oben dargestellten Geradenmodells. Das Dreieckmodell erfordert nur drei der Auswerteeinrichtungen, wodurch sich die vierte erübrigt. Fig. 12 zeigt die Wechselwirkung der einzelnen Halbraumtürme 170. Die Booleschen Drähte 160, die über die Türme 170 verlaufen, sind zur Erzeugung des endgültigen Ergebnisses fest durch UND verknüpft.
- Um die Eins-zu-eins-Entsprechung zwischen den Booleschen Drähten 160 an jedem Standort und den Pixeln in dem Rahmenpuffer 52 zu erreichen, führen die Drähte direkt zu Anschlußflecken auf dem Graphikprozessor 48, die zu Schreib-Freigabeleitungen (write enables) für die einzelnen Speicherbausteine werden. Da die 16 Pixel in 16 verschiedenen Speicherbausteinen liegen, liefern die Drähte eine individuelle Steuerung der Pixel. Eine '1' gibt den Speicherbaustein für das Schreiben frei, während eine '0' diesen sperrt.
- Da das Gebiet der Computergraphik größer wird, verstärkt sich die Nachfrage nach visuellem Realismus. Techniken wie etwa Strahlverfolgung, Texturabbildung, Antialiasing- Verarbeitung, Transmission (transparency) und viele andere sind mit Erfolg angewandt worden, um realistische Bilder zu erzeugen. Diese Techniken waren vorwiegend software-orientiert oder setzten eine sehr teure Spezial- Hardware ein. Die geometrische Einfachheit und die mächtige Rahmenpuffer-Aktualisierungstechnologie in dem Graphikprozessor 48 verschafft eine gute Gelegenheit, einige der weiterentwickelten Aufbereitungstechniken zur Hardware hin zu verlagern.
- Die an der Umsetzung einer geometrischen Form von einer kontinuierlichen geometrischen Darstellung in eine diskrete Pixeldarstellung beteiligte Abtastung ruft Mängel wie etwa unscharfe Kanten oder verlorene Einzelheiten hervor. Das Problem wird als Alias-Effekt bezeichnet und durch eine Unterabtastung der geometrischen Figur hervorgerufen. In Standard-Rastergraphiken werden Geraden und Polygone nur an diskreten Gitterrasterstellen oder Pixeln abgetastet. Der Alias-Effekt ist besonders deutlich auf gering auflösenden Einrichtungen, in denen die Abtastfrequenz niedriger ist. So wie die Auflösung ansteigt, nimmt die Fähigkeit des menschlichen Auges ab, den Alias-Effekt wahrzunehmen. Unabhängig von der Anzeigeauflösung kann die Abtastung an diskreten Gitterrasterstellen den Alias- Effekt niemals beseitigen. Jedoch kann es die menschliche Fähigkeit, diesen zu erfassen, herabsetzen. Dieser Abschnitt beschreibt die Antialiasing-Technik, die durch den Graphikprozessor 48 angewandt wird. Die Beschreibungen handeln nur von Dreiecken, jedoch funktioniert die Technik mit allen unterstützten geometrischen Grundelementen.
- Um den Alias-Effekten zu begegnen, wendet der Graphikprozessor 48 eine Technik an, die als Überabtastung bekannt ist. Die Überabtastung beinhaltet die Abtastung bei einer höheren Auflösung, als sie von der Anzeige-Hardware unterstützt wird, sowie die Mittelwertbildung entsprechend der Pixelauflösung. Da der Rahmenpufferspeicher 52 eine wertvolle Einrichtung ist, wäre es ein Fehler, eine ganze Szene überabzutasten und dann den Mittelwert zu bilden. Die Abtastung des 16-Fachen der Anzeigeauflösung würde das 16-Fache des Rahmenpufferspeichers 52 erfordern. Eine preiswertere Lösung besteht darin, während des Rasterns eines Polygons 16 Abtastwerte innerhalb eines Pixels 72 zu nehmen (Fig. 13) und vor dem Schreiben in den Rahmenpuffer den Mittelwert der 16 Abtastwerte zu bilden. Im Normalmodus (Alias-Modus) verwendet der Graphikprozessor 48 die 16 Standorte in dem Baustein, um 16 Pixel 72 abzutasten. Beim Zeichnen eines Dreiecks oder einer Geraden im Antialias-Modus verwendet der Graphikprozessor 48 die 16 Standorte, um an 16 Stellen 120 innerhalb eines einzigen Pixels 72 abzutasten. Es ist anzumerken, daß die Leistung für die Antialiasing-Verarbeitung geringer ist, da die volle Speicherbandbreite nicht erreicht wird.
- Dies harmoniert sehr gut mit dem bereits dargestellten Algorithmus. Der Algorithmus für die Antialiasing-Verarbeitung verwendet dieselbe Kantengleichung, die oben dargestellt worden ist:
- dxoffsety - dyoffsetx = -dxoriginy + dyoriginx + dxy1 - dyx1
- dxoffsety - dyoffsetx =
- -dxoriginy + dyoriginx +
- dxy1 - dyx1
- Da die Koordinaten gegenüber der Pixelauflösung 8-fach vergrößert sind, liefert die Auswertung dieser Gleichung bei Werten für offsetx und offsety von {0, 2, 4, 6} 16 gleich beabstandete Abtastwerte innerhalb eines einzelnen Pixels 72. Die Farbe des Pixels 72 ist die Summe der Farben jener Abtastpunkte, die innerhalb des Polygons liegen, geteilt durch die Gesamtzahl der genommenen Abtastwerte (16). Da die Gesamtzahl der Abtastwerte eine Potenz von 2 ist, reduziert sich die Division auf ein arithmetisches Verschieben. Somit lautet die Formel für die Berechnung eines einer Antialiasing-Verarbeitung unterworfenen Pixelwertes:
- Die beschriebene Antialiasing-Verarbeitung funktioniert hervorragend bei einem einzelnen Dreieck, jedoch soll der Fall zweier Dreiecke mit gemeinsamer Kante betrachtet werden. Das erste Dreieck wird der Antialiasing-Verarbeitung unterzogen und in den Rahmenpuffer 52 geschoben. Anschließend wird das zweite Dreieck der Antialiasing- Verarbeitung unterzogen und in den Rahmenpuffer 52 geschoben. Die Pixel längs der Kante, die in beiden Dreiekken liegt, besitzen nur die Werte des zweiten Dreiecks. Jedoch würden die Farbwerte aus dem ersten Dreieck bestehen bleiben und mit den Farbwerten aus dem zweiten Dreieck vermischt werden. Trotzdem gibt es noch nicht genügend Informationen bei der Aufbereitung des zweiten Dreiecks, um die Farbmischung korrekt zu handhaben. Fig. 14 zeigt zwei aneinandergrenzende Dreiecke 180 und 182 mit Pixeln 72 längs der gemeinsamen, mit '+' markierten Kante 184.
- Es ist notwendig, einen besonderen Anteil der Pixelinformationen zu speichern, der den Prozentsatz eines Pixels angibt, der überdeckt ist. Dies wird gewöhnlich als α-Kanal oder Überdeckungskanal bezeichnet. Der Graphikprozessor 48 unterhält einen 8-Bit-α-Kanal. Eine 0 auf dem α-Kanal bei einem Pixel gibt an, daß das Pixel leer ist. Eine 255 auf dem α-Kanal gibt an, daß das Pixel vollständig überdeckt ist. Pixel an den Grenzen des Polygons besitzen im allgemeinen einen beliebigen Wert zwischen 0 und 255, der angibt, daß sie teilweise überdeckt sind. Der α-Wert für ein Pixel in einem Dreieck ist durch die Anzahl der Unterpixel-Abtastwerte innerhalb des Dreiecks, geteilt durch die Gesamtzahl der genommenen Unterpixel-Abtastwerte bestimmt. Dies ist eine Zahl zwischen 0 und 1, die anschließend auf den Bereich zwischen 0 und 255 vergrößert wird. Die eigentliche Berechnung von α besteht einfach im Bestimmen der Anzahl von Abtastwerten innerhalb des Dreiecks, die mit 16 multipliziert wird, wobei der Wert bei 255 abgefangen wird. Der Wert wird bei 255 abgefangen, da, wenn alle 16 Abtastwerte in dem Dreieck liegen, die Multiplikation aufgrund der dualen Darstellung von 1 in dem Festpunkt- Zahlensystem gerade 256 ergibt.
- Durch Antialiasing verarbeitete Dreiecke müssen von vorn nach hinten sortiert und in dieser Reihenfolge aufbereitet werden. Das Grundmuster besteht darin, daß die Aufbereitungseinrichtung zu einem Pixel hinzufügt, bis dieses aufgefüllt ist, und voraussetzt, daß alle weiteren Dreiecke hinter diesem Pixel versteckt sind und nicht dem Rahmenpuffer 52 hinzugefügt werden. Somit löst der α-Kanal im Zusammenspiel mit der x-Sortierung versteckte Flächen auf. Beim Hinzufügen zum Rahmenpuffer 52 werden die folgenden Formeln verwendet:
- inew = ifb + MIN(1 - αfb, αtri)itri
- αnew = αfb + MIN(1 - αfb, αtri)r
- wobei:
- αfb = momentaner α-Wert im Rahmenpuffer
- ifb = momentaner Intensitätswert im Rahmenpuffer
- αtri = α-Wert für neues. Dreieck (der auf der Anzahl der Unterpixel im Dreieck basiert)
- itri = Intensitätswert von neuem Dreieck
- αnew = α-Wert, der in den Rahmenpuffer einzugeben ist
- inew = Intensitätswert, der in den Rahmenpuffer einzugeben ist.
- Die obigen Formeln verwenden normierte α-Werte zwischen 0 und 1.
- Es ist anzumerken, daß diese Lösung nicht so robust wie der bei Lucas-Film verwendete A-Puffer-Algorithmus für einer Antialiasing-Verarbeitung unterworfene versteckte Flächen ist, jedoch in einer breiten Schicht von Anwendungen eine gute Leistung aufweist und hardwaremäßig viel einfacher zu implementieren ist. Der Graphikprozessor-48- Algorithmus ist einfacher, und die Speicheranforderungen sind viel geringer - der von dem A-Puffer von Lucas-Film geforderte Speicherplatz ist durch die Komplexität der Szene sowie den Umfang des Rahmenpuffers beschränkt. Die Speicheranforderungen des Graphikprozessors 48 sind nur durch den Umfang des Rahmenpuffers 52 beschränkt. Seine Einschränkungen in bezug auf den A-Puffer sind seine Unfähigkeit, zu erkennen, welche Anteile eines Pixels im voraus überdeckt waren, und seine Unfähigkeit, Ausgaben versteckter Flächen zwischen Polygonen, die sich in z überlappen, aufzulösen. Diese Einschränkungen werden für eine große Anzahl von Anwendungen, die aus einer Antialiasing-Verarbeitung unterworfenen Polygonen Nutzen ziehen können, als geringfügig angesehen.
- Ferner sollte Fachleuten deutlich geworden sein, daß verschiedene Änderungen in der Form und in Einzelheiten der gezeigten und beschriebenen Erfindung ausgeführt werden können. Es ist beabsichtigt, daß solche Änderungen im Umfang der hier beigefügten Ansprüche enthalten sind.
Claims (20)
1. System zum Zeichnen von einer
Antialiasing-Verarbeitung unterworfenen Polygonen, mit einem
Graphikprozessor (48), der ein Programm zum Berechnen von Werten einer
Bildmatrix (70) enthält, wobei die Bildmatrix zur
Abtastung durch das Programm wahlweise so rekonfigurierbar
ist, daß sie entweder mehrere Pixel oder mehrere
Unterpixel in einem der Pixel enthält, wobei Linien des Polygons
mit dem Programm bestimmbar sind, indem eine Ebene der
Anzeigeoberfläche durch die Linien in geometrische
Halbräume unterteilt wird und indem die Halbräume durch die
Seite der Linien, auf der sich die Halbräume befinden,
kategorisiert werden, wobei der Graphikprozessor einen an
ihn angeschlossenen Rahmenpuffer (Frame-Puffer) (52),
mehrere Matrixregister (156) und mehrere Komparatoren
(154) enthält, wobei jedes der mehreren Matrixregister an
einen der mehreren Komparatoren angeschlossen ist, wobei
die Register und Komparatoren die durch das Programm
berechneten Werte speichern bzw. vergleichen, um zu
bestimmen, in welchem Halbraum sich die Pixel oder
Unterpixel in der Bildmatrix befinden.
2. System zum Zeichnen von einer
Antialiasing-Verarbeitung unterworfenen Polygonen nach Anspruch 1, in dem
die Polygone mit dem Programm einer
Antialiasing-Verarbeitung unterworfen werden können, indem bestimmt wird,
welcher Anteil der Unterpixel innerhalb jedes Pixel sich
in den Polygonen befindet und indem eine Farbe jedes
Pixel auf der Grundlage des Anteils festgelegt wird.
3. System zum Zeichnen von einer
Antialiasing-Verarbeitung unterworfenen Polygonen nach Anspruch 2, in dem
die Polygone, die eine gemeinsame Kante besitzen, durch
das Programm einer Antialiasing-Verarbeitung längs der
gemeinsamen Kante in jedem Polygon, das eine gemeinsame
Kante besitzt, die vom anderen Polygon teilweise
überdeckt ist, unterworfen werden können, wobei die Farben
der Pixel längs der gemeinsamen Kante auf der Grundlage
des Ausmaßes der Teilüberdeckung gemischt werden.
4. System zum Zeichnen von einer
Antialiasing-Verarbeitung unterworfenen Polygonen nach Anspruch 3, in dem
die Polygone Dreiecke sind und die Farben der Pixel längs
der gemeinsamen Kante unter Verwendung einer Beziehung
gemischt werden, die äquivalent ist zu:
inew = + MIN (1 - αfb, αtri)itri
αnew = αfb + MIN (1 - αfb, αtri),
wobei:
αfb = momentaner α-Wert im Rahmenpuffer
itb = momentaner Intensitätswert im
Rahmenpuffer
αtri = α-Wert für neues Dreieck (der auf der
Anzahl der Unterpixel im Dreieck basiert)
itri = Intensitätswert von neuem Dreieck
αnew = α-Wert, der in den Rahmenpuffer
einzugeben ist
inew = Intensitätswert, der in den Rahmenpuffer
einzugeben ist.
5. System zum Zeichnen von einer
Antialiasing-Verarbeitung unterworfenen Polygonen nach Anspruch 1, wobei
die mehreren Matrixregister und Komparatoren im
Graphikprozessor in Gruppen angeordnet sind, eine Gruppe für
jede Linie des Polygons, wobei jedes Register jeder
Gruppe ein Ausgangssignal von einem der Komparatoren
erzeugt, wobei die Ausgangssignale durch den
Graphikpro
zessor kombiniert werden, um zu bestimmen, ob sich die
Pixel innerhalb der Polygone befinden.
6. System zum Zeichnen von einer
Antialiasing-Verarbeitung unterworfenen Polygonen nach den Ansprüche 1, 2,
3 oder 5, wobei der Graphikprozessor ferner eine
Einrichtung zum Abtasten des Rahmenpuffers mit der Bildmatrix
enthält, um die Polygone durch Bewegen der Bildmatrix von
einem ersten Ort auf einer ersten Linie der Polygone in
einer ersten Richtung, bis eine zweite Linie der Polygone
angetroffen wird, durch Bewegen in einer zweiten Richtung
längs der ersten Linie und dann durch Bewegen in der
ersten Richtung, bis die zweite Linie angetroffen wird,
sowie durch Wiederholen, bis eine dritte Linie der
Polygone angetroffen wird, zu zeichnen.
7. System zum Zeichnen von Polygonen nach
irgendeinem der vorangehenden Ansprüche, in dem der
Graphikprozessor eine Einrichtung enthält zum Bestimmen, welche
Pixel sich innerhalb der Polygone befinden, indem die
Kategorisierung der Seite der Linien, auf der sich die
Halbräume befinden, logisch kombiniert wird.
8. System zum Zeichnen von einer
Antialiasing-Verarbeitung unterworfenen Polygonen nach Anspruch 7, in dem
das Programm im Graphikprozessor die Linien der Polygone
bewertet, indem es eine lineare Gleichung bewertet, die
äquivalent ist zu:
y = dy/dx x + y1 - dy/dx x1
wobei x und y Koordinaten auf einer x-Achse bzw. auf
einer y-Achse sind, x1 und y1 Inkrementwerte der
Koordinaten x bzw. y sind und dy/dx die Ableitung von y nach x
ist, die die Änderungsrate der y-Werte bei einer Änderung
der x-werte repräsentiert, wobei die Ableitung dy/dx für
die lineare Gleichung eine Konstante repräsentiert.
9. System zum Zeichnen von einer
Antialiasing-Verarbeitung unterworfenen Polygonen nach Anspruch 8, wobei
das Programm im Graphikprozessor die lineare Gleichung
durch Bestimmen der folgenden Beziehung bewertet:
dx (offsety) - dy (offsetx),
wobei offsetx, offsety ein Pixel- oder ein Unterpixel-
Versatz gegenüber einem Ursprung der Bildmatrix sind und
dx(offsety) und dy(offsetx) die Ableitungen von
x(offsety) bzw. y(offsetx) sind.
10. System zum Zeichnen von einer
Antialiasing-Verarbeitung unterworfenen Polygonen nach irgendeinem
vorangehenden Anspruch, in dem der Graphikprozessor eine
Einrichtung zum Aktualisieren der Register in einer einzigen
parallelen Operation enthält.
11. System zum Zeichnen von einer
Antialiasing-Verarbeitung unterworfenen Polygonen nach irgendeinem
vorangehenden Anspruch, in dem der Graphikprozessor eine
Einrichtung enthält, die bestimmt, welcher Anteil der
Unterpixel innerhalb jedes Pixel innerhalb der Polygone liegt,
und die eine Farbe jedes Pixel auf der Grundlage des
Anteils setzt.
12. System zum Zeichnen von einer
Antialiasing-Verarbeitung unterworfenen Polygonen nach Anspruch 1, in dem
das Programm ein Mittel enthält, das Polygone mit einer
gemeinsamen Kante einer Antialiasing-Verarbeitung
unterwirft, indem die Pixel längs der gemeinsamen Kante in
jedem Polygon, dessen gemeinsame Kante durch das andere
Polygon teilweise überdeckt wird, verarbeitet wird und in
dem die Farben der Pixel längs der gemeinsamen Kante auf
der Grundlage des Ausmaßes der Teilüberdeckung gemischt
werden.
13. Verfahren zum Zeichnen von einer Antialiasing-
Verarbeitung unterworfenen Polygonen, mit den folgenden
Schritten:
Vorsehen eines Graphikprozessors (48), der ein
Programm zum Berechnen von Werten einer Bildmatrix
enthält;
Berechnen von Werten der Bildmatrix (70);
Vorsehen mehrerer Register (156) und mehrerer
Komparatoren (154) im Graphikprozessor, wobei jedes der
mehreren Register an einen der mehreren Komparatoren
angeschlossen ist, wobei die Register und Komparatoren
die durch das Programm berechneten Werte speichern und
vergleichen;
wahlweises Konfigurieren der Bildmatrix durch
Abtasten durch das Programm, so daß sie entweder mehrere
Pixel oder mehrere Unterpixel innerhalb eines der Pixel
enthält;
Berechnen von Werten der so konfigurierten
Bildmatrix; und
Vergleichen der berechneten Werte, um
festzustellen, ob die Pixel oder Unterpixel in der Bildmatrix
innerhalb der Polygone liegen, einschließlich
einer Verarbeitung von Linien der Polygone durch
Teilen einer Ebene einer Anzeigeoberfläche durch die
Linien in geometrische Halbräume und durch Kategorisieren
der Halbräume durch die Seite der Linien, auf der sich
die Halbräume befinden; und
Aktualisieren der Pixel oder Unterpixel in der
Bildmatrix in paralleler Weise.
14. Verfahren nach Anspruch 13, ferner mit den
folgenden Schritten:
Anordnen der mehreren Register und Komparatoren
in Gruppen, eine Gruppe für jede Linie des Polygons; und
Kombinieren der Ausgangssignale von den
Komparatoren, um zu bestimmen, ob die Pixel oder Unterpixel in
der Bildmatrix innerhalb der Polygone liegen.
15. Verfahren nach Anspruch 13 oder Anspruch 14,
ferner mit den folgenden Schritten:
Vorsehen eines Rahmenpuffers (52) zum Speichern
von Pixeln; und
Abtasten des Rahmenpuffers mit der Bildmatrix, um
die Polygone durch Bewegen der Bildmatrix von einem
ersten Ort auf einer ersten Linie der Polygone in einer
ersten Richtung, bis eine zweite Linie der Polygone
angetroffen wird, durch Bewegen in einer zweiten Richtung
längs der ersten Linie und dann durch Bewegen in der
ersten Richtung, bis die zweite Linie angetroffen wird,
sowie durch Wiederholen, bis eine dritte Linie der
Polygone angetroffen wird, zu zeichnen.
16. Verfahren nach irgendeinem der Ansprüche 13, 14
oder 15, ferner mit den folgenden Schritten:
Bewerten der Linien der Polygone durch Bewerten
einer linearen Gleichung, die äquivalent ist zu
y = dy/dx x + y1 - dy/dx x1
wobei x und y Koordinaten auf einer x-Achse bzw. auf
einer y-Achse sind, x1 und y1 Inkrementwerte der
Koordinaten x bzw. y sind und dy/dx die Ableitung von y nach x
ist, die die Änderungsrate der y-werte bei einer Änderung
der x-werte repräsentiert, wobei die Ableitung dy/dx für
die lineare Gleichung eine Konstante repräsentiert.
17. Verfahren nach Anspruch 16, ferner mit dem
folgenden Schritt:
Bewerten der linearen Gleichung durch Bestimmen
der folgenden Beziehungen:
dx (offsety) - dy (offsetx),
wobei offsetx, offsety ein Pixel- oder ein Unterpixel-
Versatz gegenüber einem Ursprung der Bildmatrix sind und
dx(offsety) und dy(offsetx) die Ableitungen von
x(offsety) bzw. y(offsetx) sind.
18. Verfahren nach irgendeinem der Ansprüche 13 bis
17, ferner mit dem folgenden Schritt:
Bestimmen, welcher Anteil der Unterpixel
innerhalb jedes Pixel in den Polygonen liegt, und Festlegen
einer Farbe jedes Pixel auf der Grundlage des Anteils.
19. Verfahren nach irgendeinem der Ansprüche 13 bis
17, ferner mit dem folgenden Schritt:
Ausführen einer Antialiasing-Verarbeitung für
Polygone, die eine gemeinsame Kante besitzen, indem die
Pixel längs einer gemeinsamen Kante in jedem Polygon,
dessen gemeinsame Kante durch das andere Polygon
teilweise überdeckt wird, verarbeitet werden und indem die
Farben der Pixel längs der gemeinsamen Kante auf der
Grundlage des Ausmaßes der Teilüberdeckung gemischt
werden.
20. Verfahren nach Anspruch 19, ferner mit dem
folgenden Schritt:
Mischen der Farben der Pixel längs der
gemeinsamen Kante zweier Polygone, die Dreiecke sind, unter
Verwendung einer Beziehung, die äquivalent ist zu
inew = + MIN (1 - αfb, αtri) itri
αnew = αfb + MIN (1 - αfb, αtri),
wobei:
αfb = momentaner α-Wert im Rahmenpuffer
ifb = momentaner Intensitätswert im
Rahmenpuffer
αtri = α-Wert für neues Dreieck (der auf der
Anzahl der Unterpixel im Dreieck basiert)
itri = Intensitätswert von neuem Dreieck
αnew = α-Wert, der in den Rahmenpuffer
einzugeben ist
inew = Intensitätswert, der in den Rahmenpuffer
einzugeben ist.
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US43835689A | 1989-11-17 | 1989-11-17 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE69032932D1 DE69032932D1 (de) | 1999-03-18 |
DE69032932T2 true DE69032932T2 (de) | 1999-09-16 |
Family
ID=23740329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE69032932T Expired - Lifetime DE69032932T2 (de) | 1989-11-17 | 1990-11-15 | System und Verfahren zum unverfälschten Polygonenzeichnen |
Country Status (5)
Country | Link |
---|---|
US (1) | US5287438A (de) |
EP (1) | EP0430501B1 (de) |
JP (1) | JPH03212775A (de) |
CA (1) | CA2030022A1 (de) |
DE (1) | DE69032932T2 (de) |
Families Citing this family (93)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0464907B1 (de) * | 1990-06-29 | 1996-10-09 | Philips Electronics Uk Limited | Bilderzeugung |
JP2634127B2 (ja) * | 1991-09-25 | 1997-07-23 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・ディスプレイ・システム及び方法 |
JP3462566B2 (ja) | 1994-04-08 | 2003-11-05 | 株式会社ソニー・コンピュータエンタテインメント | 画像生成装置 |
JPH07282270A (ja) * | 1994-04-08 | 1995-10-27 | Sony Corp | 画像生成方法および装置 |
EP0693737A3 (de) * | 1994-07-21 | 1997-01-08 | Ibm | Verfahren und Apparat zum Verwalten der Aufgaben in einem Mehrprozessorsystem |
JP2637920B2 (ja) * | 1994-08-11 | 1997-08-06 | インターナショナル・ビジネス・マシーンズ・コーポレイション | コンピュータ・グラフィック・システム及びフレーム・バッファ使用方法 |
US6201528B1 (en) | 1994-11-16 | 2001-03-13 | International Business Machines Corporation | Anti-aliased inking for pen computers |
US5649173A (en) * | 1995-03-06 | 1997-07-15 | Seiko Epson Corporation | Hardware architecture for image generation and manipulation |
US5870097A (en) * | 1995-08-04 | 1999-02-09 | Microsoft Corporation | Method and system for improving shadowing in a graphics rendering system |
US5852443A (en) * | 1995-08-04 | 1998-12-22 | Microsoft Corporation | Method and system for memory decomposition in a graphics rendering system |
US5949428A (en) * | 1995-08-04 | 1999-09-07 | Microsoft Corporation | Method and apparatus for resolving pixel data in a graphics rendering system |
US5808617A (en) * | 1995-08-04 | 1998-09-15 | Microsoft Corporation | Method and system for depth complexity reduction in a graphics rendering system |
US5864342A (en) * | 1995-08-04 | 1999-01-26 | Microsoft Corporation | Method and system for rendering graphical objects to image chunks |
US5886701A (en) * | 1995-08-04 | 1999-03-23 | Microsoft Corporation | Graphics rendering device and method for operating same |
US5990904A (en) * | 1995-08-04 | 1999-11-23 | Microsoft Corporation | Method and system for merging pixel fragments in a graphics rendering system |
US5977977A (en) * | 1995-08-04 | 1999-11-02 | Microsoft Corporation | Method and system for multi-pass rendering |
JP2803630B2 (ja) * | 1996-04-22 | 1998-09-24 | 日本電気株式会社 | 図形処理方法および装置 |
WO1998055965A1 (en) * | 1997-06-04 | 1998-12-10 | Oak Technology, Inc. | Apparatus and method for optimizing memory usage while processing graphics images |
US6057855A (en) * | 1997-07-02 | 2000-05-02 | Hewlett-Packard Company | Method and apparatus for providing polygon pixel sub-sample information using incremental means |
US7142224B2 (en) * | 1997-07-10 | 2006-11-28 | Yamaha Corporation | Polygon drawing apparatus and method, and storage medium for implementing the same method |
US6097397A (en) * | 1997-11-20 | 2000-08-01 | Real 3D, Inc. | Anisotropic texture mapping using silhouette/footprint analysis in a computer image generation system |
US6292192B1 (en) * | 1998-01-09 | 2001-09-18 | Silicon Graphics, Inc. | System and method for the direct rendering of curve bounded objects |
US6483504B1 (en) * | 1998-02-17 | 2002-11-19 | Sun Microsystems, Inc. | Graphics system having a super sampled-sample buffer with efficient storage of sample position information |
US6459428B1 (en) * | 1998-02-17 | 2002-10-01 | Sun Microsystems, Inc. | Programmable sample filtering for image rendering |
US6496187B1 (en) * | 1998-02-17 | 2002-12-17 | Sun Microsystems, Inc. | Graphics system configured to perform parallel sample to pixel calculation |
US6424343B1 (en) * | 1998-02-17 | 2002-07-23 | Sun Microsystems, Inc. | Graphics system with programmable real-time sample filtering |
US6489956B1 (en) * | 1998-02-17 | 2002-12-03 | Sun Microsystems, Inc. | Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for implementation of display effects |
US6496186B1 (en) * | 1998-02-17 | 2002-12-17 | Sun Microsystems, Inc. | Graphics system having a super-sampled sample buffer with generation of output pixels using selective adjustment of filtering for reduced artifacts |
US6317525B1 (en) * | 1998-02-20 | 2001-11-13 | Ati Technologies, Inc. | Method and apparatus for full scene anti-aliasing |
JP3639108B2 (ja) * | 1998-03-31 | 2005-04-20 | 株式会社ソニー・コンピュータエンタテインメント | 描画装置および描画方法、並びに提供媒体 |
US6606093B1 (en) | 1998-05-19 | 2003-08-12 | Microsoft Corporation | Method and apparatus for antialiasing by gamma corrected area calculation |
US6501483B1 (en) * | 1998-05-29 | 2002-12-31 | Ati Technologies, Inc. | Method and apparatus for antialiasing using a non-uniform pixel sampling pattern |
WO1999064990A2 (en) | 1998-06-12 | 1999-12-16 | Intergraph Corporation | System for reducing aliasing on a display device |
WO2000004527A1 (en) * | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Apparatus and method of directing graphical data to a display device |
WO2000004436A1 (en) | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Graphics processing with transcendental function generator |
US6459453B1 (en) | 1998-07-17 | 2002-10-01 | 3Dlabs Inc. Ltd. | System for displaying a television signal on a computer monitor |
WO2000004482A2 (en) | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Multi-processor graphics accelerator |
US6577316B2 (en) | 1998-07-17 | 2003-06-10 | 3Dlabs, Inc., Ltd | Wide instruction word graphics processor |
WO2000004494A1 (en) | 1998-07-17 | 2000-01-27 | Intergraph Corporation | Graphics processing system with multiple strip breakers |
US7518616B1 (en) | 1998-07-17 | 2009-04-14 | 3Dlabs, Inc. Ltd. | Graphics processor with texture memory allocation system |
US6188410B1 (en) | 1998-07-17 | 2001-02-13 | 3Dlabs Inc. Ltd. | System for processing vertices from a graphics request stream |
US6480913B1 (en) | 1998-07-17 | 2002-11-12 | 3Dlabs Inc. Led. | Data sequencer with MUX select input for converting input data stream and to specific output data stream using two exclusive-or logic gates and counter |
US6417861B1 (en) * | 1999-02-17 | 2002-07-09 | Sun Microsystems, Inc. | Graphics system with programmable sample positions |
US6674440B1 (en) | 1999-04-05 | 2004-01-06 | 3Dlabs, Inc., Inc. Ltd. | Graphics processor for stereoscopically displaying a graphical image |
US6781585B2 (en) | 2000-01-11 | 2004-08-24 | Sun Microsystems, Inc. | Graphics system having a super-sampled sample buffer and having single sample per pixel support |
US7119809B1 (en) | 2000-05-15 | 2006-10-10 | S3 Graphics Co., Ltd. | Parallel architecture for graphics primitive decomposition |
US6885378B1 (en) * | 2000-09-28 | 2005-04-26 | Intel Corporation | Method and apparatus for the implementation of full-scene anti-aliasing supersampling |
US7061507B1 (en) * | 2000-11-12 | 2006-06-13 | Bitboys, Inc. | Antialiasing method and apparatus for video applications |
US6819332B2 (en) * | 2001-02-27 | 2004-11-16 | 3Dlabs Inc. Ltd. | Antialias mask generation |
US7184066B2 (en) | 2001-05-09 | 2007-02-27 | Clairvoyante, Inc | Methods and systems for sub-pixel rendering with adaptive filtering |
US6819320B2 (en) | 2002-03-04 | 2004-11-16 | Sun Microsystems, Inc. | Reading or writing a non-super sampled image into a super sampled buffer |
US20030169255A1 (en) * | 2002-03-11 | 2003-09-11 | Lavelle Michael G. | Two-sided lighting in a single pass |
US7015920B2 (en) * | 2003-04-30 | 2006-03-21 | International Business Machines Corporation | Method and system for providing useable images on a high resolution display when a 2D graphics window is utilized with a 3D graphics window |
US8775997B2 (en) * | 2003-09-15 | 2014-07-08 | Nvidia Corporation | System and method for testing and configuring semiconductor functional circuits |
US8732644B1 (en) | 2003-09-15 | 2014-05-20 | Nvidia Corporation | Micro electro mechanical switch system and method for testing and configuring semiconductor functional circuits |
US8872833B2 (en) * | 2003-09-15 | 2014-10-28 | Nvidia Corporation | Integrated circuit configuration system and method |
US7003758B2 (en) * | 2003-10-07 | 2006-02-21 | Brion Technologies, Inc. | System and method for lithography simulation |
US8711161B1 (en) | 2003-12-18 | 2014-04-29 | Nvidia Corporation | Functional component compensation reconfiguration system and method |
EP1580694A1 (de) * | 2004-03-22 | 2005-09-28 | STMicroelectronics S.r.l. | Bildgenerierung mit adaptiver Antialias-Filterung |
US7307628B1 (en) * | 2004-08-06 | 2007-12-11 | Nvidia Corporation | Diamond culling of small primitives |
US8723231B1 (en) | 2004-09-15 | 2014-05-13 | Nvidia Corporation | Semiconductor die micro electro-mechanical switch management system and method |
US8711156B1 (en) | 2004-09-30 | 2014-04-29 | Nvidia Corporation | Method and system for remapping processing elements in a pipeline of a graphics processing unit |
US8427496B1 (en) | 2005-05-13 | 2013-04-23 | Nvidia Corporation | Method and system for implementing compression across a graphics bus interconnect |
US8698811B1 (en) | 2005-12-15 | 2014-04-15 | Nvidia Corporation | Nested boustrophedonic patterns for rasterization |
US9117309B1 (en) | 2005-12-19 | 2015-08-25 | Nvidia Corporation | Method and system for rendering polygons with a bounding box in a graphics processor unit |
US8390645B1 (en) | 2005-12-19 | 2013-03-05 | Nvidia Corporation | Method and system for rendering connecting antialiased line segments |
US8928676B2 (en) * | 2006-06-23 | 2015-01-06 | Nvidia Corporation | Method for parallel fine rasterization in a raster stage of a graphics pipeline |
US8427487B1 (en) | 2006-11-02 | 2013-04-23 | Nvidia Corporation | Multiple tile output using interface compression in a raster stage |
US8237738B1 (en) | 2006-11-02 | 2012-08-07 | Nvidia Corporation | Smooth rasterization of polygonal graphics primitives |
US8482567B1 (en) * | 2006-11-03 | 2013-07-09 | Nvidia Corporation | Line rasterization techniques |
US8724483B2 (en) * | 2007-10-22 | 2014-05-13 | Nvidia Corporation | Loopback configuration for bi-directional interfaces |
US9064333B2 (en) * | 2007-12-17 | 2015-06-23 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8780123B2 (en) * | 2007-12-17 | 2014-07-15 | Nvidia Corporation | Interrupt handling techniques in the rasterizer of a GPU |
US8681861B2 (en) * | 2008-05-01 | 2014-03-25 | Nvidia Corporation | Multistandard hardware video encoder |
US8923385B2 (en) * | 2008-05-01 | 2014-12-30 | Nvidia Corporation | Rewind-enabled hardware encoder |
JP5151946B2 (ja) * | 2008-12-09 | 2013-02-27 | 富士通株式会社 | 描画装置 |
US20110063309A1 (en) * | 2009-09-16 | 2011-03-17 | Nvidia Corporation | User interface for co-processing techniques on heterogeneous graphics processing units |
CN101667123B (zh) * | 2009-09-24 | 2013-05-08 | 中兴通讯股份有限公司 | 一种不规则窗口实现方法及装置 |
US9530189B2 (en) | 2009-12-31 | 2016-12-27 | Nvidia Corporation | Alternate reduction ratios and threshold mechanisms for framebuffer compression |
US9331869B2 (en) | 2010-03-04 | 2016-05-03 | Nvidia Corporation | Input/output request packet handling techniques by a device specific kernel mode driver |
JP5273087B2 (ja) * | 2010-04-14 | 2013-08-28 | 株式会社Jvcケンウッド | 映像処理装置および映像処理方法 |
US9183651B2 (en) * | 2010-10-06 | 2015-11-10 | Microsoft Technology Licensing, Llc | Target independent rasterization |
US9171350B2 (en) | 2010-10-28 | 2015-10-27 | Nvidia Corporation | Adaptive resolution DGPU rendering to provide constant framerate with free IGPU scale up |
US8860742B2 (en) * | 2011-05-02 | 2014-10-14 | Nvidia Corporation | Coverage caching |
US9607407B2 (en) | 2012-12-31 | 2017-03-28 | Nvidia Corporation | Variable-width differential memory compression |
US9591309B2 (en) | 2012-12-31 | 2017-03-07 | Nvidia Corporation | Progressive lossy memory compression |
GB2511817A (en) * | 2013-03-14 | 2014-09-17 | Imagination Tech Ltd | Rendering in computer graphics systems |
US9342891B2 (en) | 2013-03-15 | 2016-05-17 | Nvidia Corporation | Stencil then cover path rendering with shared edges |
US9401034B2 (en) | 2013-04-30 | 2016-07-26 | Microsoft Technology Licensing, Llc | Tessellation of two-dimensional curves using a graphics pipeline |
US9710894B2 (en) | 2013-06-04 | 2017-07-18 | Nvidia Corporation | System and method for enhanced multi-sample anti-aliasing |
US9832388B2 (en) | 2014-08-04 | 2017-11-28 | Nvidia Corporation | Deinterleaving interleaved high dynamic range image by using YUV interpolation |
US11295506B2 (en) * | 2015-09-16 | 2022-04-05 | Tmrw Foundation Ip S. À R.L. | Chip with game engine and ray trace engine |
CN112102435B (zh) * | 2020-09-24 | 2023-08-01 | 安徽文香科技股份有限公司 | 一种几何图形绘制的方法、装置、设备及存储介质 |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4371872A (en) * | 1979-07-23 | 1983-02-01 | The Singer Company | Fractional clock edge smoother for a real-time simulation of a polygon face object system |
US4590465A (en) * | 1982-02-18 | 1986-05-20 | Henry Fuchs | Graphics display system using logic-enhanced pixel memory cells |
US4528642A (en) * | 1982-04-12 | 1985-07-09 | Tektronix, Inc. | Completing a fill pattern inside a redrawn panel outline |
US4783649A (en) * | 1982-08-13 | 1988-11-08 | University Of North Carolina | VLSI graphics display image buffer using logic enhanced pixel memory cells |
US4755810A (en) * | 1985-04-05 | 1988-07-05 | Tektronix, Inc. | Frame buffer memory |
US4780711A (en) * | 1985-04-12 | 1988-10-25 | International Business Machines Corporation | Anti-aliasing of raster images using assumed boundary lines |
US4811245A (en) * | 1985-12-19 | 1989-03-07 | General Electric Company | Method of edge smoothing for a computer image generation system |
FR2594980A1 (fr) * | 1986-02-21 | 1987-08-28 | Gen Electric | Processeur de visualisation pour un systeme de visualisation graphique |
US4991122A (en) * | 1987-10-07 | 1991-02-05 | General Parametrics Corporation | Weighted mapping of color value information onto a display screen |
US4918626A (en) * | 1987-12-09 | 1990-04-17 | Evans & Sutherland Computer Corp. | Computer graphics priority system with antialiasing |
US4908780A (en) * | 1988-10-14 | 1990-03-13 | Sun Microsystems, Inc. | Anti-aliasing raster operations utilizing sub-pixel crossing information to control pixel shading |
-
1990
- 1990-11-15 CA CA002030022A patent/CA2030022A1/en not_active Abandoned
- 1990-11-15 DE DE69032932T patent/DE69032932T2/de not_active Expired - Lifetime
- 1990-11-15 EP EP90312472A patent/EP0430501B1/de not_active Expired - Lifetime
- 1990-11-16 JP JP2311223A patent/JPH03212775A/ja active Pending
-
1992
- 1992-08-13 US US07/929,845 patent/US5287438A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
DE69032932D1 (de) | 1999-03-18 |
CA2030022A1 (en) | 1991-05-18 |
US5287438A (en) | 1994-02-15 |
EP0430501B1 (de) | 1999-02-03 |
JPH03212775A (ja) | 1991-09-18 |
EP0430501A2 (de) | 1991-06-05 |
EP0430501A3 (en) | 1993-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE69032932T2 (de) | System und Verfahren zum unverfälschten Polygonenzeichnen | |
DE68927471T2 (de) | Verfahren zur Schattierung eines graphischen Bildes | |
DE3854543T2 (de) | Prioritätsverwaltung eines Tiefendatenpuffers für Echtzeitrechnersysteme zur Bilderzeugung. | |
DE3855231T2 (de) | Prioritätsauflösungssystem zwischen Polygonen mit Antialiasing | |
DE102008034519B4 (de) | Aufgeteilte Datenstruktur, und Verfahren zum Laden einer Partikel-basierten Simulation unter Verwendung der aufgeteilten Datenstruktur in GPU, usw. | |
DE69130132T2 (de) | Verfahren zur Erzeugung von Adressen zu texturierten, in RIP Maps gespeicherten graphischen Primitiven | |
DE69908966T3 (de) | Schattierung von 3-dimensionalen rechner-erzeugten bildern | |
DE69716877T2 (de) | System und Verfahren zur genauen Gradientberechnung für die Texturabbildung in einem Computergraphiksystem | |
DE19709220B4 (de) | System und Verfahren für eine beschleunigte Verdeckungsauslese | |
DE69100140T2 (de) | Verfahren zur Anzeige eines Bildteiles einer physikalischen Struktur. | |
DE3689654T2 (de) | Rechnergraphik, prozessor für parallele subdivision. | |
DE69130123T2 (de) | Anzeigegerät und Verfahren zum Betreiben eines solchen Geräts | |
DE3750803T2 (de) | Schattierungsschaltung zur Schattierung mehrerer Polygone, die ein Festkörpermodel einsetzen, und Schattierungsverfahren dafür. | |
DE69322575T2 (de) | Verfahren und Gerät zur Wiedergabe von abgeglichenen NURB Oberflächen | |
DE69131927T2 (de) | Verfahren und gerät um verfälschte polygone darzustellen | |
DE3650129T2 (de) | Verfahren zur Kantenglättung für Rechnerbilderzeugungssystem. | |
DE69312505T2 (de) | Polygonaufrasterung | |
DE69534331T2 (de) | Verfahren und Vorrichtung zur Hervorhebung der Einzelheit einer Baumstruktur | |
DE69328589T2 (de) | System und Verfahren zur Darstellung von Bezier-Splines-Kurven | |
DE69423129T2 (de) | System und Verfahren zur Kurvendarstellung | |
DE68923227T2 (de) | Vektor-zu-Raster-Umwandlungsverfahren. | |
DE60012917T2 (de) | Verfahren und vorrichtung für eine antialiasing-operation auf impliziten kanten | |
EP1175663A1 (de) | Verfahren zur rasterisierung eines graphikgrundelements | |
DE60106301T2 (de) | Verfahren und system für die ausfuhr von datenverbänden zu zweidimensionalen oder dreidimensionalen geometrischen entitäten | |
DE19827726A1 (de) | Verfahren und Vorrichtung zum Liefern von Polygonpixelunterabtastinformationen unter Verwendung einer Inkrementaleinrichtung |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8328 | Change in the person/name/address of the agent |
Free format text: GRUENECKER, KINKELDEY, STOCKMAIR & SCHWANHAEUSSER, 80538 MUENCHEN |