Смягчение углов направленного источника

This commit is contained in:
Ковалев Роман Евгеньевич 2022-12-20 15:59:32 +03:00 committed by R.E. Kovalev
parent 891014a79c
commit 60aa8fea1f

View File

@ -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);
}