vec4 light_dir_1 = texelFetch( uLightsArray, light_indices.y*3+2 );
vec4 light_dir_2 = texelFetch( uLightsArray, light_indices.z*3+2 );
- //return vec3(fract(distance(light_co_0.xyz,aWorldCo)),
- // fract(distance(light_co_1.xyz,aWorldCo)),
- // fract(distance(light_co_2.xyz,aWorldCo)));
-
- // return vec3(fract(light_indices.x * 0.125), fract(light_indices.y*0.125),
- // fract(light_indices.z * 0.125 ));
-
- total_light += newlight_compute_spot
- (
- wnormal, halfview,
- light_colour_0.rgb,
- light_co_0.xyz,
- light_dir_0
- ) * board_shadow;
-
- total_light += newlight_compute_spot
- (
- wnormal, halfview,
- light_colour_1.rgb,
- light_co_1.xyz,
- light_dir_1
- ) * board_shadow;
- total_light += newlight_compute_spot
- (
- wnormal, halfview,
- light_colour_2.rgb,
- light_co_2.xyz,
- light_dir_2
- ) * board_shadow;
+ if( g_debug_indices == 1 )
+ {
+ float rings = min( fract(distance(light_co_0.xyz,aWorldCo)),
+ min( fract(distance(light_co_1.xyz,aWorldCo)),
+ fract(distance(light_co_2.xyz,aWorldCo)) )
+ );
+
+ return vec3(fract(light_indices.x * 0.125), fract(light_indices.y*0.125),
+ fract(light_indices.z * 0.125 )) + (rings-0.5) * 0.25;
+ }
+
+ if( g_debug_complexity == 1 )
+ {
+ return vec3(1.0,0.0,0.0) * ( light_indices.w/3.0 );
+ }
+
+ if( light_indices.w >= 1 )
+ {
+ total_light += newlight_compute_spot
+ (
+ wnormal, halfview,
+ light_colour_0.rgb,
+ light_co_0.xyz,
+ light_dir_0
+ ) * board_shadow
+ * step( world.day_phase, light_colour_0.w );
+
+ if( light_indices.w >= 2 )
+ {
+ total_light += newlight_compute_spot
+ (
+ wnormal, halfview,
+ light_colour_1.rgb,
+ light_co_1.xyz,
+ light_dir_1
+ ) * board_shadow
+ * step( world.day_phase, light_colour_1.w );
+
+ if( light_indices.w >= 3 )
+ {
+ total_light += newlight_compute_spot
+ (
+ wnormal, halfview,
+ light_colour_2.rgb,
+ light_co_2.xyz,
+ light_dir_2
+ ) * board_shadow
+ * step( world.day_phase, light_colour_2.w );
+ }
+ }
+ }
vec3 fog_colour = scene_sky( -halfview, world );