flutter_gpu_shaders

Creator: coderz1093

Last updated:

Add to Cart

Description:

flutter gpu shaders

Build tools for Flutter GPU shader bundles/libraries.
Features #
Use native asset build hooks to import Flutter GPU shader bundle assets.
Getting started #

This package requires the experimental "native assets" feature to be enabled. Enable it with the following command:
flutter config --enable-native-assets
copied to clipboard

Place some Flutter GPU shaders in your project. For this example, we'll assume the existence of two shaders: shaders/my_cool_shader.vert and shaders/my_cool_shader.frag.
Create a shader bundle manifest file in your project. The filename must end with .shaderbundle.json. For this example, we'll assume the following file is saved as my_cool_bundle.shaderbundle.json:
{
"CoolVertex": {
"type": "vertex",
"file": "shaders/my_cool_shader.vert"
},
"CoolFragment": {
"type": "fragment",
"file": "shaders/my_cool_shader.frag"
}
}
copied to clipboard

Next, define a build hook in your project that builds the shader bundle using buildShaderBundleJson. The build hook must be named hook/build.dart in your project; this script will be automatically invoked by Flutter when the "native assets" feature is enabled:
import 'package:native_assets_cli/native_assets_cli.dart';
import 'package:flutter_gpu_shaders/build.dart';

void main(List<String> args) async {
await build(args, (config, output) async {
await buildShaderBundleJson(
buildConfig: config,
buildOutput: output,
manifestFileName: 'my_cool_bundle.shaderbundle.json');
});
}
copied to clipboard

In your project's pubspec.yaml, add an asset import rule to package the built shader bundles (this will become unnecessary once "native assets" supports DataAsset in a future release of Flutter):
flutter:
assets:
- build/shaderbundles/*.shaderbundle.json
copied to clipboard

You can now import the built shader bundle as a library using gpu.ShaderLibrary.fromAsset in your project. For example:
import 'package:flutter_gpu/gpu.dart' as gpu;

final String _kBaseShaderBundlePath =
'packages/my_project/build/shaderbundles/my_cool_bundle.shaderbundle';

gpu.ShaderLibrary? _baseShaderLibrary = null;
gpu.ShaderLibrary get baseShaderLibrary {
if (_baseShaderLibrary != null) {
return _baseShaderLibrary!;
}
_baseShaderLibrary = gpu.ShaderLibrary.fromAsset(_kBaseShaderBundlePath);
if (_baseShaderLibrary != null) {
return _baseShaderLibrary!;
}

throw Exception(
"Failed to load base shader bundle! ($_kBaseShaderBundlePath)");
}
copied to clipboard

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files:

Customer Reviews

There are no reviews.