Skip to main content

extract_meshes_for_gpu_building

Function extract_meshes_for_gpu_building 

Source
pub fn extract_meshes_for_gpu_building(
    render_mesh_instances: ResMut<'_, RenderMeshInstances>,
    render_visibility_ranges: Res<'_, RenderVisibilityRanges>,
    render_mesh_instance_queues: ResMut<'_, RenderMeshInstanceGpuQueues>,
    changed_meshes_query: Extract<'_, '_, Query<'_, '_, (Entity, Read<ViewVisibility>, Read<GlobalTransform>, Option<Read<PreviousGlobalTransform>>, Option<Read<Lightmap>>, Option<Read<Aabb>>, Read<Mesh3d>, Option<Read<MeshTag>>, (Has<NoFrustumCulling>, Has<NotShadowReceiver>, Has<TransmittedShadowReceiver>, Has<NotShadowCaster>, Has<NoAutomaticBatching>, Has<NoCpuCulling>), Option<Read<VisibilityRange>>, Option<Read<RenderLayers>>), Or<(Changed<ViewVisibility>, Changed<GlobalTransform>, Changed<PreviousGlobalTransform>, Changed<Lightmap>, Changed<Aabb>, Changed<Mesh3d>, Changed<MeshTag>, Or<(Changed<NoFrustumCulling>, Changed<NotShadowReceiver>, Changed<TransmittedShadowReceiver>, Changed<NotShadowCaster>, Changed<NoAutomaticBatching>, Changed<NoCpuCulling>)>, Changed<VisibilityRange>, Changed<SkinnedMesh>)>>>,
    (removed_previous_global_transform_query, removed_lightmap_query, removed_aabb_query, removed_mesh_tag_query, removed_no_frustum_culling_query, removed_not_shadow_receiver_query, removed_transmitted_receiver_query, removed_not_shadow_caster_query, removed_no_automatic_batching_query, removed_no_cpu_culling_query, removed_visibility_range_query, removed_skinned_mesh_query): (Extract<'_, '_, RemovedComponents<'_, '_, PreviousGlobalTransform>>, Extract<'_, '_, RemovedComponents<'_, '_, Lightmap>>, Extract<'_, '_, RemovedComponents<'_, '_, Aabb>>, Extract<'_, '_, RemovedComponents<'_, '_, MeshTag>>, Extract<'_, '_, RemovedComponents<'_, '_, NoFrustumCulling>>, Extract<'_, '_, RemovedComponents<'_, '_, NotShadowReceiver>>, Extract<'_, '_, RemovedComponents<'_, '_, TransmittedShadowReceiver>>, Extract<'_, '_, RemovedComponents<'_, '_, NotShadowCaster>>, Extract<'_, '_, RemovedComponents<'_, '_, NoAutomaticBatching>>, Extract<'_, '_, RemovedComponents<'_, '_, NoCpuCulling>>, Extract<'_, '_, RemovedComponents<'_, '_, VisibilityRange>>, Extract<'_, '_, RemovedComponents<'_, '_, SkinnedMesh>>),
    all_meshes_query: Extract<'_, '_, Query<'_, '_, (Entity, Read<ViewVisibility>, Read<GlobalTransform>, Option<Read<PreviousGlobalTransform>>, Option<Read<Lightmap>>, Option<Read<Aabb>>, Read<Mesh3d>, Option<Read<MeshTag>>, (Has<NoFrustumCulling>, Has<NotShadowReceiver>, Has<TransmittedShadowReceiver>, Has<NotShadowCaster>, Has<NoAutomaticBatching>, Has<NoCpuCulling>), Option<Read<VisibilityRange>>, Option<Read<RenderLayers>>)>>,
    removed_meshes_query: Extract<'_, '_, RemovedComponents<'_, '_, Mesh3d>>,
    gpu_culling_query: Extract<'_, '_, Query<'_, '_, (), (With<Camera>, Without<NoIndirectDrawing>)>>,
    meshes_to_reextract_next_frame: ResMut<'_, MeshesToReextractNextFrame>,
    reextract_entities: Local<'_, EntityHashSet>,
    potential_reextraction_set: Local<'_, IndexSet<Entity, EntityHash>>,
    potential_reextraction_bitfield: Local<'_, Vec<AtomicU64>>,
)
Expand description

Extracts meshes from the main world to thread-local buffers in the render world.

This is optimized to only look at entities that have changed since the last frame.

This is the variant of the system that runs when we’re using GPU MeshUniform building.