macro_rules! def_programs {
(
SHADERS [
$($shader:ident, $sourcepath:expr),*
]
PROGRAMS [
$(
program $program:ident {
vertex_shader: $vert_shader:ident
$(tessellation_control_shader: $tess_ctrl_shader:ident
tessellation_evaluation_shader: $tess_eval_shader:ident)*
$(geometry_shader: $geom_shader:ident)*
fragment_shader: $frag_shader:ident
}
)*
]
) => { ... };
( @def_programs
SHADERS [ $($shader:ident),* ]
PROGRAMS [
$(
program $program:ident {
vertex_shader: $vert_shader:ident
$(tessellation_control_shader: $tess_ctrl_shader:ident
tessellation_evaluation_shader: $tess_eval_shader:ident)*
$(geometry_shader: $geom_shader:ident)*
fragment_shader: $frag_shader:ident
}
)*
]
) => { ... };
(
@def_shaders $($shader:ident, $sourcepath:expr),*
) => { ... };
(@option_shader $shaders:ident [$shader_id:ident]) => { ... };
(@option_shader $shaders:ident []) => { ... };
}Expand description
Define a list of shaders with source paths and a list of shader programs using those shaders.
This will create two enums in local scope named ShaderId and ProgramId
with variants from the given identifiers.