I just looked at the code in light.fx. related to searchlights. There is a limit of no more than 8.
What it appears to be calculating is the lighting effect on the target aircraft, and nothing related to tracking is in there. The intensity of the lighting effect is dependent on the range defined for the searchlight, with the intensity falling off based on the point to point distance the aircraft is from the searchlight.
float2 calcSearchLights(float3 worldPos, float3 normal, bool bSpecularEnable, float fPower)
{
float2 searchlight = 0; // x = diffuse, y = specular
for(int i = 0; i < iNSearchLights; i++)
{
float3 vec = worldPos.xyz - arrSearchLights.vWorldPos.xyz;
float radiusSq = dot(vec, vec);
if(radiusSq < SearchLightRange*SearchLightRange)
{
float vecLength = sqrt(radiusSq);
float range = vecLength/SearchLightRange;
float dist = length(cross(vec, arrSearchLights.vWorldDir));
float inner = lerp(0.5, SearchLightCone, range);
float falloff = 10;
float outer = inner + falloff;
if(dist < outer)
{
float NdotL = saturate(dot(normal.xyz, -vec/vecLength));
float lightAmount = saturate((outer - dist)/falloff) * (2-range*2) * NdotL;
searchlight.x += lightAmount * 2; // diffuse
if(bSpecularEnable)
{
float3 H = normalize(arrSearchLights.vWorldDir - normalize(worldPos.xyz));
float HdotN = saturate(dot(H, normal.xyz));
searchlight.y += pow(HdotN, fPower) * (fPower + 2) / 8 * lightAmount; // specular
}
else
{
searchlight.y = 0;
}
}
}
}
return searchlight;
}
I wonder if the searchlights you were testing might actually still be working as they did without the shaders, but the effect is now so dim you can't tell. If that's the case then changing the SearchLightRange, Falloff rate, or LightAmount multiplier might help