pub trait Shader {
type Uniform: Sync;
type Working: Blendable + Sync;
// Required methods
fn vertex_stage(
&self,
context: &VertexContext<'_, Self::Uniform>,
) -> VertexOutput<Self::Working>;
fn fragment_stage(
&self,
context: &FragmentContext<'_, Self::Uniform, Self::Working>,
) -> u32;
}