build_hooks library

Build-hook helpers for flutter_scene.

Call these from your app's hook/build.dart at build time: buildScenes converts glTF (.glb) source assets into flutter_scene's .fsceneb package format (loaded by source path with loadScene), and buildMaterials compiles .fmat custom-material files into a Flutter GPU shader bundle plus a parameter sidecar. In DataAssets mode, the outputs are registered with the Flutter asset bundle and can be loaded by source path through loadScene / loadFmatMaterial.

import 'package:hooks/hooks.dart';
import 'package:flutter_scene/build_hooks.dart';

void main(List<String> args) {
  build(args, (config, output) async {
    buildScenes(
      buildInput: config,
      buildOutput: output,
      assetMode: SceneAssetMode.dataAssetsRequired,
    );
    await buildMaterials(
      buildInput: config,
      buildOutput: output,
      materials: ['materials/toon.fmat'],
    );
  });
}

Enums

MaterialAssetMode
Controls how buildMaterials exposes generated .fmat shader assets.
SceneAssetMode
Controls how buildScenes exposes generated .fsceneb assets.

Functions

buildMaterials({required BuildInput buildInput, required BuildOutputBuilder buildOutput, List<String>? materials, String bundleName = 'materials', String discoveryRoot = 'assets/', MaterialAssetMode assetMode = MaterialAssetMode.legacyOnly}) Future<void>
Compiles .fmat custom-material files into a Flutter GPU shader bundle plus a parameter-metadata sidecar, for use with ShaderMaterial / PreprocessedMaterial at runtime.
buildScenes({required BuildInput buildInput, required BuildOutputBuilder buildOutput, List<String>? inputFilePaths, String outputDirectory = 'build/scenes/', String discoveryRoot = 'assets/', SceneAssetMode assetMode = SceneAssetMode.legacyOnly, bool compressTextures = false}) → void
Converts glTF (.glb) source assets to flutter_scene's .fsceneb package format and writes the result into outputDirectory (resolved relative to BuildInput.packageRoot).