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.
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.