Смягчение углов направленного источника
This commit is contained in:
parent
891014a79c
commit
60aa8fea1f
@ -53,7 +53,7 @@ void main()
|
||||
float specular; // Зеркальная составляющая
|
||||
float attenuation; // Угасание с учетом расстояния
|
||||
float acosA; // Косинус между вектором от поверхности к источнику и обратным направлением источника
|
||||
|
||||
float intensity; // Интенсивность для прожектора
|
||||
|
||||
// Фоновая освещенность
|
||||
color = vec4(ka, 1);
|
||||
@ -88,6 +88,14 @@ void main()
|
||||
// Угасание с учетом расстояния
|
||||
attenuation = 1 / (1 + light_f.data[i].K[0] * L_distance + light_f.data[i].K[1] * L_distance * L_distance);
|
||||
|
||||
// Если источник - прожектор, то добавим смягчение
|
||||
if (light_f.data[i].angle < 180)
|
||||
{
|
||||
intensity = clamp((light_f.data[i].angle - acosA) / 5, 0.0, 1.0);
|
||||
diffuse *= intensity;
|
||||
specular *= intensity;
|
||||
}
|
||||
|
||||
color += vec4(light_f.data[i].color*kd*diffuse * attenuation, 1)
|
||||
+ vec4(light_f.data[i].color*ks*specular * attenuation, 1);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user