pub fn extract_lights(
    commands: Commands<'_, '_>,
    point_light_shadow_map: Extract<'_, '_, Res<'_, PointLightShadowMap>>,
    directional_light_shadow_map: Extract<'_, '_, Res<'_, DirectionalLightShadowMap>>,
    global_point_lights: Extract<'_, '_, Res<'_, GlobalVisiblePointLights>>,
    point_lights: Extract<'_, '_, Query<'_, '_, (&PointLight, &CubemapVisibleEntities, &GlobalTransform, &ViewVisibility, &CubemapFrusta)>>,
    spot_lights: Extract<'_, '_, Query<'_, '_, (&SpotLight, &VisibleEntities, &GlobalTransform, &ViewVisibility, &Frustum)>>,
    directional_lights: Extract<'_, '_, Query<'_, '_, (Entity, &DirectionalLight, &CascadesVisibleEntities, &Cascades, &CascadeShadowConfig, &CascadesFrusta, &GlobalTransform, &ViewVisibility, Option<&RenderLayers>), Without<SpotLight>>>,
    previous_point_lights_len: Local<'_, usize>,
    previous_spot_lights_len: Local<'_, usize>
)