Skip to content

Commit

Permalink
added camera near and far fields
Browse files Browse the repository at this point in the history
  • Loading branch information
yakkudev authored and not-fl3 committed Feb 24, 2025
1 parent 8de643f commit a85325a
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions src/camera.rs
Original file line number Diff line number Diff line change
Expand Up @@ -198,6 +198,11 @@ pub struct Camera3D {
///
/// Useful for things like splitscreen.
pub viewport: Option<(i32, i32, i32, i32)>,

/// Camera near plane
pub z_near: f32,
/// Camera far plane
pub z_far: f32,
}

impl Default for Camera3D {
Expand All @@ -211,29 +216,26 @@ impl Default for Camera3D {
projection: Projection::Perspective,
render_target: None,
viewport: None,
z_near: 0.01,
z_far: 10000.0,
}
}
}

impl Camera3D {
const Z_NEAR: f32 = 0.01;
const Z_FAR: f32 = 10000.0;
}

impl Camera for Camera3D {
fn matrix(&self) -> Mat4 {
let aspect = self.aspect.unwrap_or(screen_width() / screen_height());

match self.projection {
Projection::Perspective => {
Mat4::perspective_rh_gl(self.fovy, aspect, Self::Z_NEAR, Self::Z_FAR)
Mat4::perspective_rh_gl(self.fovy, aspect, self.z_near, self.z_far)
* Mat4::look_at_rh(self.position, self.target, self.up)
}
Projection::Orthographics => {
let top = self.fovy / 2.0;
let right = top * aspect;

Mat4::orthographic_rh_gl(-right, right, -top, top, Self::Z_NEAR, Self::Z_FAR)
Mat4::orthographic_rh_gl(-right, right, -top, top, self.z_near, self.z_far)
* Mat4::look_at_rh(self.position, self.target, self.up)
}
}
Expand Down

0 comments on commit a85325a

Please sign in to comment.