Crate glsl

source ·
Expand description

GLSL compiler

This crate is a GLSL450 compiler. It’s able to parse valid GLSL450 formatted source into an abstract syntax tree (AST). That AST can then be transformed into SPIR-V, your own format or even folded back to a raw GLSL String (think of a minifier, for instance).

You’ll find several modules:

  • parser, which exports the parsing interface.
  • syntax, which exports the AST and language definitions.
  • transpiler, which provides you with GLSL transpilers.

Feel free to inspect those modules for further information.

Parsing architecture

Basically, the [Parse] trait gives you all you need to start parsing. This crate is designed around the concept of type-driven parsing: parsers are hidden and you just have to state what result type you expect.

The most common type you want to parse to is [TranslationUnit], which represents a set of [ExternalDeclaration]s. An [ExternalDeclaration] is just a declaration at the top-most level of a shader. It can be a global, uniform declarations, vertex attributes, a function, a structure, etc.

Modules

GLSL parsing.
GLSL abstract syntax tree and grammar.
GLSL transpilers – i.e. going from GLSL to anything else.