Dienstag • 28.03.2017 • 17:49 Uhr
 Neuigkeiten
 Artikel
 Downloadbereich
 Bildergalerie
 Forum
 PowerVR FAQ
 Suchmachine
 Mitarbeiter
 Impressum
 SGX544MP angekündigt
 Der aktuelle Stand
 zweiter SGX Artikel ...
 Die Videofähigkeiten...
 neue Treiber für Pou...
 neuer Treiber mit Ha...
 SGX - Aufbau, Techn...
 neuer Serie5XT Grafi...
 Apple und Intel inve...
 Mehrere weitere Lize...
 SGX - PowerVRs Shade...
 Interview mit ImgTec...
 Quack - das andere D...
 Hercules4500 AGP4x-M...
 Optionen des KYRO Tr...
 FSAA auf KYRO
 Nummer 5 lebt!
 Startpartition von W...
 MBX - Mobile Grafik
 Die Grafikfähigkeite...
 Vivid! - PowerVR Gra...
 Videologic Neon 250
 Geforce 6800 - the n...
 Beyond3d
 BluesNews
 Chrome-Center
 Hartware
 Imagination T.
 ParaKnowYa
 Planet 3dNow!
 PowerVR
 PowerVR-Ext.
 PVR Generations
 Tom's Hardware
 Videologic
 VoodooExtreme

3D Center


PowerVR

Imagination Technologies

SGX - PowerVRs Shader-Grafik

Eine beliebige Ebene hat die Eigenschaft, den Raum in zwei Hälften zu teilen. Die eine Hälfte enthält den Normalenvektor der Ebene, die andere Hälfte nicht.

Nennen wir jetzt die jeweilige Hälfte mit Normalenvektor positiv (+), so ist durch die spezielle Konstruktion unserer Ebenen, erreicht durch die Beibehaltung der Drehrichtung, durch die Dreieckskanten das Dreieck für alle drei Ebenen immer auf der negativen Seite (-). Um zu prüfen ob ein Punkt im Dreieck liegt muss also nur getestet werden, ob er für alle drei Ebenen immer auf der negativen Seite liegt.

Wollen wir also wissen, ob der Strahl durch den aktuellen Bildschirmpunkt (xs,ys) das Dreieck trifft, es für diesen Pixel sichtbar ist, müssen wir nur (xs,ys) in die Gleichungen der drei Ebenen einsetzen, also jeweils D*xs + E*ys + F berechnen. Damit testen wir ob der Bildschirmpunkt (xs,ys,0) auf der positiven oder auf der negativen Seite der Ebenen durch die Dreieckskanten liegt. Nur wenn für alle drei Gleichungen dort ein negativer Wert entsteht, uns interessiert nur das Vorzeichen, ist das Dreieck auf diesem Pixel sichtbar, ansonsten kann die Berechnung hier beendet werden!
Diese Berechnungen erfolgen für alle Pixel einer Zeile gleichzeitig, der Wert für den Nachbarpixel ergibt sich durch Addition von D und der für die nächste Zeile jeweils durch Addition von E, es ist also recht einfache Mathematik.

Die Untersuchung der Sichtbarkeit erfolgt in den hier dargestellten edge processors, nur wenn diese für das jeweilige Pixel alle ein negatives Vorzeichen liefern wird im surface processor ein entsprechender Tiefenwert berechnet, wird für die ganze Zeile kein Tiefenwert benötigt, wird diese komplett übersprungen.

Aus der Gleichung für die Dreiecksebene lässt sich jetzt nach Bedarf ein entsprechender Tiefenwert berechnen.
Dazu wird die Dreiecksebene G*X + H*Y + J = Z mit der auf der Bildschirmebene senkrechten Geraden durch den Bildschirmpixel (xs,ys) zum Schnitt gebracht. Hierbei wird der Abstand des Punktes (xs,ys,0) zur Dreiecksebene berechnet, was sehr einfach durch Einsetzen von xs und ys für X und Y in der Ebenengleichung möglich ist. Damit hätten wir auch das Raycasting.
Das original Patent beschreibt dieses Raycasting bzgl. des Sichtstrahls vom Augpunkt durch die Bildschirmpunkte. Dort wurden die Körper aber auch nicht durch Dreiecke begrenzt sondern durch beliebige ebene Flächen.
Mit den Bildschirmpunkt Koordinaten (xs,ys) ergibt sich ein z-Wert und auch diese Berechnungen unterscheiden sich von Pixel zu Pixel nur die die Addition von G, sind also sehr einfach möglich.

Der berechnete Tiefenwert wird anschließend mit dem chipinternen z-Buffer verglichen, ist er kleiner als der im z-Buffer wird dieser überschrieben, ansonsten wird der neue Wert verworfen, wie beim z-Test üblich!

Alle notwendigen Berechnungen werden wie schon betont massiv parallel und innerhalb eines Taktes jeweils für eine ganze Zeile durchgeführt. Bei einer Tile-Größe von 32x16 Pixel dauert die gesamte Berechnung je Dreieck höchstens 16 Takte, bei 65 Dreiecken und 200 MHz dauert dieser Vorgang je Tile dann etwa eine fünfmillionstel Sekunde und für alle 1536 Tile zusammen etwa acht tausendstel Sekunden.

Bei wesentlich größeren Auflösungen muss dann natürlich die Größe der Tile oder die Anzahl der gleichzeitig zu bearbeitenen Tile angepasst werden, oder eben die Taktfrequenz erhöht werden, wir sind mit 200 MHz ja noch recht konservativ!

Seite 1 2 3 4 5 6 7 8 9 10 11 12 13
 SGX - PowerVRs Shader-Grafik
 13 Seiten
 verfasst von loewe
 Sonntag - 04.01.2009 - 18:53 Uhr
[1]  Einleitung
[2]  Die SGX Grafikkerne
[3]  Aufbau des Grafikkerns Teil 1
[4]  Aufbau des Grafikkerns Teil 2
[5]  PowerVR – Die Technologie
[6]  PowerVR - Das HSR Teil 1
[7]  PowerVR - Das HSR Teil 2
[8]  PowerVR - Das HSR Teil 3
[9]  zurück zum SGX
[10]  Intel SCH – SGX535 Teil 1
[11]  Intel SCH – SGX535 Teil 2
[12]  Intel SCH – SGX535 Teil 3
[13]  Fazit