#[non_exhaustive]pub struct ScreenImageItem {
pub pixels: Vec<[u8; 4]>,
pub width: u32,
pub height: u32,
pub anchor: ImageAnchor,
pub scale: f32,
pub alpha: f32,
pub depth: Option<Vec<f32>>,
}Expand description
A floating screen-space RGBA image rendered as a viewport overlay.
The image is drawn after all 3D geometry and anchored to one of the viewport corners or the center.
§Migration note
If you do not need depth compositing against scene geometry, prefer
[OverlayImageItem] in [OverlayFrame] instead. OverlayImageItem has no
depth field and renders after post-processing alongside other semantic
overlays (labels, scalar bars, rulers).
§Depth compositing (Phase 12)
When depth is Some, the image composites against 3D scene geometry:
pixels whose depth value exceeds the scene depth at that screen position are
discarded, so near geometry occludes the image correctly.
depth must contain exactly width * height f32 values in row-major,
top-to-bottom order. Each value is an NDC depth in [0.0, 1.0] where
0.0 = near plane and 1.0 = far plane, matching wgpu’s depth convention.
Depth compositing is only active in the full render() path. When using
paint() / paint_to() (external render passes), the image is drawn
without a depth test regardless of this field.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.pixels: Vec<[u8; 4]>RGBA8 pixel data, row-major, top-to-bottom.
width: u32Image width in pixels.
height: u32Image height in pixels.
anchor: ImageAnchorWhich corner (or center) of the viewport to anchor the image to.
scale: f32Scale factor relative to natural pixel size (1.0 = one pixel per screen pixel).
alpha: f32Overall opacity multiplier applied on top of per-pixel alpha. Default: 1.0.
depth: Option<Vec<f32>>Per-pixel NDC depth values [0.0, 1.0] for depth compositing against scene
geometry. Must contain exactly width * height values if Some.
None (default) renders the image on top of all geometry (no depth test).
Trait Implementations§
Source§impl Clone for ScreenImageItem
impl Clone for ScreenImageItem
Source§fn clone(&self) -> ScreenImageItem
fn clone(&self) -> ScreenImageItem
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreAuto Trait Implementations§
impl Freeze for ScreenImageItem
impl RefUnwindSafe for ScreenImageItem
impl Send for ScreenImageItem
impl Sync for ScreenImageItem
impl Unpin for ScreenImageItem
impl UnsafeUnpin for ScreenImageItem
impl UnwindSafe for ScreenImageItem
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.