use crate::mat::*;
use crate::vec::*;
#[inline]
pub fn orthographic_gl(left: f32, right: f32, bottom: f32, top: f32, near: f32, far: f32) -> Mat4 {
let rml = right - left;
let rpl = right + left;
let tmb = top - bottom;
let tpb = top + bottom;
let fmn = far - near;
let fpn = far + near;
Mat4::new(
Vec4::new(2.0 / rml, 0.0, 0.0, 0.0),
Vec4::new(0.0, -2.0 / tmb, 0.0, 0.0),
Vec4::new(0.0, 0.0, 2.0 / fmn, 0.0),
Vec4::new(-(rpl / rml), -(tpb / tmb), -(fpn / fmn), 1.0),
)
}
#[inline]
pub fn orthographic_vk(left: f32, right: f32, bottom: f32, top: f32, near: f32, far: f32) -> Mat4 {
let rml = right - left;
let rpl = right + left;
let tmb = top - bottom;
let tpb = top + bottom;
let fmn = far - near;
Mat4::new(
Vec4::new(2.0 / rml, 0.0, 0.0, 0.0),
Vec4::new(0.0, 2.0 / tmb, 0.0, 0.0),
Vec4::new(0.0, 0.0, 1.0 / fmn, 0.0),
Vec4::new(-(rpl / rml), -(tpb / tmb), -(near / fmn), 1.0),
)
}
#[inline]
pub fn orthographic_wgpu_dx(
left: f32,
right: f32,
bottom: f32,
top: f32,
near: f32,
far: f32,
) -> Mat4 {
let rml = right - left;
let rpl = right + left;
let tmb = top - bottom;
let tpb = top + bottom;
let fmn = far - near;
Mat4::new(
Vec4::new(2.0 / rml, 0.0, 0.0, 0.0),
Vec4::new(0.0, -2.0 / tmb, 0.0, 0.0),
Vec4::new(0.0, 0.0, 1.0 / fmn, 0.0),
Vec4::new(-(rpl / rml), -(tpb / tmb), -(near / fmn), 1.0),
)
}