PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Könnte jemand mal einen Blick auf diesen Effekt werfen?


muhkuh_rs
2005-07-13, 17:29:14
Hallo,

ich glaube ich bin auf einen Fehler im Microsoft Shader Compiler gestoßen und habe einen kleinen test case geschrieben. Könnte jemand mal drüber schauen, ob ich nicht irgendwas selber falsch gemacht habe bzw. den Effekt selber mal übersetzen, um ein vergurktes System bei mir auszuschließen?

Der Fehler tritt nur bei shader model 3 auf. IMO benutzt der Compiler statt der Register v0 bis v9 im Pixel Shader v1 bis v10 und v10 gibt es nicht. Kompiliert man mit SM 2.0, dann funktioniert es. Der Test case addiert einfach alle 10 Input Register.

http://muer.njoerdba.com/paste/view.aspx?id=2bca96fe-fed3-47c1-b00a-208eff02bd2b

Edit:
Ein Workaround scheint zu sein, statt:
struct vertexOutput
{
float4 hPosition : POSITION;
float4 tex0 : COLOR0;
float4 tex1 : COLOR1;
float4 tex2 : TEXCOORD0;
float4 tex3 : TEXCOORD1;
float4 tex4 : TEXCOORD2;
float4 tex5 : TEXCOORD3;
float4 tex6 : TEXCOORD4;
float4 tex7 : TEXCOORD5;
float4 tex8 : TEXCOORD6;
float4 tex9 : TEXCOORD7;
};

Das zu schreiben:
struct vertexOutput
{
float4 tex0 : COLOR0;
float4 tex1 : COLOR1;
float4 tex2 : TEXCOORD0;
float4 tex3 : TEXCOORD1;
float4 tex4 : TEXCOORD2;
float4 tex5 : TEXCOORD3;
float4 tex6 : TEXCOORD4;
float4 tex7 : TEXCOORD5;
float4 tex8 : TEXCOORD6;
float4 tex9 : TEXCOORD7;
float4 hPosition : POSITION;
};

Ganz im Sinne des Erfinders kann das aber wohl nicht sein.


Danke.

Demirug
2005-07-13, 18:13:43
Ist AFAIK ein bekanntes Problem.

Die Position sollte man immer ans Ende der Struktur setzten.

Coda
2005-07-13, 18:17:27
Oh - gut dass das einem mal jemand sagt.

muhkuh_rs
2005-07-13, 18:25:04
Aha. Auch wenn das bekannt ist, sollte man das denen möglichst 100fach als Bugreport vor den Latz knallen. Alle zwei Monate werfen sie ein neues >100MB SDK Update unters Volk und mit solchem Kinderkrankheiten muss man sich trotzdem rumschlagen.

Coda
2005-07-13, 18:44:14
Jetzt übertreibst du maßlos. Es gibt jährlich ein Update und erst das letzte hatte soweit ich weiß einen SM 3.0 fähigen Compiler.

muhkuh_rs
2005-07-13, 18:59:05
Jetzt übertreibst du maßlos. Es gibt jährlich ein Update und erst das letzte hatte soweit ich weiß einen SM 3.0 fähigen Compiler.

Nein. Es gibt alle zwei Monate Updates in letzter Zeit:

Dezember 2004
Februar 2005
April 2005
Juni 2005

Links für die letzten beiden finden sich noch in der Download-Section bei Microsoft.