Camera

Struct Camera 

Source
pub struct Camera {
    pub position: Vec3,
    pub target: Vec3,
    pub up: Vec3,
    pub resolution: Vec2,
    pub projection: Projection,
    pub near: f32,
    pub far: f32,
    pub view_data: Mat4,
    pub uniform_data: BindGroup,
    /* private fields */
}
Expand description

Container for the camera feature. The settings here are needed for algebra equations needed for camera vision and movement. Please leave it to the renderer to handle

Fields§

§position: Vec3

The position of the camera in 3D space

§target: Vec3

The target at which the camera should be looking

§up: Vec3

The up vector of the camera. This defines the elevation of the camera

§resolution: Vec2

The resolution of the camera view

§projection: Projection

The projection of the camera

§near: f32

The closest view of camera

§far: f32

The furthest view of camera

§view_data: Mat4

The final data that will be sent to GPU

§uniform_data: BindGroup

The uniform data of the camera to be sent to the gpu

Implementations§

Source§

impl Camera

Source

pub fn new(window_size: (u32, u32), renderer: &mut Renderer) -> Camera

Creates a new camera. this should’ve been automatically done at the time of creating an engine

Source

pub fn build_view_matrix(&self) -> Mat4

Builds a view matrix for camera projection

Source

pub fn build_projection_matrix(&self) -> Mat4

Builds a projection matrix for camera

Source

pub fn build_view_projection_matrix(&mut self)

Updates the view uniform matrix that decides how camera works

Source

pub fn build_view_orthographic_matrix(&mut self)

Updates the view uniform matrix that decides how camera works

Source

pub fn update_view_projection(&mut self, renderer: &mut Renderer)

This builds a uniform buffer data from camera view data that is sent to the GPU in next frame

Source

pub fn update_view_projection_and_return( &mut self, renderer: &mut Renderer, ) -> BindGroup

This builds a uniform buffer data from camera view data that is sent to the GPU in next frame, and returns the bindgroup

Source

pub fn camera_uniform_buffer(&self) -> Mat4

Returns a matrix uniform buffer from camera data that can be sent to GPU

Source

pub fn set_position(&mut self, new_pos: impl Into<Vec3>)

Sets the position of camera

Source

pub fn set_target(&mut self, target_pos: impl Into<Vec3>)

Sets the target of camera

Source

pub fn set_up(&mut self, pos: impl Into<Vec3>)

Sets the up of camera

Source

pub fn set_far(&mut self, new_far: f32)

Sets how far camera can look

Source

pub fn set_near(&mut self, new_near: f32)

Sets how near the camera can look

Source

pub fn set_resolution(&mut self, window_size: (u32, u32))

Sets the aspect ratio of the camera

Source

pub fn set_projection(&mut self, projection: Projection)

Sets the projection of the camera

Trait Implementations§

Source§

impl Debug for Camera

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
Source§

impl Send for Camera

Source§

impl Sync for Camera

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Any for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Source§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Source§

fn type_name(&self) -> &'static str

Source§

impl<T> AnySync for T
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> Downcast<T> for T

Source§

fn downcast(&self) -> &T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> Upcast<T> for T

Source§

fn upcast(&self) -> Option<&T>

Source§

impl<T> WasmNotSend for T
where T: Send,

Source§

impl<T> WasmNotSendSync for T

Source§

impl<T> WasmNotSync for T
where T: Sync,