Yesterday I compiled Sphere2 DLL with the current A7 SDK and DirectX SDK feb 2007 release. Everything seemed to work, but after test in A7.04.2 i've noticed this shader compile error with parallax.fx: (Everything else works though).

Somewhere I read the message "You are trying to do things that aren't supported in the 1.1 shader model, but compiling this as a 2.0 shader will make it work." And On
Gamasutra I found more information about the error.
Quote:
Normalizing vectors in the pixel shader is quite expensive, because every pixel shader version has a restricted number of assembly instruction slots available for use by the output of the HLSL compiler. If more instructions slots are used than available, the compiler will display an error message like the following:
error X4532: Cannot map expression to pixel shader instruction set.
The number of instruction slots available in a specific Direct3D pixel shader version usually corresponds to the number of instruction slots available in graphics cards. The high-level language compiler can not choose a suitable shader version on its own, this has to be done by the programmer. If your game will targets something other than the least common denominator of graphics cards on the target market, several shader versions must be provided.
parallax.fx line 312:
Code:
VS_OUTPUT_STRUCTV VS_PASSV( VS_INPUT_STRUCTV vsInStruct )
{
VS_OUTPUT_STRUCTV vsOutStruct;
vsOutStruct.Fog = 10000;
vsOutStruct.position = mul( vsInStruct.position,matWorldViewProj );
vsOutStruct.texcoord = vsInStruct.texcoord0;
float4 PosWorld = mul(vsInStruct.position, matWorld);
float3 Norm = normalize(mul(vsInStruct.normal,matWorld));
vsOutStruct.LightColor=0;
for (int i=6; i<numlights; i++)
{
vsOutStruct.LightColor+=vertLight(PosWorld,Norm,vecLightxyz[i].xyz,vecLightrgba[i]);
}
return vsOutStruct;
}
parallax.fx line 4822:
Code:
pass vertlights
{
cullmode=ccw;
alphablendenable=true;
srcblend=one;
destblend=one;
zenable=true;
zwriteenable=false;
zfunc=equal;
VertexShader = compile vs_2_0 VS_PASSV();
PixelShader = compile ps_2_0 PS_PASSV();
}
}