use crate::components::sdf_volume::SDF_PARAMS_LEN;
#[derive(Copy, Clone, bytemuck::NoUninit)]
#[repr(C)]
pub struct RaymarchView {
pub vp: [[f32; 4]; 4],
pub inv_vp: [[f32; 4]; 4],
pub cam_pos: [f32; 4],
pub viewport: [f32; 2],
pub time: f32,
pub prefilter_mip_count: f32,
pub sky_rot: [[f32; 4]; 3],
}
#[derive(Copy, Clone, bytemuck::NoUninit)]
#[repr(C)]
pub struct RaymarchVolumeUniforms {
pub centre: [f32; 3],
pub _pad0: f32,
pub extent: [f32; 3],
pub _pad1: f32,
pub cone_ratio: f32,
pub max_distance: f32,
pub max_steps: i32,
pub receive_shadows: i32,
pub params: [f32; SDF_PARAMS_LEN],
}
#[derive(Copy, Clone, bytemuck::NoUninit)]
#[repr(C)]
pub struct RaymarchShadowCascade {
pub cascade_idx: u32,
pub _pad: [u32; 3],
}
#[cfg(test)]
mod tests {
use super::*;
use core::mem::size_of;
#[test]
fn the_blocks_are_the_sizes_the_hosts_bind() {
assert_eq!(size_of::<RaymarchView>(), 208);
assert_eq!(size_of::<RaymarchVolumeUniforms>(), 176);
assert_eq!(size_of::<RaymarchShadowCascade>(), 16);
}
}