Ответ: много шейдерного света
тоесть так :
шейдер
float3 PosLight[100];
float RngLight[100];
float RDotLight[100];
const float3 LightClr[100]; // Light Color
const float LightInt[100]; // Light Intensity
цикл
for(int i=0;i<100;i++)
{
RngLight[i] = pow(saturate(1.0f-(distance(IN.pWorld,PosLight[i])/RngLight[i])),DotLight[i]);
cN = normalize(tex2D(TexNormal,IN.TexCoords)*2.0f-1.0f);
PosLight[i] = normalize(PosLight[i]-IN.pWorld);
nLight[i] = float3(dot(PosLight[i],IN.Tangent),
dot(PosLight[i],IN.Binormal),dot(PosLight[i],IN.Normal));
nLight[i] = pow(max(dot(cN,nLight[i]),0.0f),0.8f);
Color += cD.rgb*nLight[i]*LightClr[i]*LightInt[i]*RngLight[i];
}
только вот на счёт кода не понял
|