Struct re_renderer::PickingLayerProcessor
source · pub struct PickingLayerProcessor {
pub picking_target: Arc<DynamicResource<GpuTextureHandle, TextureDesc, GpuTextureInternal>>,
/* private fields */
}Expand description
Manages the rendering of the picking layer pass, its render targets & readback buffer.
The view builder creates this for every frame that requests a picking result.
Fields§
§picking_target: Arc<DynamicResource<GpuTextureHandle, TextureDesc, GpuTextureInternal>>Implementations§
source§impl PickingLayerProcessor
impl PickingLayerProcessor
sourcepub const PICKING_LAYER_FORMAT: TextureFormat = wgpu::TextureFormat::Rgba32Uint
pub const PICKING_LAYER_FORMAT: TextureFormat = wgpu::TextureFormat::Rgba32Uint
The texture format used for the picking layer.
sourcepub const PICKING_LAYER_DEPTH_FORMAT: TextureFormat = wgpu::TextureFormat::Depth32Float
pub const PICKING_LAYER_DEPTH_FORMAT: TextureFormat = wgpu::TextureFormat::Depth32Float
The depth format used for the picking layer - f32 makes it easiest to deal with retrieved depth and is guaranteed to be copyable.
pub const PICKING_LAYER_MSAA_STATE: MultisampleState = _
pub const PICKING_LAYER_DEPTH_STATE: Option<DepthStencilState> = ViewBuilder::MAIN_TARGET_DEFAULT_DEPTH_STATE
sourcepub fn new<T: 'static + Send + Sync>(
ctx: &mut RenderContext,
view_name: &DebugLabel,
screen_resolution: UVec2,
picking_rect: RectInt,
frame_uniform_buffer_content: &FrameUniformBuffer,
enable_picking_target_sampling: bool,
readback_identifier: GpuReadbackIdentifier,
readback_user_data: T
) -> Self
pub fn new<T: 'static + Send + Sync>( ctx: &mut RenderContext, view_name: &DebugLabel, screen_resolution: UVec2, picking_rect: RectInt, frame_uniform_buffer_content: &FrameUniformBuffer, enable_picking_target_sampling: bool, readback_identifier: GpuReadbackIdentifier, readback_user_data: T ) -> Self
New picking layer for a given screen.
Note that out-of-bounds rectangles are allowed, the picking layer will not be clipped to the screen. This means that the content of the picking layer rectangle will behave as-if the screen was bigger, containing valid picking data. It’s up to the user when interpreting the picking data to do any required clipping.
enable_picking_target_sampling should be enabled only for debugging purposes.
It allows to sample the picking layer texture in a shader.
pub fn begin_render_pass<'a>( &'a self, view_name: &DebugLabel, encoder: &'a mut CommandEncoder ) -> RenderPass<'a>
pub fn end_render_pass( self, encoder: &mut CommandEncoder, pools: &WgpuResourcePools ) -> Result<(), PickingLayerError>
sourcepub fn next_readback_result<T: 'static + Send + Sync>(
ctx: &RenderContext,
identifier: GpuReadbackIdentifier
) -> Option<PickingResult<T>>
pub fn next_readback_result<T: 'static + Send + Sync>( ctx: &RenderContext, identifier: GpuReadbackIdentifier ) -> Option<PickingResult<T>>
Returns the oldest received picking results for a given identifier and user data type.
It is recommended to call this method repeatedly until it returns None to ensure that all
pending data is flushed.
Ready data that hasn’t been retrieved for more than a frame will be discarded.
See also crate::view_builder::ViewBuilder::schedule_picking_rect