Показать сообщение отдельно
Старый 03.02.2013, 14:43   #22
tirarex
Бывалый
 
Аватар для tirarex
 
Регистрация: 23.11.2011
Сообщений: 863
Написано 334 полезных сообщений
(для 866 пользователей)
Ответ: много шейдерного света

тоесть так :
шейдер


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];





}



только вот на счёт кода не понял
(Offline)
 
Ответить с цитированием