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