3 * @brief Dynamic lighting fragment shader.
6vec3 LightContribution(vec4 lightParams, vec3 lightDir, vec3 normal) {
8 vec3 dir = normalize(delta);
9 float NdotL = clamp(dot(normal, dir), 0.0, 1.0);
11 float dist = length(delta);
12 float attenDiv = max(lightParams.a * dist * dist, 0.5);
13 float attenuation = 1.0 / attenDiv;
15 return lightParams.rgb * NdotL * attenuation;
19 * @brief LightFragment.
21vec3 LightFragment(vec3 normal) {
22 vec3 light = vec3(0.0);
24#unroll r_dynamic_lights
25 light += LightContribution(LIGHTPARAMS[$], lightDirs[$], normal);