Skip to main content

glslt

glslt is the main library that supports the GLSL Template compiler transforms. If you are building a system that relies on transforming GLSLT code, you'll want to interact with this library directly instead of the command-line interface provided by glsltc.

Usage

Rust crate

The glslt crate manipulates syntax trees generated by the glsl-lang crate.

use glslt::glsl_lang::{ast::*, parse::IntoParseBuilderExt};
use glslt::transform::{Unit, TransformUnit};

let glsl_src = r#"
float sdf3d(in vec3 p);
float colort();

float sdSphere(vec3 p, float r) {
    return length(p) - r;
}

float opElongate(in sdf3d primitive, in colort C, in vec3 p, in colort D, in vec3 h) {
    vec3 q = p - clamp(p, -h, h);
    return C() * primitive(q) * D();
}

void mainImage(out vec4 fragColor, in vec2 fragCoord) {
    float sz = 5.;
    fragColor = vec4(vec3(opElongate(sdSphere(_p, sz), 1.0, vec3(fragCoord, 0.), 2.0, vec3(1., 2., 3.))), 1.0);
}
"#;

// Parse the GLSLT source code
let tu: TranslationUnit = glsl_src
    .builder()
    .context(&glslt::parse::make_parse_context(None))
    .parse()
    .expect("failed to parse GLSLT source")
    .0;

// Create the transform unit
let mut unit = Unit::new();

// Parse declarations
for decl in tu.0.into_iter() {
    unit.parse_external_declaration(decl).expect("failed to parse declaration");
}

// Generate the result
let tu = unit.into_translation_unit().expect("failed to generate output");

// Transpile the syntax tree to GLSL source
let mut output_src = String::new();
glsl_lang::transpiler::glsl::show_translation_unit(
    &mut output_src,
    &tu,
    glsl_lang::transpiler::glsl::FormattingState::default(),
).expect("failed to generate GLSL");

Python library

If you installed the glslt library via pip install glslt or maturin develop, you may use the Python interface to the GLSLT compiler.

import glslt

# Parse the `sdf.glsl` file with `my-glsl-lib/include` being a system include
# directory for #include resolution
translation_unit = glslt.parse_files(["sdf.glsl"], ["my-glsl-lib/include"])

# Create a new minimizing transform unit
unit = glslt.MinUnit()

# Add the parsed declarations to the transform unit
unit.add_unit(translation_unit)

# Get the output of the transform
result = unit.to_translation_unit(["mainImage"])

# Print the GLSL code
print(result.to_glsl())

Author

Alixinne alixinne@pm.me

Release files for glslt 0.7.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for glslt 0.7.6
File Size Uploaded
glslt-0.7.6.tar.gz 26.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for glslt 0.7.6
File
glslt-0.7.6-cp313-none-win_amd64.whl CPython 3.13 none Windows x86-64 Details
glslt-0.7.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 free-threading Linux glibc 2.17+ x86-64 Details
glslt-0.7.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
glslt-0.7.6-cp312-none-win_amd64.whl CPython 3.12 none Windows x86-64 Details
glslt-0.7.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
glslt-0.7.6-cp311-none-win_amd64.whl CPython 3.11 none Windows x86-64 Details
glslt-0.7.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
glslt-0.7.6-cp310-none-win_amd64.whl CPython 3.10 none Windows x86-64 Details
glslt-0.7.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details

Total release size: 16.2 MB

Release files / glslt-0.7.6.tar.gz

Download URL glslt-0.7.6.tar.gz
Size 26.4 kB
Tags Source
SHA-256 checksum
How to use checksums
44deb19c2e993854acb3f4cc8c204fb1ecc2d9d68a6b1fe86d2592d2830d5c12
BLAKE2b-256 checksum
How to use checksums
683d882c481d4090bf9e52aa749b7413ff7f1a373349c7f717b5a99d4e7dfb56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / glslt-0.7.6-cp313-none-win_amd64.whl

Download URL glslt-0.7.6-cp313-none-win_amd64.whl
Size 1.6 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
08fd21a988eb8afa8081366981f284e5e4d7add653b4df45bd452a5e1f53c243
BLAKE2b-256 checksum
How to use checksums
a9f660eb458604f94c9010e5806a7a4e3b214efce6ac2a07b99635685000a652
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / glslt-0.7.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL glslt-0.7.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.0 MB
Tags CPython 3.13 CPython 3.13 free-threading Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
114308dfb4b14091daf415c655e62fa1e6252efd331b7644393d1dde042f9112
BLAKE2b-256 checksum
How to use checksums
c5dd9830c53cfc81bc1ed12c555439e2f76ff64b3c8c1a70c281dea96484d023
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / glslt-0.7.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL glslt-0.7.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.0 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6ce44e3c83e5cf8e12827cb33fc746e75d7e0fc31b812e8df3063182bc90f7b2
BLAKE2b-256 checksum
How to use checksums
e99d8acf83f61b0a960890d1ae612a870ac81fbe5f30f098a5d7230378e5179f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / glslt-0.7.6-cp312-none-win_amd64.whl

Download URL glslt-0.7.6-cp312-none-win_amd64.whl
Size 1.6 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
8e2f7ea2db2a6fcc3ccb761f3d717aafde144f4420f07fabe67b6d3ec99b1c09
BLAKE2b-256 checksum
How to use checksums
6418c4e61efaeeeca830edada62a199ae3ad8bbb334318e71ac91aaa530a2a59
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / glslt-0.7.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL glslt-0.7.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.0 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
5612359c9acc769773e34d90a626b1255360a68c6bab731fe88f7f10e8346478
BLAKE2b-256 checksum
How to use checksums
4a5891f21e98a4dd1343b0b9c94c3152ee435566c8ad598f61cee00335de0bd1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / glslt-0.7.6-cp311-none-win_amd64.whl

Download URL glslt-0.7.6-cp311-none-win_amd64.whl
Size 1.6 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
b3e25d7f7e17517d6767f92eb064247ffa72659cefa5126bf954e6318d8f534a
BLAKE2b-256 checksum
How to use checksums
7c5ef42301291703b2059745a91d7da8063f6652fce9011c5f3df33bacc54627
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / glslt-0.7.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL glslt-0.7.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.0 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
f2ecca2176c8780200fb5b7022cd91c34baba383ba2c3a6f1283b4ec91d5edd2
BLAKE2b-256 checksum
How to use checksums
c61fd7e6ff50b9a0e21639cd40f59913ff113e82fec0763acc0684850d691e41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / glslt-0.7.6-cp310-none-win_amd64.whl

Download URL glslt-0.7.6-cp310-none-win_amd64.whl
Size 1.6 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
09ba3c056bb0c936772b0828c731c6cb9a8bd04c379cb9fa44d327171cf55a35
BLAKE2b-256 checksum
How to use checksums
f0a6d9afa4669e70b31a9c63d9b99508186d4fc418f7a27369a1ed686d524ea2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release files / glslt-0.7.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL glslt-0.7.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.0 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
1071b2dee3321268c90995d7f19f7e5815409d415d72cea50c9475332c028df2
BLAKE2b-256 checksum
How to use checksums
cc605c52d6c124e2b4179e437620dec0f9173734a6986c72ba8452352e59d1c2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.7.6 This release

10 release files

0.7.4

9 release files

0.7.3

9 release files

0.7.2

9 release files

0.7.1

9 release files

0.7.0

9 release files

0.6.4

9 release files

0.6.3

11 release files

0.6.2

11 release files

0.6.1

9 release files

0.4.3

10 release files

0.4.2

17 release files

0.4.1

17 release files

0.4.0

17 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page