1mod glsl;
2mod layout;
3
4use proc_macro::TokenStream as CompilerTokenStream;
5
6use syn::{parse_macro_input, DeriveInput};
7
8#[proc_macro_derive(AsStd140)]
9pub fn derive_as_std140(input: CompilerTokenStream) -> CompilerTokenStream {
10 let input = parse_macro_input!(input as DeriveInput);
11 let expanded = layout::emit(input, "Std140", "std140", 16);
12
13 CompilerTokenStream::from(expanded)
14}
15
16#[proc_macro_derive(AsStd430)]
17pub fn derive_as_std430(input: CompilerTokenStream) -> CompilerTokenStream {
18 let input = parse_macro_input!(input as DeriveInput);
19 let expanded = layout::emit(input, "Std430", "std430", 0);
20
21 CompilerTokenStream::from(expanded)
22}
23
24#[proc_macro_derive(GlslStruct)]
25pub fn derive_glsl_struct(input: CompilerTokenStream) -> CompilerTokenStream {
26 let input = parse_macro_input!(input as DeriveInput);
27 let expanded = glsl::emit(input);
28
29 CompilerTokenStream::from(expanded)
30}