#spir-v #glsl-shader #glsl #vulkan #shader #macro #compile-time

glsl-to-spirv-macros

Macros for generating SPIR-V shader binaries from GLSL at compile time for use with Vulkan. To use this crate, you must also use the glsl-to-spirv-macros-impl crate

3 releases

Uses old Rust 2015

0.1.1 Jul 9, 2017
0.1.0 Jun 18, 2017

#1035 in Graphics APIs


Used in ash-tray

MIT/Apache

8KB
132 lines

glsl-to-spirv-macros

Documentation

[dependencies]
glsl-to-spirv-macros = "0.1.1"
glsl-to-spirv-macros-impl = "0.1.0"

Rust macros for generating SPIR-V binaries at compile time for use with Vulkan.

To use this crate, you must also use the glsl-to-spirv-macros-impl crate.

Documentation

Use this crate to compile your GLSL shaders at compile time into binaries embedded in your program.

This crate requires you to also use the glsl-to-spirv-macros-impl crate. Without it these macros will not work. Unfortunately it is not yet possible to combine the two crates into one.

Example usage:

#[macro_use] extern crate glsl_to_spirv_macros;
#[macro_use] extern crate glsl_to_spirv_macros_impl;

static some_shader: &'static [u8] = glsl_vs!{r#"
    // Shader code here
"#};

fn main() {
    let another_shader = include_glsl_fs!("path/to/shader");
}

All macros in this crate return &'static [u8], and can be used in the definition of static as well as local variables. Every macro takes a string literal, e.g. "...", r#"..."# etc.

These macros generate Vulkan-compatible SPIR-V binaries using the official glslang compiler - they are not designed for use with other APIs, like OpenCL.

License

This library is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

No runtime deps