Skip to content

Read a GLSL string and return a parsed list of its variables. Only supports WebGL 2.0.

License

Notifications You must be signed in to change notification settings

HugoDaniel/glsl_variables

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 

Repository files navigation

glsl_variables

Reads a GLSL string and returns a parsed list of its variables. It only supports GLSL version 300, which is available on WebGL 2.

Usage

Import the parser in your code and pass it a GLSL shader code string.

import { parse } from "./parser.ts";

// This variable will be an array with a GLSLVariable for the "in vec4 a_position" as the first element.
const variables = parse(`#version 300 es
 in vec4 a_position;

 void main() {
 gl_Position = a_position;
 }
`);

API

parse(code: string): GLSLVariable[]

  • The parse function is the entry point of the parser. Receives a GLSL version 300 string (WebGL 2.0 only) and produces a list of GLSLVariable.

isInputVariable(variable: GLSLVariable): boolean

  • This function returns true if a GLSLVariable is not an "out" variable.

isOutputVariable(variable: GLSLVariable): boolean

  • This function returns true if a GLSLVariable is an "out" variable.

Types

The parser will read expressions and transform them into GLSLVariables. This is defined as:

interface GLSLVariable {
  qualifier: Qualifier | "struct";
  type: GLSLType | "block" | "struct";
  name: string;
  amount: number;
  isInvariant: boolean;
  isCentroid: boolean;
  layout: string | null;
  precision: GLSLPrecision | null;
  block: GLSLVariable[] | null;
  structName: string | null;
}

This type can handle the large majority of information available in GLSL variables. It supports uniform blocks, structs, layouts, invariants, centroids, arrays, and precision modifiers.

The GLSLType, GLSLPrecision, and Qualifier defined above are not part of the exports. They reflect their respective concepts according to the spec of the GLSL version 300 language.

About

Read a GLSL string and return a parsed list of its variables. Only supports WebGL 2.0.

Resources

License

Stars

Watchers

Forks

Packages

No packages published