/glslgen

Small package to generate type safe uniform bindings for flutter fragment shaders.

Primary LanguageDartGNU Affero General Public License v3.0AGPL-3.0

glslgen

Note Highly experimental yet! The API could be subject to change

Small package to generate type safe uniform bindings for flutter fragment shaders.
GLSL parser grammar credits go to https://github.com/IrisShaders/glsl-transformer

Usage

Add build_runner to your pubspec dev_dependencies section:

dev_dependencies:
  ...
  build_runner: <latest_version>

Add glslgen to your pubspec dependencies section:

Note not dev_dependencies, glslgen has some API that is needed to pass data to generated bindings

dependencies:
  ...
  glslgen: <latest_version>

Declare used shaders in the shaders section of your flutter section inside the pubspec as described in here:

flutter:
  ...
  shaders:
    - <your_shader1>
    - <your_shader2>
    ...

Run the generator in one time mode or watch mode:

dart run build_runner build    # for one time
dart run build_runner watch    # to update whenever any shader file changes

Import the generated file lib/glslgen/uniforms.g.dart to use the generated API in your code:

import 'package:<your_package>/glslgen/uniforms.g.dart';

...
// the name of the function is derived from the file name of your shader file
// for example for a inksplash.frag shader you'd get applyUniformsToInkSplashFrag
applyUniformsToShaderFrag( 
    shader, //your FragmentShader object
    param1: ..., // your parameters, can be of type double, Vec2, Vec3, Vec4, dart:ui Image or a List of any of these types
    param2: ...,
);