[][src]Macro vulkayes_core::shader_util_macro

macro_rules! shader_util_macro {
    (resolve_shader_type bool) => { ... };
    (resolve_shader_type int) => { ... };
    (resolve_shader_type uint) => { ... };
    (resolve_shader_type float) => { ... };
    (resolve_shader_type double) => { ... };
    (resolve_shader_type bvec2) => { ... };
    (resolve_shader_type bvec3) => { ... };
    (resolve_shader_type bvec4) => { ... };
    (resolve_shader_type ivec2) => { ... };
    (resolve_shader_type ivec3) => { ... };
    (resolve_shader_type ivec4) => { ... };
    (resolve_shader_type uvec2) => { ... };
    (resolve_shader_type uvec3) => { ... };
    (resolve_shader_type uvec4) => { ... };
    (resolve_shader_type vec2) => { ... };
    (resolve_shader_type vec3) => { ... };
    (resolve_shader_type vec4) => { ... };
    (resolve_shader_type dvec2) => { ... };
    (resolve_shader_type dvec3) => { ... };
    (resolve_shader_type dvec4) => { ... };
    (resolve_shader_type mat2) => { ... };
    (resolve_shader_type mat2x2) => { ... };
    (resolve_shader_type mat2x3) => { ... };
    (resolve_shader_type mat2x4) => { ... };
    (resolve_shader_type mat3) => { ... };
    (resolve_shader_type mat3x2) => { ... };
    (resolve_shader_type mat3x3) => { ... };
    (resolve_shader_type mat3x4) => { ... };
    (resolve_shader_type mat4) => { ... };
    (resolve_shader_type mat4x2) => { ... };
    (resolve_shader_type mat4x3) => { ... };
    (resolve_shader_type mat4x4) => { ... };
    (resolve_shader_type dmat2) => { ... };
    (resolve_shader_type dmat2x2) => { ... };
    (resolve_shader_type dmat2x3) => { ... };
    (resolve_shader_type dmat2x4) => { ... };
    (resolve_shader_type dmat3) => { ... };
    (resolve_shader_type dmat3x2) => { ... };
    (resolve_shader_type dmat3x3) => { ... };
    (resolve_shader_type dmat3x4) => { ... };
    (resolve_shader_type dmat4) => { ... };
    (resolve_shader_type dmat4x2) => { ... };
    (resolve_shader_type dmat4x3) => { ... };
    (resolve_shader_type dmat4x4) => { ... };
    (resolve_shader_type_format bool) => { ... };
    (resolve_shader_type_format int) => { ... };
    (resolve_shader_type_format uint) => { ... };
    (resolve_shader_type_format float) => { ... };
    (resolve_shader_type_format double) => { ... };
    (resolve_shader_type_format bvec2) => { ... };
    (resolve_shader_type_format bvec3) => { ... };
    (resolve_shader_type_format bvec4) => { ... };
    (resolve_shader_type_format ivec2) => { ... };
    (resolve_shader_type_format ivec3) => { ... };
    (resolve_shader_type_format ivec4) => { ... };
    (resolve_shader_type_format uvec2) => { ... };
    (resolve_shader_type_format uvec3) => { ... };
    (resolve_shader_type_format uvec4) => { ... };
    (resolve_shader_type_format vec2) => { ... };
    (resolve_shader_type_format vec3) => { ... };
    (resolve_shader_type_format vec4) => { ... };
    (resolve_shader_type_format dvec2) => { ... };
    (resolve_shader_type_format dvec3) => { ... };
    (resolve_shader_type_format dvec4) => { ... };
}

Utility macro that can resolve GLSL shader types into Rust primitive types and Vulkan format values.

Usage:

let shader_bool: shader_util_macro!(resolve_shader_type bool); // u32
let shader_mat4: shader_util_macro!(resolve_shader_type mat4); // [[f32; 4]; 4]
let shader_dmat2x3: shader_util_macro!(resolve_shader_type dmat2x3); // [[f64; 2]; 3]

let shader_bool_format: vk::Format = shader_util_macro!(resolve_shader_type_format bool); // R32_UINT
let shader_vec4_format: vk::Format = shader_util_macro!(resolve_shader_type_format vec4); // R32G32_SFLOAT
let shader_dvec2_format: vk::Format = shader_util_macro!(resolve_shader_type_format dvec3); // R64G64_SFLOAT