macro_rules! shader_struct {
{ @sum $( $size:expr ; )* } => { ... };
{ @size $ty:ty } => { ... };
{ @max } => { ... };
{ @max $size:expr ; } => { ... };
{ @max $size:expr ; $( $rest:expr ; )+ } => { ... };
{ @sum_size $( $ty:ty )* } => { ... };
{ @max_size $( $ty:ty )* } => { ... };
{ $struct:ident [
$( $num:tt $field:ident => $ty:ty ),* $(,)?
] } => { ... };
}