-" // Lighting\n"
-" vec3 halfview = uCamera - aWorldCo;\n"
-" float fdist = length(halfview);\n"
-" halfview /= fdist;\n"
-"\n"
-" vec3 total_light = newlight_compute_ambient();\n"
-" \n"
-" // Compute world lighting contribution and apply it according to the\n"
-" // shadow map\n"
-" //\n"
-" vec3 world_light = newlight_compute_world_diffuse( wnormal );\n"
-" world_light += newlight_compute_sun_spec( wnormal, halfview, 0.1 );\n"
-"\n"
-" float world_shadow = newlight_compute_sun_shadow();\n"
-" float board_shadow = compute_board_shadow();\n"
-"\n"
-" total_light += world_light * min( board_shadow, world_shadow );\n"
-"\n"
-" // Compute the other lights that exist in the map, not effected by the sun\n"
-" // shadow\n"
-"\n"
-" total_light += newlight_compute_quadratic\n"
-" ( \n"
-" wnormal, halfview,\n"
-" light_positions[0].xyz,\n"
-" light_colours[0].rgb \n"
-" ) * board_shadow;\n"
-" total_light += newlight_compute_quadratic\n"
-" ( \n"
-" wnormal, halfview,\n"
-" light_positions[1].xyz,\n"
-" light_colours[1].rgb \n"
-" ) * board_shadow;\n"
-" total_light += newlight_compute_quadratic\n"
-" ( \n"
-" wnormal, halfview,\n"
-" light_positions[2].xyz,\n"
-" light_colours[2].rgb \n"
-" ) * board_shadow;\n"
-"\n"
-" return apply_fog( diffuse * total_light, fdist );\n"