{"version":3,"file":"UboBatch.mjs","sources":["../../../../../src/rendering/renderers/gpu/buffer/UboBatch.ts"],"sourcesContent":["/** @internal */\nexport class UboBatch\n{\n    public data: Float32Array;\n    private readonly _minUniformOffsetAlignment: number = 256;\n\n    public byteIndex = 0;\n\n    constructor({ minUniformOffsetAlignment }: {minUniformOffsetAlignment: number})\n    {\n        this._minUniformOffsetAlignment = minUniformOffsetAlignment;\n        this.data = new Float32Array(65535);\n    }\n\n    public clear(): void\n    {\n        this.byteIndex = 0;\n    }\n\n    public addEmptyGroup(size: number): number\n    {\n        // update the buffer.. only float32 for now!\n        if (size > this._minUniformOffsetAlignment / 4)\n        {\n            throw new Error(`UniformBufferBatch: array is too large: ${size * 4}`);\n        }\n\n        const start = this.byteIndex;\n\n        let newSize = start + (size * 4);\n\n        newSize = Math.ceil(newSize / this._minUniformOffsetAlignment) * this._minUniformOffsetAlignment;\n\n        if (newSize > this.data.length * 4)\n        {\n            // TODO push a new buffer\n            throw new Error('UniformBufferBatch: ubo batch got too big');\n        }\n\n        this.byteIndex = newSize;\n\n        return start;\n    }\n\n    public addGroup(array: Float32Array): number\n    {\n        const offset = this.addEmptyGroup(array.length);\n\n        for (let i = 0; i < array.length; i++)\n        {\n            this.data[(offset / 4) + i] = array[i];\n        }\n\n        return offset;\n    }\n\n    public destroy()\n    {\n        this.data = null;\n    }\n}\n"],"names":[],"mappings":";AACO,MAAM,QAAA,CACb;AAAA,EAMI,WAAA,CAAY,EAAE,yBAAA,EAA0B,EACxC;AALA,IAAA,IAAA,CAAiB,0BAAA,GAAqC,GAAA;AAEtD,IAAA,IAAA,CAAO,SAAA,GAAY,CAAA;AAIf,IAAA,IAAA,CAAK,0BAAA,GAA6B,yBAAA;AAClC,IAAA,IAAA,CAAK,IAAA,GAAO,IAAI,YAAA,CAAa,KAAK,CAAA;AAAA,EACtC;AAAA,EAEO,KAAA,GACP;AACI,IAAA,IAAA,CAAK,SAAA,GAAY,CAAA;AAAA,EACrB;AAAA,EAEO,cAAc,IAAA,EACrB;AAEI,IAAA,IAAI,IAAA,GAAO,IAAA,CAAK,0BAAA,GAA6B,CAAA,EAC7C;AACI,MAAA,MAAM,IAAI,KAAA,CAAM,CAAA,wCAAA,EAA2C,IAAA,GAAO,CAAC,CAAA,CAAE,CAAA;AAAA,IACzE;AAEA,IAAA,MAAM,QAAQ,IAAA,CAAK,SAAA;AAEnB,IAAA,IAAI,OAAA,GAAU,QAAS,IAAA,GAAO,CAAA;AAE9B,IAAA,OAAA,GAAU,KAAK,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,0BAA0B,IAAI,IAAA,CAAK,0BAAA;AAEtE,IAAA,IAAI,OAAA,GAAU,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAA,EACjC;AAEI,MAAA,MAAM,IAAI,MAAM,2CAA2C,CAAA;AAAA,IAC/D;AAEA,IAAA,IAAA,CAAK,SAAA,GAAY,OAAA;AAEjB,IAAA,OAAO,KAAA;AAAA,EACX;AAAA,EAEO,SAAS,KAAA,EAChB;AACI,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,aAAA,CAAc,KAAA,CAAM,MAAM,CAAA;AAE9C,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,QAAQ,CAAA,EAAA,EAClC;AACI,MAAA,IAAA,CAAK,KAAM,MAAA,GAAS,CAAA,GAAK,CAAC,CAAA,GAAI,MAAM,CAAC,CAAA;AAAA,IACzC;AAEA,IAAA,OAAO,MAAA;AAAA,EACX;AAAA,EAEO,OAAA,GACP;AACI,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,EAChB;AACJ;;;;"}