#glsl #source-string #opengl #directive #expanding #context

glsl-include

A library for expanding #include directives in GLSL source strings

7 releases

0.3.1 Mar 2, 2019
0.3.0 Mar 2, 2019
0.2.3 Apr 14, 2018
0.1.0 Apr 9, 2018

#54 in Data formats

Download history 64/week @ 2024-03-11 58/week @ 2024-03-18 35/week @ 2024-03-25 74/week @ 2024-04-01 126/week @ 2024-04-08 53/week @ 2024-04-15 57/week @ 2024-04-22 69/week @ 2024-04-29 71/week @ 2024-05-06 37/week @ 2024-05-13 68/week @ 2024-05-20 44/week @ 2024-05-27 122/week @ 2024-06-03 73/week @ 2024-06-10 71/week @ 2024-06-17 49/week @ 2024-06-24

319 downloads per month
Used in 3 crates

MIT/Apache

13KB
162 lines

glsl-include   Build Status Build Status-win Latest Version

glsl-include is a rust library for expanding #include directives in GLSL source strings


Quick Start

Cargo.toml:

[dependencies]
glsl-include = "0.3"

main.rs:

extern crate glsl_include;
use glsl_include::Context;

fn main () {
    let main = r"
        #version 410
        #include <platform.glsl>
        #include <common.glsl>
        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

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.

Dependencies

~2.2–3MB
~54K SLoC