|
|
|
|
|
SGX - PowerVRs Shader-Grafik |
|
|
|
|
PowerVR – Die Technologie
Wie ich weiter oben schon geschrieben hatte, die Grafikkerne von PowerVR sind sogenannte TBDRs.
TBDR heißt nichts weiter als Tile Based Deferred Renderer (Kachel basierter verzögerter Renderer) im Gegensatz zu allen anderen im Markt befindlichen Grafikkernen, die entweder IMRs (Immediate Mode Renderer) oder eben nur TBRs (Tile Based Renderer) sind. Nur PowerVR hat eine effiziente Technologie entwickelt und im Einsatz, die es ermöglicht, die Pixeloperationen ausschließlich auf garantiert sichtbaren Pixeln durchzuführen. Aus diesem Grunde nennen wir ihre Grafikkerne deferred Renderer.
Eine Zeit lang hatte ich gehofft Intels Larrabee könnte auch ein deferred Renderer werden, es ist aber auch wieder „nur“ ein TBR. Letzteres soll aber nicht heißen, dass der Larrabee schlecht wird, es wird auf jeden Fall ein Monster und spielt in einer ganz anderen Liga als SGX.
Wie funktioniert nun PowerVRs TBDR?
Ganz grob gesagt ist es die Aufgabe eines Renderers, die Daten dreidimensionaler virtueller Objekte in ein zweidimensionales Pixelbild zu übertragen. Dazu müssen die durch die Anwendung erzeugten geometrischen Objekte, in der Regel aus Dreiecken bestehend, die verschiedenen Stufen der Grafikpipeline durchlaufen, wobei die Pipeline in einen Geometrie- und einen Rasterizerteil getrennt werden kann.
Im Geometrieteil werden alle Operationen durchgeführt, die mit den geometrischen Objekten und somit auf Dreiecksbasis durchgeführt werden müssen. Im Rasterizerteil erfolgen dann alle Operationen auf Pixelbasis, wobei zum Schluss das eigentliche sichtbare Bild entsteht.
Diese Prozesse müssen in jeder Grafikhardware durchlaufen werden, da macht auch PowerVR keine Ausnahme, nur wie sie es tun unterscheidet sie von anderen Anbietern.

Grundsätzlich werden bei PowerVR Grafik erst einmal alle Daten der darzustellenden Objekte gesammelt. Diese kommen dann in den Tile Accelerator (TA), der für die Geometriestufe der Grafikpipeline verantwortlich ist. Hier werden alle Transformationen, die Beleuchtung, Projektionen, das Clipping und das Culling durchgeführt. Des weiteren werden hier die Objekte den Tiles, also den kleinen Kacheln aus denen das Bild besteht, zugeordnet.
Ich empfehle hier auf jeden Fall, auch einmal die alten Artikel von Kristof Beets auf Beyond3D zu lesen.
Der TA erzeugt im Verlauf der hier genannten Prozesse die Displayliste, welche alle notwendigen Informationen aller noch darzustellenden Objekte enthält. Keine Angst, so groß wie oft befürchtet ist diese Liste gar nicht, es fehlt ja schon sehr viel an Daten. Man kann etwa sagen, dass nur ein drittel der Dreiecke, die in einer Szene vorhanden sind, dann in der Displayliste erscheinen und diese in der Regel auch nur mit je einem Punkt, da der TA die Dreiecke der Objekte zu Stripes zusammenfasst. Die große Masse der Dreiecke wird beim Back-Face-Culling bzw. beim Tilling aus der Szene entfernt. Man bedenke, Tilling ist Clipping, ein Dreieck das keiner Tile zugeordnet werden kann weil es außerhalb des sichtbaren Bereichs liegt ist raus! Natürlich entfernt der TA auch alle Dreiecke, die kleiner sind als ein Pixel und Objekte die offensichtlich vollständig verdeckt werden, werden ebenfalls entfernt.

Sollte die Liste einmal doch zu groß werden, um komplett im Speicher gehalten werden zu können, wird die Szene über sogenannte Macro-Tiles in Bereiche (z.B. ein viertel des Bildschirms) geteilt, die einzeln gerendert und dann zwischen gespeichert werden. Dabei werden dann natürlich auch der z-Buffer und der Frame-Buffer dieser Macro-Tile zwischengespeichert. Durch das Macro-Tilling ist es den Grafikkernen von PowerVR möglich, beliebig große Szenen zu verarbeiten und darzustellen.
Es ist alles nur eine Frage der Speicherverwaltung!
Wenn der Tile Accelerator mit den Daten einer Szene fertig ist, also die Displayliste erzeugt hat, wendet er sich der nächsten Szene zu. Gleichzeitig beginnt der Image Synthesis Prozessor (ISP) mit der Arbeit. Er bestimmt jetzt an Hand der Daten der Displayliste welche Pixel von welchem Dreieck wirklich sichtbar sind, er führt das Hidden Surface Remove (HSR) durch. Der ISP übergibt dann die notwendigen Daten an den Texturing and Shading Processor (TSP), wo dann alle notwendigen Pixeloperationen, aber eben nur noch auf garantiert sichtbaren Pixeln, durchgeführt werden, bevor sie in den Frame-Buffer geschrieben werden.
Da tauchen immer wieder mal Begriffe wie infinite planes auf, was hat es damit auf sich? Ist es nicht viel zu kompliziert ein einfaches Dreieck in unendliche Flächen zu verwandeln, um dann mit den Flächen Tests durchzuführen? Was hat das mit Raycasting zu tun?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
SGX - PowerVRs Shader-Grafik |
|
|
 |
13 Seiten |
|
|
 |
verfasst von loewe |
|
|
 |
Sonntag - 04.01.2009 - 18:53 Uhr |
|
|
|
|
|