import type { System } from '../system/System'; import type { UboElement, UboLayout, UniformData, UniformsSyncCallback } from './types'; import type { UniformGroup } from './UniformGroup'; export interface UboAdaptor { createUboElements: (uniformData: UniformData[]) => UboLayout; generateUboSync: (uboElements: UboElement[]) => UniformsSyncCallback; } /** * System plugin to the renderer to manage uniform buffers. * @memberof rendering */ export declare class UboSystem implements System { /** Cache of uniform buffer layouts and sync functions, so we don't have to re-create them */ private _syncFunctionHash; private readonly _adaptor; constructor(adaptor: UboAdaptor); /** * Overridable function by `pixi.js/unsafe-eval` to silence * throwing an error if platform doesn't support unsafe-evals. * @private */ private _systemCheck; ensureUniformGroup(uniformGroup: UniformGroup): void; getUniformGroupData(uniformGroup: UniformGroup): { layout: UboLayout; syncFunction: (uniforms: Record, data: Float32Array, offset: number) => void; }; private _initUniformGroup; private _generateUboSync; syncUniformGroup(uniformGroup: UniformGroup, data?: Float32Array, offset?: number): boolean; updateUniformGroup(uniformGroup: UniformGroup): boolean; destroy(): void; }