#[derive(Copy, Clone, bytemuck::NoUninit)]
#[repr(C)]
pub struct TaaParams {
pub history_valid: f32,
}
#[derive(Copy, Clone, bytemuck::NoUninit)]
#[repr(C)]
pub struct AutoExposureParams {
pub lum_log2_min: f32,
pub lum_log2_range: f32,
pub lum_to_bin_scale: f32,
pub _pad: f32,
}
#[derive(Copy, Clone, bytemuck::NoUninit)]
#[repr(C)]
pub struct HizParams {
pub dst_width: u32,
pub dst_height: u32,
pub src_mip: u32,
pub sample_count: u32,
}
#[derive(Copy, Clone, PartialEq, Eq, Debug, bytemuck::NoUninit)]
#[repr(C)]
pub struct HizSpdParams {
pub base_width: u32,
pub base_height: u32,
pub level_count: u32,
pub sample_count: u32,
}
#[cfg(test)]
mod tests {
use super::*;
use core::mem::{offset_of, size_of};
#[test]
fn hiz_params_layout_matches_shader() {
assert_eq!(size_of::<HizParams>(), 16);
assert_eq!(offset_of!(HizParams, dst_width), 0);
assert_eq!(offset_of!(HizParams, dst_height), 4);
assert_eq!(offset_of!(HizParams, src_mip), 8);
assert_eq!(offset_of!(HizParams, sample_count), 12);
}
#[test]
fn hiz_spd_params_layout_matches_shader() {
assert_eq!(size_of::<HizSpdParams>(), 16);
assert_eq!(offset_of!(HizSpdParams, base_width), 0);
assert_eq!(offset_of!(HizSpdParams, base_height), 4);
assert_eq!(offset_of!(HizSpdParams, level_count), 8);
assert_eq!(offset_of!(HizSpdParams, sample_count), 12);
}
}