use bytemuck::{Pod, Zeroable};
#[repr(C)]
#[derive(Debug, Clone, Copy, Pod, Zeroable)]
pub struct ViewProjUniform {
pub view_proj: [[f32; 4]; 4],
pub fog_color: [f32; 4],
pub eye_pos: [f32; 4],
pub fog_params: [f32; 4],
pub hillshade_highlight: [f32; 4],
pub hillshade_shadow: [f32; 4],
pub hillshade_accent: [f32; 4],
pub hillshade_light: [f32; 4],
}
impl ViewProjUniform {
pub fn from_dmat4(m: &glam::DMat4) -> Self {
let m32 = m.as_mat4();
Self {
view_proj: m32.to_cols_array_2d(),
fog_color: [1.0, 1.0, 1.0, 1.0],
eye_pos: [0.0, 0.0, 0.0, 0.0],
fog_params: [0.0, 1.0, 0.0, 0.0],
hillshade_highlight: [1.0, 1.0, 1.0, 1.0],
hillshade_shadow: [0.0, 0.0, 0.0, 1.0],
hillshade_accent: [0.42, 0.48, 0.42, 1.0],
hillshade_light: [335.0f32.to_radians(), 45.0f32.to_radians(), 1.0, 0.0],
}
}
}