1pub fn align(size: u32, alignment: u32) -> u32 {
10 size.div_ceil(alignment) * alignment
11}
12
13pub fn align_usz(size: usize, alignment: usize) -> usize {
14 size.div_ceil(alignment) * alignment
15}
16
17pub fn linearize_depth_reverse_z(d: f32, near: f32, far: f32) -> f32 {
20 if d <= 0.0 {
21 0.0
22 } else {
23 (near * far) / (d * (far - near) + near)
24 }
25}
26
27pub fn u8_to_f32_vec(v: &[u8]) -> Vec<f32> {
29 v.chunks_exact(4)
30 .map(TryInto::try_into)
31 .map(Result::unwrap)
32 .map(f32::from_le_bytes)
33 .collect()
34}