#shader #glsl #hlsl #assets #include #graphics

macro include-shader

A macro for including shader files as string with dependencies support

3 unstable releases

0.2.0 Mar 25, 2023
0.1.1 Oct 11, 2022
0.1.0 Oct 11, 2022

#1340 in Development tools

21 downloads per month

MIT/Apache

17KB
266 lines

include-shader

A Rust macro for including shader files as string with dependencies support.

Setup

Although this library works on stable, detection of shader file changes is not guaranteed due to caching. Therefore, it is recommended to use nightly along with the track-path feature enabled until the track_path API stabilizes.

For the best experience, use nightly to gain access to extra features:

  • File tracking
  • Relative path resolution

Add the following to your Cargo.toml manifest file:

[dependencies]
include-shader = { version = "0.2.0", features = ["relative-path", "track-path"] }

Stable toolchain

Add the following to your Cargo.toml manifest file:

[dependencies]
include-shader = "0.2.0"

Example

use include_shader::include_shader;

fn main() {
   // ...
   let frag_shader = compile_shader(
       &context,
       WebGl2RenderingContext::FRAGMENT_SHADER,
       include_shader!("src/shaders/fragment_shader.glsl"),
   )?;
   // ...
}

Documentation

For more details on how to use this macro, see the documentation.

License

Distributed under the terms of both the MIT license and the Apache License (Version 2.0).

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.

Dependencies

~2.2–3MB
~55K SLoC