-
GEBIET DER
ERFINDUNG
-
Die
vorliegende Erfindung betrifft Computersysteme. Im Besonderen betrifft
die vorliegende Erfindung die Verarbeitung von dreidimensionalen
Grafiken.
-
STAND DER
TECHNIK
-
Mittels
Computer erzeugte Grafiken werden für gewöhnlich in verschiedenen Bereichen
der Industrie, der Wirtschaft, dem Bildungswesen und in der Unterhaltungsindustrie
eingesetzt. Computergrafiken werden durch Pixel bzw. Bildpunkte
auf einem Anzeigemonitor dargestellt. Da die Anzeige jedoch eine
begrenzte Anzahl von Pixeln aufweist, kann häufig ein Aliasing bzw. Treppeneffekt
auftreten. Treppeneffekte aufgrund der Notwendigkeit zur Darstellung
analoger Daten in einem digitalen Format führen zu einem angezeigten Bild
mit unscharfen Kanten bzw. Rändern
bzw. Treppchen an den Rändern.
-
Die
Anwendung von Techniken zur Reduzierung des Treppeneffekts wird
häufig
als Antialiasing bezeichnet. Eine Technik für, die für das Full-Scene-Antialiasing
eingesetzt wird, ist als Supersampling bekannt. Supersampling ist
ein Ansatz, bei dem die ursprüngliche
Grafikszene mit einer hohen Auflösung
gerendert und in der Folge auf die ursprüngliche Anzeigeauflösung heruntergefiltert
wird. Somit verschiebt das Supersampling effektiv den Treppeneffekt
auf eine höhere
räumliche
Frequenz.
-
Beim
Einsatz der Supersampling-Technik durch ein Computersystem treten
jedoch Nachteile in Bezug auf die Performance bzw. die Leistung
auf. Das Problem beim Supersampling ist es, dass es eine zusätzliche
Verarbeitung und Speicherplatz sowie Bandbreite erfordert, um ein
Bild mit der höheren Auflösung zu
rendern und um es später
herunterzufiltern. Zum Beispiel erfordert das zweifache (2×) Supersampling
in eine X- und Y-Richtung der Anzeige den vierfache (4×) Speicherplatz
und die vierfache Bandbreite. Benötigt wird somit eine effiziente
Anwendung von Supersampling, ohne dass zusätzlicher Speicherbedarf und
zusätzliche
Bandbreite erforderlich sind.
-
Ein
Artikel mit dem Titel "An
Advanced Graphics Chip with bump-mapped Phong shading" von T. Ikedo et
al. (IEEE Comput. Soc., 23. Juni 1997, Seiten 156 bis 165, XP010232314,
ISBN 0-8186-7825-9) beschreibt neue Hardware-Technologien, bei denen
Phong-, Bump-, Reflexions- und Refraktions-Mapping-Prozessoren in
Verbindung mit einem Texturabbildungsprozessor alle in einem einzigen
LSI-Chip (LSI als englische Abkürzung
von Large Scale Integration) eingebettet sind. Diese Arten von Chips
sind als anwendungsspezifische integrierte Schaltungen (ASICs) bekannt
und werden allgemein unabhängig
implementiert unter Verwendung einer MIMD-Architektur (MIMD als
englische Abkürzung
von Multiple Instruction, Multiple Data), um die Performance bzw.
Leistung zu erhalten, während gleichzeitig
die verschiedenen Funktionen verarbeitet werden, welche die verschiedenen
unabhängigen Prozessoren
ausführen
können.
-
ZUSAMMENFASSUNG
DER ERFINDUNG
-
Vorgesehen
sind gemäß der vorliegenden Erfindung
eine Zentraleinheit (CPU), ein Computersystem und ein Verfahren
zum Supersampling eines Bilds gemäß den anhängigen gegenständlichen
Ansprüchen
1, 5 und 6.
-
KURZE BESCHREIBUNG
DER ZEICHNUNGEN
-
Die
vorliegende Erfindung wird anhand der nachstehenden genauen Beschreibung
sowie der beigefügten
Zeichnungen verschiedener Ausführungsbeispiele
der vorliegenden Erfindung besser verständlich. Die Zeichnungen sind
jedoch nicht so auszulegen, dass sie die Erfindung mit den besonderen
Ausführungsbeispielen
verknüpfen,
vielmehr dienen sie ausschließlich
den Zwecken der Erläuterung und
der Vermittlung des Verständnisses.
Es zeigen:
-
1 ein
Blockdiagramm eines Ausführungsbeispiels
eines Computersystems;
-
2 ein
Blockdiagramm eines Ausführungsbeispiels
eines Prozessors;
-
3 ein
Blockdiagramm eines Grafik-Caches; und
-
4 ein
Flussdiagramm eines Ausführungsbeispiels
der während
dem Supersampling fließenden
Daten.
-
GENAUE BESCHREIBUNG
-
Beschrieben
werden ein Verfahren und eine Vorrichtung für die effiziente Implementierung
von Supersampling. In der folgenden genauen Beschreibung der vorliegenden
Erfindung sind zahlreiche besondere Einzelheiten ausgeführt, um
ein umfassendes Verständnis
der vorliegenden Erfindung zu vermitteln. Für den Fachmann auf dem Gebiet
ist es jedoch ersichtlich, dass die vorliegende Erfindung auch ohne
diese besonderen Einzelheiten ausgeführt werden kann. In anderen
Fällen
sind allgemein bekannte Strukturen und Vorrichtungen in Blockdiagrammform und
nicht im Detail dargestellt, um die vorliegende Erfindung nicht
unnötig
zu verschleiern.
-
Verweise
in der Beschreibung auf "ein
Ausführungsbeispiel" bedeuten, dass ein
bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte
Eigenschaft, die beschrieben werden in Verbindung mit den Ausführungsbeispielen,
in mindestens einem Ausführungsbeispiel
der vorliegenden Erfindung enthalten ist. Das Vorkommen der Phrase "in einem Ausführungsbeispiel" an verschiedenen
Stellen in der Beschreibung bezieht sich nicht unbedingt in allen
Fällen
auf das gleiche Ausführungsbeispiel.
-
Die
Abbildung aus 1 zeigt ein Blockdiagramm eines
Computersystems 100. Das Computersystem 100 weist
eine Zentraleinheit (Prozessor) 105 auf, die mit einem
Prozessorbus 110 gekoppelt ist. In einem Beispiel handelt
es sich bei dem Prozessor 105 um einen Prozessor der Pentium® Familie,
zu der die Prozessoren der Pentium® II
Familie und mobile Pentium® und Pentium® II
Prozessoren zählen,
die von der Intel Corporation, Santa Clara, Kalifornien, USA, erhältlich sind.
Alternativ können
auch andere Prozessoren eingesetzt werden.
-
Der
Chipsatz 120 ist ebenfalls mit dem Prozessorbus 110 gekoppelt.
Der Chipsatz 120 kann eine Speichersteuereinheit zur Steuerung
eines Hauptspeichers 113 aufweisen. Ferner kann der Chipsatz 120 auch
eine Schnittstelle gemäß Accelerated
Graphics Port (AGP) Specification Revision 2.0 aufweisen, entwickelt
von der Intel Corporation, Santa Clara, Kalifornien, USA. Der Chipsatz 120 ist
mit einer Videovorrichtung 125 gekoppelt und behandelt Videodatenanforderungen
für einen
Zugriff auf den Hauptspeicher 113.
-
Der
Hauptspeicher 113 ist über
den Chipsatz 120 mit dem Prozessorbus 110 gekoppelt.
Der Hauptspeicher 113 speichert Befehlsfolgen, die durch
den Prozessor 105 ausgeführt werden. In einem Ausführungsbeispiel
weist der Hauptspeicher 113 ein dynamisches Direktzugriffsspeichersystem (DRAM)
auf; wobei der Hauptspeicher 113 auch andere Konfigurationen
aufweisen kann. Die durch den Prozessor 104 ausgeführten Befehlsfolgen
können aus
dem Hauptspeicher 113 oder jeder anderen Speichervorrichtung
abgerufen werden. Weitere Vorrichtungen können ebenfalls mit dem Prozessorbus 110 gekoppelt
werden, wie etwa mehrere Prozessoren und/oder mehrere Hauptspeichervorrichtungen. Das
Computersystem 100 wird in Bezug auf einen einzelnen Prozessor
beschrieben; wobei jedoch auch mehrere Prozessoren mit dem Prozessorbus 110 gekoppelt
werden können.
Die Videovorrichtung 125 ist ebenfalls mit dem Chipsatz 120 gekoppelt.
In einem Ausführungsbeispiel
weist die Videovorrichtung einen Videomonitor auf, wie etwa eine
Kathodenstrahlröhrenanzeige
(CRT) oder eine Flüssigkristallanzeige
(LCD) sowie die erforderliche unterstützende Schaltkreisanordnung.
-
Der
Prozessorbus 110 ist über
den Chipsatz 120 mit dem Systembus 130 gekoppelt.
In einem Ausführungsbeispiel
handelt es sich bei dem Systembus 130 um einen PCI (Peripheral
Component Interconnect) Bus gemäß dem Standard
Specification Revision 2.1, entwickelt von der Intel Corporation, Santa
Clara, Kalifornien, USA; wobei aber auch andere Busstandards eingesetzt
werden können.
Mehrere Vorrichtungen, wie etwa eine Audiovorrichtung 127,
können
mit dem Systembus 130 gekoppelt werden.
-
Die
Busbrücke 140 koppelt
den Systembus 130 mit dem sekundären Bus 150. In einem
Beispiel handelt es sich bei dem sekundären Bus 150 um einen
ISA-Bus (Industry Standard Architecture Bus), Specification Revision
1.0, entwickelt von International Business Machines, Armonk, New
York, USA. Es können
aber auch andere Busstandards eingesetzt werden, wie zum Beispiel
ein EISA-Bus (Extended Industry Standard Architecture Bus), Specification Revision
3.12, entwickelt von Compaq Computer, et al. Mehrere Vorrichtungen,
wie etwa ein Festplattenlaufwerk 153 und ein Disk-Laufwerk 154,
können
mit dem sekundären
Bus 150 gekoppelt werden. Andere Vorrichtungen, wie etwa
Cursor-Steuervorrichtungen (in
der Abbildung aus 1 nicht abgebildet) können ebenfalls
mit dem sekundären
Bus 150 gekoppelt werden.
-
Die
Abbildung aus 2 zeigt ein Blockdiagramm eines
Ausführungsbeispiels
des Prozessors 105. Der Prozessor 105 weist einen
CPU-Kern 210, einen CPU-Cache 220, einen Grafikkern 230,
einen Grafik-Cache 240 und eine Busschnittstelle 250 auf. Der
CPU-Kern 210 führt
nicht grafikbezogene Befehle aus, die an dem Computersystem 100 empfangen werden.
Der CPU-Cache 220 ist mit dem CPU-Kern 210 gekoppelt.
Gemäß einem
Ausführungsbeispiel handelt
es sich bei dem CPU-Cache 220 um einen Hochgeschwindigkeits-Speichermechanismus
zum Speichern von Daten und Befehlsfolgen, die durch den CPU-Kern 210 ausgeführt werden.
-
Die
Busschnittstelle 250 ist mit dem CPU-Cache 220 gekoppelt.
Die Busschnittstelle 250 verbindet den CPU-Cache 220 und
den Grafik-Cache 240 mit dem Prozessorbus 110,
so dass Daten zu und von dem Prozessor 105 verteilt werden
können.
-
Der
Grafikkern 230 weist einen Grafikbeschleuniger auf, der
speziell für
die Berechnung grafischer Transformationen gestaltet ist. Der Grafikkern 230 ermöglicht es
dem CPU-Kern 210 effizient nicht grafikbezogene Befehle
auszuführen,
während
der Grafik-Kern 230 Grafikberechnungen bearbeitet. Gemäß einem
Ausführungsbeispiel
arbeitet der Grafikkern gemäß einer
Kachel-basierten Rendering-Architektur. Das Rendering ist die Aktion
der Berechnung unterschiedlicher Farb- und Positionsinformationen auf
Pixelbasis. Im Ergebnis kann ein Betrachter Tiefe auf einem 2D-Monitor
der Videovorrichtung 125 wahrnehmen.
-
Das
Rendering füllt
die Punkte auf der Oberfläche
eines Objekts, die vorher nur als eine Reihe von Eckpunkten gespeichert
worden sind. Auf diese Weise wird ein Flächenobjekt, das für einen
3D-Effekt schattiert ist, auf dem Bildschirm gezeichnet bzw. gezogen.
Zum Rendern eines Objekts ist es erforderlich, Farb- und Positionsinformationen
zu bestimmen. Um dies auf effiziente Weise zu realisieren, sind
die Eckpunkte des Objekts in Dreiecke segmentiert, und diese Dreiecke
(Gruppe von drei Eckpunkten) werden danach nacheinander an dem Grafikkern 230 verarbeitet.
-
Beim
Kachel-basierten Rendering konstruiert der Grafikkern 230 Polygone
in einer bestimmten Grafikszene (oder einem Bild) in einem Dreieck
in der Dreiecksmethode, bis die Szene fertig gestellt ist. Vor dem
Rendering einer Szene teilt der Grafikkern 230 eine Szene
jedoch in eine Reihe von Dreiecken auf. In der Folge werden die
Dreiecke sortiert (oder in Gruppen zusammengefasst) in Kacheln,
indem das Begrenzungskästchen
jedes Dreiecks geprüft
wird. Das Sortieren in Kacheln bestimmt, in welcher bzw. welchen
Kachel(n) sich ein Dreieck befindet. Gemäß einem Ausführungsbeispiel
weist der Grafik-Cache 240 einen Puffer für jede Kachel
in einer Szene auf. Die Puffer weisen Zeiger auf bestimmte Dreiecke
auf, die in den Puffern enthalten sind. Nachdem jedes Dreieck zusammengefasst
worden ist, wird jede Kachel der Szene nacheinander gerendert.
-
Der
Grafik-Cache 240 ist mit dem Grafikkern 230 und
der Busschnittstelle 250 gekoppelt. Gemäß einem Ausführungsbeispiel
handelt es sich bei dem Grafik-Cache 240 um einen Unified
Grafik-Cache, der eine Kachelgröße von 128×64 Pixeln
bearbeiten kann, wobei jedes Pixel 32-Bit Farb- und Tiefenwerte aufweist.
In einem anderen Ausführungsbeispiel speichert
der Grafik-Cache 240 Texturdaten zusätzlich zu Farb- und Tiefendaten.
In einem weiteren Ausführungsbeispiel
handelt es sich bei dem Grafik-Cache 240 um einen statischen
Direktzugriffsspeicher mit 64 Kilobyte für die Behandlung einer Kachelgröße von 128×64. Der
Durchschnittsfachmann auf dem Gebiet erkennt jedoch, dass auch andere
Größen und
Arten von Speichervorrichtungen eingesetzt werden können, um
den Grafik-Cache 240 zu implementieren.
-
Die
Abbildung aus 3 zeigt ein Blockdiagramm eines
Ausführungsbeispiels
des Grafik-Caches 240.
Der Grafik-Cache 240 weist einen Grafik-Textur-Cache 320 und
einen Grafik-Farb/Z-Kachelpuffer 340 auf.
Der Grafik-Textur-Cache 320 speichert Texturdaten, die
für eine
Texturabbildung eines Objekts verwendet werden. Die Texturabbildung
umfasst das Codieren einer Textur mit dreidimensionalen Eigenschaften
(z.B. wie transparent und reflektierend das Objekt ist), zusätzlich zu
den zweidimensionalen Eigenschaften, wie etwa der Farbe und der
Helligkeit. Nachdem eine Textur definiert worden ist, kann sie um
ein dreidimensionales Objekt gewickelt werden.
-
Der
Grafik-Farb/Z-Kachelpuffer 340 speichert Farb- und Tiefendaten
für Pixel
in jeder Kachel einer oder mehrer Grafikszenen. Die Kachelgröße kann
auf der Basis der Farb- und Tiefenformate und der Größe des Grafik-Farb/Z-Kachelpuffers 340 bestimmt
werden. Gemäß einem
Ausführungsbeispiel der
vorliegenden Erfindung ist der Grafik-Farb/Z-Kachelpuffer 340 somit
groß genug,
um intermediäre Farb-
und Tiefendatenzugriffe für
alle Dreiecke zu erfüllen,
die in einer bestimmten Kachel liegen. Gemäß einem weiteren Ausführungsbeispiel
werden die Farb- und Tiefendaten in den Speicher 113 geschrieben,
nachdem das Rendering des letzten Dreiecks in einer Kachel abgeschlossen
worden ist.
-
Gemäß einem
Ausführungsbeispiel
ermöglicht
es der Einsatz des Grafik-Cache 240, dass der Grafikkern 230 effizient
das Supersampling implementiert, indem die Anforderungen für zusätzlichen Speicherbedarf
und zusätzliche
Bandbreite eliminiert werden. Die Abbildung aus 4 zeigt
ein Flussdiagramm eines Ausführungsbeispiels
des Datenflusses während
dem Supersampling durch den Grafikkern 230. Zu Veranschaulichungszwecken
wird ein Wert von k = 4 angenommen durch das zweifache (2×) Supersampling
in die X- und Y-Richtungen. Ferner wird von einer Kachelgröße von 128×64 ausgegangen, und
die Polygone werden in eine virtuelle Kachelgröße von 64×32 zusammengefasst. Der Durchschnittsfachmann
auf dem Gebiet erkennt jedoch, dass der Prozess auch unter Verwendung
anderer Werte von k und anderer Kachelgrößen implementiert werden kann.
-
In
Bezug auf die Abbildung aus 4 werden
Polygone für
eine Kachel an dem Grafikkern 230 von dem Speicher 113 über den
AGP-Port in dem Chipsatz 120 in dem Verfahrensblock 410 empfangen.
In dem Verfahrensblock 420 werden die Polygone an dem Grafikkern 230 verstärkt. Da
in dem vorliegenden Beispiel k = 4 gilt, werden die Polygone um ein
Vierfaches (4×)
der ursprünglichen
Größe verstärkt. Die
Verstärkung
wird erreicht unter Verwendung einer durch den Grafikkern 230 unterstützten Viewport-Transformation
bzw. Darstellungsfeld-Transformation. Bei der Viewport-Transformation
werden Wortkoordinaten auf Anzeigeschirmkoordinaten durch den Grafikkern 230 abgebildet.
In der Folge beschleunigt der Grafikkern 230 die Transformation.
Durch Anwenden der Viewport-Transformation
können
die Abmessungen des Viewport manipuliert werden, um es zu bewirken,
dass das letztendliche Bild für
das Rendering in Kacheln vergrößert wird.
-
In
dem Verfahrensblock 420 werden die vergrößerten Polygone
angeordnet bzw. eingerichtet. Gemäß einem Ausführungsbeispiel
verwendet die Einrichtungsstufe Eingabedaten, die jedem Eckpunkt zugeordnet
sind und berechnet verschiedene Parameter, die für die Abtastumwandlung erforderlich sind.
Gemäß einem
weiteren Ausführungsbeispiel werden
ferner Gradienten berechnet, die zum Interpolieren der verschiedenen
Eckpunktattribute an dem Polygon erforderlich sind.
-
In
dem Verfahrensblock 440 werden Texturdaten für die Polygon-Rasterisierung
und Texturierung an dem Grafikkern 230 ausgeführt. Während der
Rasterisierung werden Pixel in den Polygonen verarbeitet. Ferner
wird auf die Pixel Textur angewandt, wenn die Texturierung freigegeben
ist. In dem Verfahrensblock 450 wird das Rendering der
Kachel abgeschlossen. Nach dem Abschluss des Rendering des letzten
Dreiecks in der Kachel weist der Grafik-Farb/Z-Kachelpuffer 340 das
vollständige
Bild der Kachel in der 4×-Ursprungsgröße auf.
In dem Verfahrensblock 460 wird ein Stretch Bit Aligned
Block Transfer (BLT) ausgeführt.
Ein BLT ist ein Prozess, in dem Pixel oder andere Daten von einem
Speicherplatz an einen anderen kopiert werden. Der Stretch-BLT wird
ausgeführt,
um das Bild von der physikalischen Kachelgröße auf die virtuelle Kachelgröße abwärts abgetastet.
-
Der
Stretch-BLT wird erreicht, indem ein Rechteck (bestehend aus zwei
Polygonen) in der Größe, die
der physikalischen Kachelgröße entspricht,
gerendert. Das Bild nach Supersampling in der physikalischen Kachel
(d.h. in dem Grafik-Farb/Z-Kachelpuffer 340) gilt als die
Quelle des Stretch-BLT, während
das Ziel in dem Speicher 113 zugeordnet wird. Gemäß einem
Ausführungsbeispiel behandelt
der Grafikkern 230 die Quelle des Stretch-BLT als eine
Texturabbildung für
das Ziel des Zielrechtecks. Im Ergebnis wird der Grafik-Textur-Cache 320 ungestört erhalten,
um eine gute Nutzung der Texturdaten über die Kacheln aufrecht zu
erhalten.
-
In
dem Verfahrensblock 470 wird bestimmt, ob weitere Kacheln
in dem Grafik-Farb/Z-Kachelpuffer 340 gerendert
werden müssen.
Wenn bestimmt wird, dass weitere Kacheln gerendert werden müssen, kehrt
die Steuerung zurück
zu dem Verfahrensblock 410, in dem Polygone für eine weitere
Kachel an dem Grafikkern 230 von dem Grafik-Farb/Z-Kachelpuffer 340 empfangen
werden. Gemäß einem Ausführungsbeispiel
weist der Grafikkern 230 eine Pipeline-Engine auf. Im Ergebnis
kann das Rendering der nächsten
Kachel an dem Grafikkern 230 beginnen, während der
Stretch-BLT der vorherigen Kachel ausgeführt wird.
-
Wie
dies vorstehend im Text beschrieben worden ist, ermöglicht es
der Einsatz eines Unified Grafik-Caches für das Kachel-basierte Rendering
die Erzeugung effizient einem Supersampling unterzogener Bilder,
ohne die Anforderungen für
den externen Speicherbedarf und die Bandbreite zu erhöhen.
-
Für gewöhnlich muss
eine Grafik-Engine, die ein Rendering einsetzt, das nicht auf Kacheln
basiert, für
gewöhnlich
zuerst ein ganzes einem Supersampling unterzogenes Bild an einen Speicherplatz
rendern, der die k-fache Größe der ursprünglichen
Anzeigeauflösung
aufweist, bevor ein Downsampling erfolgen kann. Dieser Speicher
ist für
gewöhnlich
zu groß,
um auf dem gleichen Halbleiterbaustein wie die Grafik-Engine implementiert
zu werden. Somit sind eine Erhöhung
des Speicherbedarfs und der Bandbreite in dem Hauptspeicher erforderlich.
-
Wie
dies vorstehend im Text beschrieben worden ist, sorgt der Unified
Grafik-Cache für
eine temporäre
Speicherung für
das einem Supersampling unterzogene Bild, das später heruntergefiltert wird
(z.B. durch Stretch-BLT). Im Ergebnis muss nur das letztendliche
Bild der ursprünglichen
Größe herausgeschrieben
und in dem Hauptspeicher, wie etwa dem Speicher 113, gespeichert
werden. Somit wurde eine effiziente Implementierung des Supersampling beschrieben,
ohne dass zusätzlicher
Speicherbedarf und zusätzliche
Bandbreite erforderlich sind.