1pub fn align(size: u32, alignment: u32) -> u32 {
2 ((size + alignment - 1) / alignment) * alignment
3}
4
5pub fn align_usz(size: usize, alignment: usize) -> usize {
6 ((size + alignment - 1) / alignment) * alignment
7}
8
9pub fn linearize_depth_reverse_z(d: f32, near: f32, far: f32) -> f32 {
12 if d <= 0.0 {
13 0.0
14 } else {
15 (near * far) / (d * (far - near) + near)
16 }
17}
18
19pub fn u8_to_f32_vec(v: &[u8]) -> Vec<f32> {
21 v.chunks_exact(4)
22 .map(TryInto::try_into)
23 .map(Result::unwrap)
24 .map(f32::from_le_bytes)
25 .collect()
26}