pub struct OrthographicProjection {
pub near: f32,
pub far: f32,
pub viewport_origin: Vec2,
pub scaling_mode: ScalingMode,
pub scale: f32,
pub area: Rect,
}
Expand description
Project a 3D space onto a 2D surface using parallel lines, i.e., unlike PerspectiveProjection
,
the size of objects remains the same regardless of their distance to the camera.
The volume contained in the projection is called the view frustum. Since the viewport is rectangular and projection lines are parallel, the view frustum takes the shape of a cuboid.
Note that the scale of the projection and the apparent size of objects are inversely proportional. As the size of the projection increases, the size of objects decreases.
§Examples
Configure the orthographic projection to one world unit per 100 window pixels:
let projection = Projection::Orthographic(OrthographicProjection {
scaling_mode: ScalingMode::WindowSize(100.0),
..OrthographicProjection::default()
});
Fields§
§near: f32
The distance of the near clipping plane in world units.
Objects closer than this will not be rendered.
Defaults to 0.0
far: f32
The distance of the far clipping plane in world units.
Objects further than this will not be rendered.
Defaults to 1000.0
viewport_origin: Vec2
Specifies the origin of the viewport as a normalized position from 0 to 1, where (0, 0) is the bottom left and (1, 1) is the top right. This determines where the camera’s position sits inside the viewport.
When the projection scales due to viewport resizing, the position of the camera, and thereby viewport_origin
,
remains at the same relative point.
Consequently, this is pivot point when scaling. With a bottom left pivot, the projection will expand upwards and to the right. With a top right pivot, the projection will expand downwards and to the left. Values in between will caused the projection to scale proportionally on each axis.
Defaults to (0.5, 0.5)
, which makes scaling affect opposite sides equally, keeping the center
point of the viewport centered.
scaling_mode: ScalingMode
How the projection will scale to the viewport.
Defaults to ScalingMode::WindowSize(1.0)
scale: f32
Scales the projection.
As scale increases, the apparent size of objects decreases, and vice versa.
Note: scaling can be set by scaling_mode
as well.
This parameter scales on top of that.
This property is particularly useful in implementing zoom functionality.
Defaults to 1.0
.
area: Rect
The area that the projection covers relative to viewport_origin
.
Bevy’s camera_system
automatically
updates this value when the viewport is resized depending on OrthographicProjection
’s other fields.
In this case, area
should not be manually modified.
It may be necessary to set this manually for shadow projections and such.
Trait Implementations§
Source§impl CameraProjection for OrthographicProjection
impl CameraProjection for OrthographicProjection
fn get_clip_from_view(&self) -> Mat4
fn update(&mut self, width: f32, height: f32)
fn far(&self) -> f32
fn get_frustum_corners(&self, z_near: f32, z_far: f32) -> [Vec3A; 8]
Source§fn compute_frustum(&self, camera_transform: &GlobalTransform) -> Frustum
fn compute_frustum(&self, camera_transform: &GlobalTransform) -> Frustum
Source§impl Clone for OrthographicProjection
impl Clone for OrthographicProjection
Source§fn clone(&self) -> OrthographicProjection
fn clone(&self) -> OrthographicProjection
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Component for OrthographicProjection
impl Component for OrthographicProjection
Source§const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
const STORAGE_TYPE: StorageType = bevy_ecs::component::StorageType::Table
Source§fn register_component_hooks(_hooks: &mut ComponentHooks)
fn register_component_hooks(_hooks: &mut ComponentHooks)
ComponentHooks
.Source§impl Debug for OrthographicProjection
impl Debug for OrthographicProjection
Source§impl Default for OrthographicProjection
impl Default for OrthographicProjection
Source§impl From<OrthographicProjection> for Projection
impl From<OrthographicProjection> for Projection
Source§fn from(p: OrthographicProjection) -> Self
fn from(p: OrthographicProjection) -> Self
Source§impl FromReflect for OrthographicProjectionwhere
Self: Any + Send + Sync,
f32: FromReflect + TypePath + RegisterForReflection,
Vec2: FromReflect + TypePath + RegisterForReflection,
ScalingMode: FromReflect + TypePath + RegisterForReflection,
Rect: FromReflect + TypePath + RegisterForReflection,
impl FromReflect for OrthographicProjectionwhere
Self: Any + Send + Sync,
f32: FromReflect + TypePath + RegisterForReflection,
Vec2: FromReflect + TypePath + RegisterForReflection,
ScalingMode: FromReflect + TypePath + RegisterForReflection,
Rect: FromReflect + TypePath + RegisterForReflection,
Source§fn from_reflect(reflect: &dyn Reflect) -> Option<Self>
fn from_reflect(reflect: &dyn Reflect) -> Option<Self>
Self
from a reflected value.Source§fn take_from_reflect(
reflect: Box<dyn Reflect>,
) -> Result<Self, Box<dyn Reflect>>
fn take_from_reflect( reflect: Box<dyn Reflect>, ) -> Result<Self, Box<dyn Reflect>>
Self
using,
constructing the value using from_reflect
if that fails. Read moreSource§impl GetTypeRegistration for OrthographicProjectionwhere
Self: Any + Send + Sync,
f32: FromReflect + TypePath + RegisterForReflection,
Vec2: FromReflect + TypePath + RegisterForReflection,
ScalingMode: FromReflect + TypePath + RegisterForReflection,
Rect: FromReflect + TypePath + RegisterForReflection,
impl GetTypeRegistration for OrthographicProjectionwhere
Self: Any + Send + Sync,
f32: FromReflect + TypePath + RegisterForReflection,
Vec2: FromReflect + TypePath + RegisterForReflection,
ScalingMode: FromReflect + TypePath + RegisterForReflection,
Rect: FromReflect + TypePath + RegisterForReflection,
Source§fn get_type_registration() -> TypeRegistration
fn get_type_registration() -> TypeRegistration
TypeRegistration
for this type.Source§fn register_type_dependencies(registry: &mut TypeRegistry)
fn register_type_dependencies(registry: &mut TypeRegistry)
Source§impl Reflect for OrthographicProjectionwhere
Self: Any + Send + Sync,
f32: FromReflect + TypePath + RegisterForReflection,
Vec2: FromReflect + TypePath + RegisterForReflection,
ScalingMode: FromReflect + TypePath + RegisterForReflection,
Rect: FromReflect + TypePath + RegisterForReflection,
impl Reflect for OrthographicProjectionwhere
Self: Any + Send + Sync,
f32: FromReflect + TypePath + RegisterForReflection,
Vec2: FromReflect + TypePath + RegisterForReflection,
ScalingMode: FromReflect + TypePath + RegisterForReflection,
Rect: FromReflect + TypePath + RegisterForReflection,
Source§fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
fn get_represented_type_info(&self) -> Option<&'static TypeInfo>
Source§fn as_any_mut(&mut self) -> &mut dyn Any
fn as_any_mut(&mut self) -> &mut dyn Any
&mut dyn Any
.Source§fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
fn into_reflect(self: Box<Self>) -> Box<dyn Reflect>
Source§fn as_reflect(&self) -> &dyn Reflect
fn as_reflect(&self) -> &dyn Reflect
Source§fn as_reflect_mut(&mut self) -> &mut dyn Reflect
fn as_reflect_mut(&mut self) -> &mut dyn Reflect
Source§fn clone_value(&self) -> Box<dyn Reflect>
fn clone_value(&self) -> Box<dyn Reflect>
Reflect
trait object. Read moreSource§fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
fn set(&mut self, value: Box<dyn Reflect>) -> Result<(), Box<dyn Reflect>>
Source§fn reflect_kind(&self) -> ReflectKind
fn reflect_kind(&self) -> ReflectKind
Source§fn reflect_ref(&self) -> ReflectRef<'_>
fn reflect_ref(&self) -> ReflectRef<'_>
Source§fn reflect_mut(&mut self) -> ReflectMut<'_>
fn reflect_mut(&mut self) -> ReflectMut<'_>
Source§fn reflect_owned(self: Box<Self>) -> ReflectOwned
fn reflect_owned(self: Box<Self>) -> ReflectOwned
Source§fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
fn reflect_partial_eq(&self, value: &dyn Reflect) -> Option<bool>
Source§fn apply(&mut self, value: &(dyn Reflect + 'static))
fn apply(&mut self, value: &(dyn Reflect + 'static))
Source§fn reflect_hash(&self) -> Option<u64>
fn reflect_hash(&self) -> Option<u64>
Source§fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
fn debug(&self, f: &mut Formatter<'_>) -> Result<(), Error>
Source§fn serializable(&self) -> Option<Serializable<'_>>
fn serializable(&self) -> Option<Serializable<'_>>
Source§fn is_dynamic(&self) -> bool
fn is_dynamic(&self) -> bool
Source§impl Struct for OrthographicProjectionwhere
Self: Any + Send + Sync,
f32: FromReflect + TypePath + RegisterForReflection,
Vec2: FromReflect + TypePath + RegisterForReflection,
ScalingMode: FromReflect + TypePath + RegisterForReflection,
Rect: FromReflect + TypePath + RegisterForReflection,
impl Struct for OrthographicProjectionwhere
Self: Any + Send + Sync,
f32: FromReflect + TypePath + RegisterForReflection,
Vec2: FromReflect + TypePath + RegisterForReflection,
ScalingMode: FromReflect + TypePath + RegisterForReflection,
Rect: FromReflect + TypePath + RegisterForReflection,
Source§fn field(&self, name: &str) -> Option<&dyn Reflect>
fn field(&self, name: &str) -> Option<&dyn Reflect>
name
as a &dyn Reflect
.Source§fn field_mut(&mut self, name: &str) -> Option<&mut dyn Reflect>
fn field_mut(&mut self, name: &str) -> Option<&mut dyn Reflect>
name
as a
&mut dyn Reflect
.Source§fn field_at(&self, index: usize) -> Option<&dyn Reflect>
fn field_at(&self, index: usize) -> Option<&dyn Reflect>
index
as a
&dyn Reflect
.Source§fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>
fn field_at_mut(&mut self, index: usize) -> Option<&mut dyn Reflect>
index
as a &mut dyn Reflect
.Source§fn name_at(&self, index: usize) -> Option<&str>
fn name_at(&self, index: usize) -> Option<&str>
index
.Source§fn iter_fields(&self) -> FieldIter<'_>
fn iter_fields(&self) -> FieldIter<'_>
Source§fn clone_dynamic(&self) -> DynamicStruct
fn clone_dynamic(&self) -> DynamicStruct
DynamicStruct
.Source§impl TypePath for OrthographicProjection
impl TypePath for OrthographicProjection
Source§fn type_path() -> &'static str
fn type_path() -> &'static str
Source§fn short_type_path() -> &'static str
fn short_type_path() -> &'static str
Source§fn type_ident() -> Option<&'static str>
fn type_ident() -> Option<&'static str>
Source§fn crate_name() -> Option<&'static str>
fn crate_name() -> Option<&'static str>
Source§impl Typed for OrthographicProjectionwhere
Self: Any + Send + Sync,
f32: FromReflect + TypePath + RegisterForReflection,
Vec2: FromReflect + TypePath + RegisterForReflection,
ScalingMode: FromReflect + TypePath + RegisterForReflection,
Rect: FromReflect + TypePath + RegisterForReflection,
impl Typed for OrthographicProjectionwhere
Self: Any + Send + Sync,
f32: FromReflect + TypePath + RegisterForReflection,
Vec2: FromReflect + TypePath + RegisterForReflection,
ScalingMode: FromReflect + TypePath + RegisterForReflection,
Rect: FromReflect + TypePath + RegisterForReflection,
Auto Trait Implementations§
impl Freeze for OrthographicProjection
impl RefUnwindSafe for OrthographicProjection
impl Send for OrthographicProjection
impl Sync for OrthographicProjection
impl Unpin for OrthographicProjection
impl UnwindSafe for OrthographicProjection
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
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
Source§impl<C> Bundle for Cwhere
C: Component,
impl<C> Bundle for Cwhere
C: Component,
fn component_ids( components: &mut Components, storages: &mut Storages, ids: &mut impl FnMut(ComponentId), )
unsafe fn from_components<T, F>(ctx: &mut T, func: &mut F) -> C
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<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)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> DowncastSync for T
impl<T> DowncastSync 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<'_>))
Source§impl<T> DynamicTypePath for Twhere
T: TypePath,
impl<T> DynamicTypePath for Twhere
T: TypePath,
Source§fn reflect_type_path(&self) -> &str
fn reflect_type_path(&self) -> &str
TypePath::type_path
.Source§fn reflect_short_type_path(&self) -> &str
fn reflect_short_type_path(&self) -> &str
Source§fn reflect_type_ident(&self) -> Option<&str>
fn reflect_type_ident(&self) -> Option<&str>
TypePath::type_ident
.Source§fn reflect_crate_name(&self) -> Option<&str>
fn reflect_crate_name(&self) -> Option<&str>
TypePath::crate_name
.Source§fn reflect_module_path(&self) -> Option<&str>
fn reflect_module_path(&self) -> Option<&str>
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
Self
using data from the given World
.Source§impl<S> GetField for Swhere
S: Struct,
impl<S> GetField for Swhere
S: Struct,
Source§impl<T> GetPath for T
impl<T> GetPath for T
Source§fn reflect_path<'p>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path<'p>( &self, path: impl ReflectPath<'p>, ) -> Result<&(dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn reflect_path_mut<'p>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>
fn reflect_path_mut<'p>( &mut self, path: impl ReflectPath<'p>, ) -> Result<&mut (dyn Reflect + 'static), ReflectPathError<'p>>
path
. Read moreSource§fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
fn path<'p, T>(
&self,
path: impl ReflectPath<'p>,
) -> Result<&T, ReflectPathError<'p>>where
T: Reflect,
path
. Read moreSource§fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
fn path_mut<'p, T>(
&mut self,
path: impl ReflectPath<'p>,
) -> Result<&mut T, ReflectPathError<'p>>where
T: Reflect,
path
. Read more