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],
pub ambient_color: [f32; 4],
pub directional_dir: [f32; 4],
pub directional_color: [f32; 4],
}
impl ViewProjUniform {
pub fn from_dmat4(m: &glam::DMat4) -> Self {
let m32 = m.as_mat4();
let default_lighting = rustial_engine::ComputedLighting::default();
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],
ambient_color: [
default_lighting.ambient_color[0],
default_lighting.ambient_color[1],
default_lighting.ambient_color[2],
default_lighting.lighting_enabled,
],
directional_dir: [
default_lighting.directional_dir[0],
default_lighting.directional_dir[1],
default_lighting.directional_dir[2],
0.0,
],
directional_color: [
default_lighting.directional_color[0],
default_lighting.directional_color[1],
default_lighting.directional_color[2],
0.0,
],
}
}
}