12-25-2012, 03:24 AM
So I'm playing Super Mario Sunshine, I jump into the warp gate to Gelato Beach, I select episode 7, the screen is white for about 10 seconds, and it gives me the error "Failed to compile vertex shader!" I press ok, and then "Dolphin.exe has stopped working". It tells me it happens with outdated GPUs and integrated GPUs, but..
Intel Core i3-2100 3.10 GHz
AMD Radeon HD 6570 2GB
4GB RAM
Windows 7 Professional x64
Here is the bad_vs_0000.txt the error message told me to refer to:
Intel Core i3-2100 3.10 GHz
AMD Radeon HD 6570 2GB
4GB RAM
Windows 7 Professional x64
Here is the bad_vs_0000.txt the error message told me to refer to:
Code:
//Vertex Shader: comp:400,
typedef struct { float4 T0, T1, T2; float4 N0, N1, N2; } s_cpnmtx;
typedef struct { float4 t; } FLT4;
typedef struct { FLT4 T[24]; } s_ctexmtx;
typedef struct { FLT4 T[64]; } s_ctrmtx;
typedef struct { FLT4 T[32]; } s_cnmtx;
typedef struct { FLT4 T[64]; } s_cpostmtx;
typedef struct { float4 col; float4 cosatt; float4 distatt; float4 pos; float4 dir; } Light;
typedef struct { Light lights[8]; } s_clights;
typedef struct { float4 C0, C1, C2, C3; } s_cmtrl;
typedef struct { float4 T0, T1, T2, T3; } s_cproj;
struct VS_OUTPUT {
float4 pos : POSITION;
float4 colors_0 : COLOR0;
float4 colors_1 : COLOR1;
float4 tex0 : TEXCOORD0;
float4 tex1 : TEXCOORD1;
float4 tex2 : TEXCOORD2;
float4 tex3 : TEXCOORD3;
float3 tex4 : TEXCOORD4;
float3 tex5 : TEXCOORD5;
float3 tex6 : TEXCOORD6;
float3 tex7 : TEXCOORD7;
float3 tex8 : TEXCOORD8;
float3 tex9 : TEXCOORD9;
float3 tex10 : TEXCOORD10;
float3 tex11 : TEXCOORD11;
float3 tex12 : TEXCOORD12;
float3 tex13 : TEXCOORD13;
float3 tex14 : TEXCOORD14;
};
uniform s_ctrmtx ctrmtx : register(c78);
uniform s_ctexmtx ctexmtx : register(c54);
uniform s_cnmtx cnmtx : register(c142);
uniform s_cpnmtx cpnmtx : register(c0);
uniform s_cpostmtx cpostmtx : register(c174);
uniform s_clights clights : register(c14);
uniform s_cmtrl cmtrl : register(c10);
uniform s_cproj cproj : register(c6);
uniform float4 cDepth : register(c238);
VS_OUTPUT main(
float3 rawnorm0 : NORMAL0,
float4 rawpos : POSITION) {
VS_OUTPUT o;
float4 pos = float4(dot(cpnmtx.T0, rawpos), dot(cpnmtx.T1, rawpos), dot(cpnmtx.T2, rawpos), 1.0f);
float3 _norm0 = normalize(float3(dot(cpnmtx.N0.xyz, rawnorm0), dot(cpnmtx.N1.xyz, rawnorm0), dot(cpnmtx.N2.xyz, rawnorm0)));
o.pos = float4(dot(cproj.T0, pos), dot(cproj.T1, pos), dot(cproj.T2, pos), dot(cproj.T3, pos));
float4 mat, lacc;
float3 ldir, h;
float dist, dist2, attn;
{
mat = float4(1.0f, 1.0f, 1.0f, 1.0f);
lacc = float4(1.0f, 1.0f, 1.0f, 1.0f);
lacc.w = 1.0f;
o.colors_0 = mat * saturate(lacc);
}
{
mat = cmtrl.C3;
lacc = cmtrl.C1;
lacc.w = 1.0f;
o.colors_1 = mat * saturate(lacc);
}
float4 coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
o.tex0.xyz = float3(dot(coord, ctexmtx.T[0].t), dot(coord, ctexmtx.T[1].t), 1);
float4 P0 = cpostmtx.T[61].t;
float4 P1 = cpostmtx.T[62].t;
float4 P2 = cpostmtx.T[63].t;
o.tex0.xyz = float3(dot(P0.xyz, o.tex0.xyz) + P0.w, dot(P1.xyz, o.tex0.xyz) + P1.w, dot(P2.xyz, o.tex0.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
o.tex1.xyz = float3(o.colors_0.x, o.colors_0.y, 1);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
o.tex2.xyz = float3(dot(coord, ctexmtx.T[6].t), dot(coord, ctexmtx.T[7].t), 1);
float4 P0 = cpostmtx.T[61].t;
float4 P1 = cpostmtx.T[62].t;
float4 P2 = cpostmtx.T[63].t;
o.tex2.xyz = float3(dot(P0.xyz, o.tex2.xyz) + P0.w, dot(P1.xyz, o.tex2.xyz) + P1.w, dot(P2.xyz, o.tex2.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
o.tex3.xyz = float3(dot(coord, ctexmtx.T[9].t), dot(coord, ctexmtx.T[10].t), 1);
float4 P0 = cpostmtx.T[61].t;
float4 P1 = cpostmtx.T[62].t;
float4 P2 = cpostmtx.T[63].t;
o.tex3.xyz = float3(dot(P0.xyz, o.tex3.xyz) + P0.w, dot(P1.xyz, o.tex3.xyz) + P1.w, dot(P2.xyz, o.tex3.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
o.tex4.xyz = float3(dot(coord, ctexmtx.T[12].t), dot(coord, ctexmtx.T[13].t), 1);
float4 P0 = cpostmtx.T[61].t;
float4 P1 = cpostmtx.T[62].t;
float4 P2 = cpostmtx.T[63].t;
o.tex4.xyz = float3(dot(P0.xyz, o.tex4.xyz) + P0.w, dot(P1.xyz, o.tex4.xyz) + P1.w, dot(P2.xyz, o.tex4.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
o.tex5.xyz = float3(dot(coord, ctexmtx.T[15].t), dot(coord, ctexmtx.T[16].t), 1);
float4 P0 = cpostmtx.T[61].t;
float4 P1 = cpostmtx.T[62].t;
float4 P2 = cpostmtx.T[63].t;
o.tex5.xyz = float3(dot(P0.xyz, o.tex5.xyz) + P0.w, dot(P1.xyz, o.tex5.xyz) + P1.w, dot(P2.xyz, o.tex5.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
o.tex6.xyz = float3(dot(coord, ctexmtx.T[18].t), dot(coord, ctexmtx.T[19].t), 1);
float4 P0 = cpostmtx.T[61].t;
float4 P1 = cpostmtx.T[62].t;
float4 P2 = cpostmtx.T[63].t;
o.tex6.xyz = float3(dot(P0.xyz, o.tex6.xyz) + P0.w, dot(P1.xyz, o.tex6.xyz) + P1.w, dot(P2.xyz, o.tex6.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
o.tex7.xyz = float3(dot(coord, ctexmtx.T[21].t), dot(coord, ctexmtx.T[22].t), 1);
float4 P0 = cpostmtx.T[61].t;
float4 P1 = cpostmtx.T[62].t;
float4 P2 = cpostmtx.T[63].t;
o.tex7.xyz = float3(dot(P0.xyz, o.tex7.xyz) + P0.w, dot(P1.xyz, o.tex7.xyz) + P1.w, dot(P2.xyz, o.tex7.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
coord = rawpos;
o.tex8.xyz = float3(dot(coord, ctrmtx.T[tex8.z].t), dot(coord, ctrmtx.T[tex8.z+1].t), 1);
float4 P0 = cpostmtx.T[5].t;
float4 P1 = cpostmtx.T[6].t;
float4 P2 = cpostmtx.T[7].t;
o.tex8.xyz = float3(dot(P0.xyz, o.tex8.xyz) + P0.w, dot(P1.xyz, o.tex8.xyz) + P1.w, dot(P2.xyz, o.tex8.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
coord = rawpos;
o.tex9.xyz = float3(dot(coord, ctexmtx.T[27].t), dot(coord, ctexmtx.T[28].t), 1);
float4 P0 = cpostmtx.T[0].t;
float4 P1 = cpostmtx.T[1].t;
float4 P2 = cpostmtx.T[2].t;
o.tex9.xyz = float3(dot(P0.xyz, o.tex9.xyz) + P0.w, dot(P1.xyz, o.tex9.xyz) + P1.w, dot(P2.xyz, o.tex9.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
coord = rawpos;
o.tex10.xyz = float3(dot(coord, ctexmtx.T[30].t), dot(coord, ctexmtx.T[31].t), 1);
float4 P0 = cpostmtx.T[0].t;
float4 P1 = cpostmtx.T[1].t;
float4 P2 = cpostmtx.T[2].t;
o.tex10.xyz = float3(dot(P0.xyz, o.tex10.xyz) + P0.w, dot(P1.xyz, o.tex10.xyz) + P1.w, dot(P2.xyz, o.tex10.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
coord = rawpos;
o.tex11.xyz = float3(dot(coord, ctexmtx.T[33].t), dot(coord, ctexmtx.T[34].t), 1);
float4 P0 = cpostmtx.T[0].t;
float4 P1 = cpostmtx.T[1].t;
float4 P2 = cpostmtx.T[2].t;
o.tex11.xyz = float3(dot(P0.xyz, o.tex11.xyz) + P0.w, dot(P1.xyz, o.tex11.xyz) + P1.w, dot(P2.xyz, o.tex11.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
coord = rawpos;
o.tex12.xyz = float3(dot(coord, ctexmtx.T[36].t), dot(coord, ctexmtx.T[37].t), 1);
float4 P0 = cpostmtx.T[3].t;
float4 P1 = cpostmtx.T[4].t;
float4 P2 = cpostmtx.T[5].t;
o.tex12.xyz = float3(dot(P0.xyz, o.tex12.xyz) + P0.w, dot(P1.xyz, o.tex12.xyz) + P1.w, dot(P2.xyz, o.tex12.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
coord = rawpos;
o.tex13.xyz = float3(dot(coord, ctexmtx.T[39].t), dot(coord, ctexmtx.T[40].t), 1);
float4 P0 = cpostmtx.T[7].t;
float4 P1 = cpostmtx.T[8].t;
float4 P2 = cpostmtx.T[9].t;
o.tex13.xyz = float3(dot(P0.xyz, o.tex13.xyz) + P0.w, dot(P1.xyz, o.tex13.xyz) + P1.w, dot(P2.xyz, o.tex13.xyz) + P2.w);
}
{
coord = float4(0.0f, 0.0f, 1.0f, 1.0f);
coord = rawpos;
o.tex14.xyz = float3(dot(coord, ctexmtx.T[42].t), dot(coord, ctexmtx.T[43].t), 1);
float4 P0 = cpostmtx.T[11].t;
float4 P1 = cpostmtx.T[12].t;
float4 P2 = cpostmtx.T[13].t;
o.tex14.xyz = float3(dot(P0.xyz, o.tex14.xyz) + P0.w, dot(P1.xyz, o.tex14.xyz) + P1.w, dot(P2.xyz, o.tex14.xyz) + P2.w);
}
o.tex0.w = pos.x;
o.tex1.w = pos.y;
o.tex2.w = o.pos.z;
o.tex3.w = o.pos.w;
o.pos.z = cDepth.x * o.pos.w + o.pos.z * cDepth.y;
return o;
}