shade 0.0.5

Another graphics library
Documentation
use super::*;

#[derive(Copy, Clone, Debug, Default, dataview::Pod)]
#[repr(C)]
pub struct ColorVertex3 {
	pub pos: Vec3f,
	pub color: [u8; 4],
}

unsafe impl TVertex for ColorVertex3 {
	const LAYOUT: &'static VertexLayout = &VertexLayout {
		size: mem::size_of::<ColorVertex3>() as u16,
		alignment: mem::align_of::<ColorVertex3>() as u16,
		attributes: &[
			VertexAttribute { name: "a_pos", format: VertexAttributeFormat::F32v3, offset: dataview::offset_of!(ColorVertex3.pos) as u16 },
			VertexAttribute { name: "a_color", format: VertexAttributeFormat::U8Normv4, offset: dataview::offset_of!(ColorVertex3.color) as u16 },
		],
	};
}

impl TVertex3 for ColorVertex3 {
	#[inline]
	fn position(&self) -> cvmath::Vec3<f32> {
		self.pos
	}
}

#[derive(Clone, Debug, Default, PartialEq)]
pub struct ColorUniform3 {
	pub transform: Mat4f,
	pub colormod: Vec4f,
}

impl UniformVisitor for ColorUniform3 {
	fn visit(&self, set: &mut dyn UniformSetter) {
		set.value("u_transform", &self.transform);
		set.value("u_colorModulation", &self.colormod);
	}
}