Zum 3DCenter Forum
Inhalt




CineFX (NV30) Inside

31. August 2003 / von Demirug / Seite 2 von 7


   Der Shader Core

Beim Shader Core handelt es sich um eine programmierbare FPU, die eine ganze Reihe von Aufgaben übernimmt. Zur Erfüllung dieser Aufgaben ist der Shader Core selbst eine mehrstufige Pipeline.


CineFX Shader Core

 1) Auswahl der Datenquelle

Der Shader Core kann aus 3 Quellen Daten beziehen:

  • Der Shader Core selbst: Bestimmte komplexe Befehle können nicht in einem Durchlauf bearbeitet werden. In solchen Fällen verlässt ein Quad nach dem Durchlauf den Shader Core nicht, sondern begibt sich direkt auf einen weiteren Durchlauf. Die nachfolgende Tabelle enthält eine Auflistung der Befehle und die Anzahl der Durchläufe, die zur Ausführung benötigt werden.

  • Das Pipeline Ende: Benötigt ein Quad mehr als einen Durchlauf durch die gesammte Pipeline, wird er hier erneut eingespeist.

  • Der Rasterizer ist die Quelle, wenn der Shader Core sonst den nächsten Takt leer laufen würde.

 2) Interpolations selection

In diesem Schritt werden 6 Werte (Fliesspunkt, Skalar) zum interpolieren bestimmt. Zur Auswahl stehen dafür: Jeder der 4 Skalare (s,t,r,q) aus einer der 8 Texturekoordinaten, die Pixeltiefe (Z-Wert) und 1/W, welches für die perspektivische Korrektur benötigt wird. Alternativ stehen auch noch die 4 Skalare aus 4 vorher in einem FIFO gespeicherten Koordinatensets zur Verfügung. Dazu kommen dann noch die zu diesem gespeicherten Sets gehörenden Pixeltiefe und der 1/W-Wert. Neben der Auswahl der 6 Werte können auch noch 4 komplette Sets von Texturekorrdinaten bestimmt werden, welche zusammen mit der Pixeltiefe und dem 1/W für einen späteren Loopback im bereits erwähnten FIFO gespeichert werden.

 3) Interpolation

Die im zweiten Schritt gewählten Werte werden nun interpoliert. Dabei wird der Quad auch in einzelne Pixel zerlegt. Alle weiteren Schritte in der Pipeline erfolgen nun immer für 4 Pixel parallel.

 4) Erste Wertrangierung

Zu den 6 gerade interpolierten Werten können hier noch zusätzlich 12 Werte (als 3 Register mit jeweils 4 Komponeten) aus einem früheren Durchlauf hinzukommen. Aus diesem Pool kann dann gewählt werden, welche Werte wohin weitergereicht werden sollen.

 5) Erste Rechenstufe

In dieser Stufe können Kehrwerte und der Kehrwert einer Wurzel ermittelt werden. In diesem Fall sind zwei Kehrwert- und eine Wurzelkehrwert-Berechung für jeweils 4 Pixel vorgesehen.

 6) Zweite Wertrangierung

Hier werden die Ergebnisse der vorangegangenen Stufe erneut so umsortiert, dass sie für die nächste Stufe an der richtigen Stelle liegen.

 7a) Multiplikation

Für jeden der 4 Pixel werden hier 4 skalare Multiplikationen durchgeführt.

 8a) Dritte Wertrangierung

Erneut werden die Ergenisse passend umverteilt.

 9a) Addition

Eine konfigurierbare Additionseinheit erlaubt 3 mögliche Operationen:

  • 4 Additionen mit jeweils 2 Werten
  • 2 Additionen mit jeweils 3 Werten
  • 1 Addition mit 4 Werten

 7b/8b/9b) Komplexe Berechnungen

Parallel zur Multiplikations- und Additionseinheit besteht auch noch die Möglichkeit, eine Log- oder Exp-Anweisung unter Verwendung einer hinterlegten Tabelle auszuführen.

 10) Letzte Wertrangierung

Die in den vorangegangen Stufen berechneten Werte können nun auf 2 Texturekoordinaten mit jeweils 3 Komponeten und ein Register mit 4 Komponenten verteilt werden.






Kommentare, Meinungen, Kritiken können ins Forum geschrieben werden - Registrierung ist nicht notwendig Zurück / Back Weiter / Next

Shortcuts
nach oben