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: ...,
);