ShaderBundleInfo.parse constructor

ShaderBundleInfo.parse(
  1. Uint8List bytes
)

Parses .shaderbundle bytes.

Implementation

factory ShaderBundleInfo.parse(Uint8List bytes) {
  final bundle = fb.ShaderBundle(bytes);
  final shaders = <ShaderInfo>[];
  for (final entry in bundle.shaders ?? const <fb.Shader>[]) {
    final name = entry.name;
    if (name == null) continue;
    final backends = <ShaderBackend, ShaderBackendInfo>{};
    void add(ShaderBackend backend, fb.BackendShader? shader) {
      if (shader == null) return;
      backends[backend] = _backendInfo(backend, shader);
    }

    add(ShaderBackend.metalIos, entry.metalIos);
    add(ShaderBackend.metalDesktop, entry.metalDesktop);
    add(ShaderBackend.openglEs, entry.openglEs);
    add(ShaderBackend.openglDesktop, entry.openglDesktop);
    add(ShaderBackend.vulkan, entry.vulkan);
    shaders.add(ShaderInfo(name: name, backends: backends));
  }
  return ShaderBundleInfo._(
    formatVersion: bundle.formatVersion,
    shaders: shaders,
  );
}