pub fn queue_prepass_material_meshes<M: Material>(
    opaque_draw_functions: Res<'_, DrawFunctions<Opaque3dPrepass>>,
    alpha_mask_draw_functions: Res<'_, DrawFunctions<AlphaMask3dPrepass>>,
    opaque_deferred_draw_functions: Res<'_, DrawFunctions<Opaque3dDeferred>>,
    alpha_mask_deferred_draw_functions: Res<'_, DrawFunctions<AlphaMask3dDeferred>>,
    prepass_pipeline: Res<'_, PrepassPipeline<M>>,
    pipelines: ResMut<'_, SpecializedMeshPipelines<PrepassPipeline<M>>>,
    pipeline_cache: Res<'_, PipelineCache>,
    msaa: Res<'_, Msaa>,
    render_meshes: Res<'_, RenderAssets<Mesh>>,
    render_mesh_instances: Res<'_, RenderMeshInstances>,
    render_materials: Res<'_, RenderMaterials<M>>,
    render_material_instances: Res<'_, RenderMaterialInstances<M>>,
    render_lightmaps: Res<'_, RenderLightmaps>,
    views: Query<'_, '_, (&ExtractedView, &VisibleEntities, Option<&mut RenderPhase<Opaque3dPrepass>>, Option<&mut RenderPhase<AlphaMask3dPrepass>>, Option<&mut RenderPhase<Opaque3dDeferred>>, Option<&mut RenderPhase<AlphaMask3dDeferred>>, Option<&DepthPrepass>, Option<&NormalPrepass>, Option<&MotionVectorPrepass>, Option<&DeferredPrepass>), Or<(With<RenderPhase<Opaque3dPrepass>>, With<RenderPhase<AlphaMask3dPrepass>>, With<RenderPhase<Opaque3dDeferred>>, With<RenderPhase<AlphaMask3dDeferred>>)>>
)
where M::Data: PartialEq + Eq + Hash + Clone,