pub fn queue_shadows<M: Material>(
shadow_draw_functions: Res<'_, DrawFunctions<Shadow>>,
prepass_pipeline: Res<'_, PrepassPipeline<M>>,
casting_meshes: Query<'_, '_, (&Handle<Mesh>, &Handle<M>), Without<NotShadowCaster>>,
render_meshes: Res<'_, RenderAssets<Mesh>>,
render_materials: Res<'_, RenderMaterials<M>>,
pipelines: ResMut<'_, SpecializedMeshPipelines<PrepassPipeline<M>>>,
pipeline_cache: Res<'_, PipelineCache>,
view_lights: Query<'_, '_, (Entity, &ViewLightEntities)>,
view_light_shadow_phases: Query<'_, '_, (&LightEntity, &mut RenderPhase<Shadow>)>,
point_light_entities: Query<'_, '_, &CubemapVisibleEntities, With<ExtractedPointLight>>,
directional_light_entities: Query<'_, '_, &CascadesVisibleEntities, With<ExtractedDirectionalLight>>,
spot_light_entities: Query<'_, '_, &VisibleEntities, With<ExtractedPointLight>>
)where
M::Data: PartialEq + Eq + Hash + Clone,