it only works with 1 light because float number has a value of 1
i think that you need a bucle :

for (number=1; number<=8; number+=1) {}


try thiis :


float number;

float4 SpecularCubePS( in float2 InTex : TEXCOORD0,
in float3 InTexCube : TEXCOORD1,
in float3 InNormal : TEXCOORD2,
in float4 InViewDir : TEXCOORD3) : COLOR
{
number = 1;
InNormal = normalize(InNormal);

//add a bucle im not sure if is number+=1 or number++
for (number=1; number<=8; number++) {

float4 Ambient = vecLight[number];

float4 Diffuse = saturate(dot(vecLightColor[1], InNormal));

float4 texColor = tex2D(ColorMapSampler, InTex);
float4 cubeColor = texCUBE(CubeMapSampler, InTexCube);
float4 Color = lerp(texColor, cubeColor, 1 - texColor.a);

float3 R = normalize(2 * dot(InNormal, vecLightColor[number] + SpecularIntensity) * InNormal - SpecularIntensity);

InViewDir = vecLightPos[number] + SpecularIntensity *vecLight[number];

} //end for

float Specular = saturate(dot(R, InViewDir));
return (Ambient + Diffuse + Specular) * Color;
}


Web Master