# glsl-include   [![Build Status]][travis] [![Build Status-win]][appveyor] [![Latest Version]][crates.io] [Build Status]: https://travis-ci.org/jshrake/glsl-include.svg?branch=master [travis]: https://travis-ci.org/jshrake/glsl-include [Build Status-win]: https://ci.appveyor.com/api/projects/status/3btnmxtpmabotj26?svg=true [appveyor]: https://ci.appveyor.com/project/jshrake/glsl-include [Latest Version]: https://img.shields.io/crates/v/glsl-include.svg [crates.io]: https://crates.io/crates/glsl-include **glsl-include is a rust library for expanding #include directives in GLSL source strings** --- ## Quick Start Cargo.toml: ```toml [dependencies] glsl-include = "0.3" ``` main.rs: ```rust extern crate glsl_include; use glsl_include::Context; fn main () { let main = r" #version 410 #include #include out vec4 fragColor; void main () { fragColor = vec4(1.0); }"; let platform = "void platform_fn() {}"; let common = "uniform float iTime;"; let expanded_src = Context::new() .include("platform.glsl", platform) .include("common.glsl",common) .expand(main).unwrap(); } ``` ## #pragma include The library also expands `#pragma include` statements with no additonal configuration required. ## Benchmarks ``` cargo bench ``` The workflow I currently use for benchmarking a changeset: ``` git checkout master; cargo bench git checkout feature-branch; cargo bench ``` For the best results with criterion, install `gnuplot` (macos: `brew install gnuplot`) ## License Licensed under either of * Apache License, Version 2.0, ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0) * MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT) 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.