-vec3 newlight_compute_quadratic( vec3 wnormal, vec3 halfview,
- vec3 light_pos, vec3 light_colour )
+float newlight_specular( vec3 wnormal, vec3 dir, vec3 halfview, float exponent )
+{
+ vec3 specdir = reflect( -dir, wnormal );
+ return pow(max(dot( halfview, specdir ), 0.0), exponent);
+}
+
+vec3 newlight_compute_quadratic( vec3 wnormal, float max_dist,
+ vec3 light_colour, vec3 light_pos )
+{
+ vec3 light_delta = light_pos-aWorldCo;
+
+ float dist2 = dot(light_delta,light_delta);
+
+ float quadratic = dist2*100.0;
+ float attenuation = 1.0f/( 1.0f + quadratic );
+ attenuation *= max( dot( normalize(light_delta), wnormal ), 0.0 );
+
+ float falloff = max( 0.0, 1.0-(dist2*max_dist) );
+ return light_colour * attenuation * falloff;
+}
+
+vec3 newlight_compute_spot( vec3 wnormal, vec3 halfview,
+ vec3 light_colour, vec3 light_pos,
+ vec4 light_dir )