PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Vertex Shader 1.0 und Pixel Shader 1.0 mit Radeon?


Premium
2002-02-11, 17:17:48
Habe einen Radeon Karte ersteigert und habe diese per Unituner übertacktet. Dabei konnte man die Version von Vertex und Pixel Shader welche unter D3D unterstütz werden einstellen. Beides kann man auf 1.1 stellen. Ich dachte immer, das der Radeon nur Pixel Shader der Qualität 1.0 unterstützt. Das das Vertix Skinning des Radeon auch gleichzeitig Vertex Shader 1.0 entspricht wusste ich bisher nicht. Wenn das wircklich so ist und man per Software sogar noch die Versionen 1.1 freischalten kann, dann frage ich mich schon warum ATI damit nicht Werbung gemacht hat, als es dei Radeons einführte?
Was sind denn die genauen Unterschiede zwischen den Versinen 1.0 und 1.1?
MfG

Premium

Xmas
2002-02-11, 17:33:31
Der Radeon-Chip kann schon deshalb keinen Pixel Shader (auch nicht 1.0) voll unterstützen, weil er keine 4 Texturen pro Pass erlaubt. In bestimmten Fällen könnte es funktionieren, einen PS-Effekt darzustellen, aber wenn dies nicht möglich ist, wird der Chip wahrscheinlich einfach nichts rendern. Das ganze ist eher eine kleine Spielerei denn eine sinnvolle Funktion.
Dasselbe gilt für den Vertex Shader. Manche Effekte mögen zwar in Hardware laufen, andere aber müssen von der CPU emuliert werden.

aths
2002-02-11, 18:51:09
Premium,

Die Summe der Textur-Deklarationen (bis zu 4) und der Befehle darf im PS.1.0 die Zahl 8 nicht übersteigen, mit PS.1.1 sind sowohl 4 Deklarationen als auch 8 Befehle möglich. Es gibt in der Version 1.1 ein paar Befehle mehr. Das beste ist, dass ein Befehl gleichzeitig aus 2 Texturen lesen kann. Unter anderem heisst das, dass Lightmapping mit einem Befehl realisierbar ist, PS.1.0 bräuchte 2.

Beispiel:

asm
{
ps.1.0
tex t0
tex t1
mov r0,t0
mul r0,r0,t1
}

Texturen 0 und 1 werden als Textur (tex) deklariert. Die Grundtextur (hier 0) wird in das (Output) Register 0 geschoben, und dieses wird im nächsten Befehl mit Textur 1 (der Lightmap) multipliziert.

Mit dem PixelShader 1.1 geht das einfacher:

asm
{
ps.1.1
tex t0
tex t1
mul r0,t0,t1
}

Da ein Befehl hier aus zwei Texturen lesen darf, lässt sich die multiplikative Verknüpfung in einem Befehl machen.

Wie Xmas schon schrieb kann die Radeon (R100) keinen richtigen PS.1.0 bieten, da sie nur 3 Texturen pro Pass auftragen kann, PS.1.0 jedoch bis zu 4 erlaubt.

Um den VertexShader brauchst du dir keinen Kopf machen, Version 1.1 kann problemlos von der CPU emuliert werden.