ShaderBundleInfo.parse constructor
ShaderBundleInfo.parse(
- 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,
);
}