pub struct ExtractedView {
pub retained_view_entity: RetainedViewEntity,
pub clip_from_view: Mat4,
pub world_from_view: GlobalTransform,
pub clip_from_world: Option<Mat4>,
pub hdr: bool,
pub viewport: UVec4,
pub color_grading: ColorGrading,
}
Expand description
Describes a camera in the render world.
Each entity in the main world can potentially extract to multiple subviews,
each of which has a RetainedViewEntity::subview_index
. For instance, 3D
cameras extract to both a 3D camera subview with index 0 and a special UI
subview with index 1. Likewise, point lights with shadows extract to 6
subviews, one for each side of the shadow cubemap.
Fields§
§retained_view_entity: RetainedViewEntity
The entity in the main world corresponding to this render world view.
clip_from_view: Mat4
Typically a right-handed projection matrix, one of either:
Perspective (infinite reverse z)
f = 1 / tan(fov_y_radians / 2)
⎡ f / aspect 0 0 0 ⎤
⎢ 0 f 0 0 ⎥
⎢ 0 0 0 -1 ⎥
⎣ 0 0 near 0 ⎦
Orthographic
w = right - left
h = top - bottom
d = near - far
cw = -right - left
ch = -top - bottom
⎡ 2 / w 0 0 0 ⎤
⎢ 0 2 / h 0 0 ⎥
⎢ 0 0 1 / d 0 ⎥
⎣ cw / w ch / h near / d 1 ⎦
clip_from_view[3][3] == 1.0
is the standard way to check if a projection is orthographic
Custom projections are also possible however.
world_from_view: GlobalTransform
§clip_from_world: Option<Mat4>
§hdr: bool
§viewport: UVec4
§color_grading: ColorGrading
Implementations§
Source§impl ExtractedView
impl ExtractedView
Sourcepub fn rangefinder3d(&self) -> ViewRangefinder3d
pub fn rangefinder3d(&self) -> ViewRangefinder3d
Creates a 3D rangefinder for a view
Trait Implementations§
Source§impl Component for ExtractedView
impl Component for ExtractedView
Source§const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
A constant indicating the storage type used for this component.
Source§type Mutability = Mutable
type Mutability = Mutable
A marker type to assist Bevy with determining if this component is
mutable, or immutable. Mutable components will have [
Component<Mutability = Mutable>
],
while immutable components will instead have [Component<Mutability = Immutable>
]. Read moreSource§fn register_required_components(
requiree: ComponentId,
components: &mut ComponentsRegistrator<'_>,
required_components: &mut RequiredComponents,
inheritance_depth: u16,
recursion_check_stack: &mut Vec<ComponentId>,
)
fn register_required_components( requiree: ComponentId, components: &mut ComponentsRegistrator<'_>, required_components: &mut RequiredComponents, inheritance_depth: u16, recursion_check_stack: &mut Vec<ComponentId>, )
Registers required components.
Source§fn clone_behavior() -> ComponentCloneBehavior
fn clone_behavior() -> ComponentCloneBehavior
Called when registering this component, allowing to override clone function (or disable cloning altogether) for this component. Read more
Source§fn register_component_hooks(hooks: &mut ComponentHooks)
fn register_component_hooks(hooks: &mut ComponentHooks)
👎Deprecated since 0.16.0: Use the individual hook methods instead (e.g.,
Component::on_add
, etc.)Called when registering this component, allowing mutable access to its
ComponentHooks
.Source§fn on_add() -> Option<for<'w> fn(_: DeferredWorld<'w>, _: HookContext)>
fn on_add() -> Option<for<'w> fn(_: DeferredWorld<'w>, _: HookContext)>
Source§fn on_insert() -> Option<for<'w> fn(_: DeferredWorld<'w>, _: HookContext)>
fn on_insert() -> Option<for<'w> fn(_: DeferredWorld<'w>, _: HookContext)>
Source§fn on_replace() -> Option<for<'w> fn(_: DeferredWorld<'w>, _: HookContext)>
fn on_replace() -> Option<for<'w> fn(_: DeferredWorld<'w>, _: HookContext)>
Source§fn on_remove() -> Option<for<'w> fn(_: DeferredWorld<'w>, _: HookContext)>
fn on_remove() -> Option<for<'w> fn(_: DeferredWorld<'w>, _: HookContext)>
Source§fn on_despawn() -> Option<for<'w> fn(_: DeferredWorld<'w>, _: HookContext)>
fn on_despawn() -> Option<for<'w> fn(_: DeferredWorld<'w>, _: HookContext)>
Source§fn map_entities<E>(_this: &mut Self, _mapper: &mut E)where
E: EntityMapper,
fn map_entities<E>(_this: &mut Self, _mapper: &mut E)where
E: EntityMapper,
Maps the entities on this component using the given
EntityMapper
. This is used to remap entities in contexts like scenes and entity cloning.
When deriving Component
, this is populated by annotating fields containing entities with #[entities]
Read moreAuto Trait Implementations§
impl Freeze for ExtractedView
impl RefUnwindSafe for ExtractedView
impl Send for ExtractedView
impl Sync for ExtractedView
impl Unpin for ExtractedView
impl UnwindSafe for ExtractedView
Blanket Implementations§
Source§impl<T, U> AsBindGroupShaderType<U> for T
impl<T, U> AsBindGroupShaderType<U> for T
Source§fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
fn as_bind_group_shader_type(&self, _images: &RenderAssets<GpuImage>) -> U
Return the
T
ShaderType
for self
. When used in AsBindGroup
derives, it is safe to assume that all images in self
exist.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
Mutably borrows from an owned value. Read more
Source§impl<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere
C: Component,
fn component_ids( components: &mut ComponentsRegistrator<'_>, ids: &mut impl FnMut(ComponentId), )
Source§fn register_required_components(
components: &mut ComponentsRegistrator<'_>,
required_components: &mut RequiredComponents,
)
fn register_required_components( components: &mut ComponentsRegistrator<'_>, required_components: &mut RequiredComponents, )
Registers components that are required by the components in this
Bundle
.Source§fn get_component_ids(
components: &Components,
ids: &mut impl FnMut(Option<ComponentId>),
)
fn get_component_ids( components: &Components, ids: &mut impl FnMut(Option<ComponentId>), )
Source§impl<C> BundleFromComponents for Cwhere
C: Component,
impl<C> BundleFromComponents for Cwhere
C: Component,
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>
Converts
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>
Converts
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)
Converts
&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)
Converts
&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<C> DynamicBundle for Cwhere
C: Component,
impl<C> DynamicBundle for Cwhere
C: Component,
fn get_components( self, func: &mut impl FnMut(StorageType, OwningPtr<'_>), ) -> <C as DynamicBundle>::Effect
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>
Converts
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>
Converts
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 more