pub struct FrameInput {
pub cam: Camera2d,
pub world_size: [f32; 2],
pub viewport_dp: [f32; 2],
pub sprites: Vec<SpriteInstance>,
pub texts: Vec<WorldText>,
pub background: Option<[f32; 4]>,
pub overlay_color: Option<[f32; 4]>,
pub chroma: f32,
}Expand description
Everything the viewport draws this frame. Plain data, snapshot per frame.
Framing contract (single source of truth): canvas, GPU, and picks all
derive from world_size + cam through effective_fit /
fit_view_proj / world_to_dp. cam.effective_center() is the
look point (rest + offset shake included); cam.zoom /
cam.units_per_pixel scale the fit uniformly on every backend.
Fields§
§cam: Camera2d§world_size: [f32; 2]World-space extent the contain-fit maps into the viewport.
viewport_dp: [f32; 2]Cold-start viewport size in dp (physical px / density), used for
the GPU camera until the first painted FrameGeom arrives.
Named for its units: divide physical px by density before storing
here, or the first frame’s fit is off by the density factor on
HiDPI screens. (Contrast FrameGeom::viewport_px, which is
genuinely physical px.)
sprites: Vec<SpriteInstance>§texts: Vec<WorldText>World-anchored text, drawn after the sprite pass on the canvas
viewport. The GPU viewport ignores this field: compose texts as
sibling views (same pattern as overlay_color consumers that need
typography) so GPU and canvas agree by construction.
background: Option<[f32; 4]>Full-viewport fill under everything (letterbox included).
overlay_color: Option<[f32; 4]>Optional fullscreen tint/color-grading hook (e.g. FOW dimming,
damage flash). Applied after the sprite pass on canvas and GPU
(after the chroma composite when chroma > 0.0), with the same
byte semantics as the canvas path ((c * 255) as u8 per channel,
alpha-blended over the scene).
chroma: f32Chromatic aberration amount (bevy chromatic_intensity units;
NT pulses land at 0.04..0.7). GPU viewports render the scene
offscreen and composite it back with an RGB split; 0.0 keeps
the zero-cost direct path. Canvas viewports ignore it (sampling
FX need pixels, and the canvas path is vector commands).
Trait Implementations§
Source§impl Clone for FrameInput
impl Clone for FrameInput
Source§fn clone(&self) -> FrameInput
fn clone(&self) -> FrameInput
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for FrameInput
impl Debug for FrameInput
Source§impl Default for FrameInput
impl Default for FrameInput
Source§fn default() -> FrameInput
fn default() -> FrameInput
Auto Trait Implementations§
impl Freeze for FrameInput
impl RefUnwindSafe for FrameInput
impl Send for FrameInput
impl Sync for FrameInput
impl Unpin for FrameInput
impl UnsafeUnpin for FrameInput
impl UnwindSafe for FrameInput
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> ConditionalSend for Twhere
T: Send,
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> 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>. Box<dyn Any> can
then be further downcast into Box<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>. Rc<Any> 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
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> FromTemplate for T
impl<T> FromTemplate for T
Source§impl<T> FromWorld for Twhere
T: Default,
impl<T> FromWorld for Twhere
T: Default,
Source§fn from_world(_world: &mut World) -> T
fn from_world(_world: &mut World) -> T
Creates Self using default().
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> IntoResult<T> for T
impl<T> IntoResult<T> for T
Source§fn into_result(self) -> Result<T, RunSystemError>
fn into_result(self) -> Result<T, RunSystemError>
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> Template for T
impl<T> Template for T
Source§fn build_template(
&self,
_context: &mut TemplateContext<'_, '_>,
) -> Result<<T as Template>::Output, BevyError>
fn build_template( &self, _context: &mut TemplateContext<'_, '_>, ) -> Result<<T as Template>::Output, BevyError>
entity context to produce a Template::Output.Source§fn clone_template(&self) -> T
fn clone_template(&self) -> T
Clone.