{"version":3,"file":"getTextureBatchBindGroup.mjs","sources":["../../../../src/rendering/batcher/gpu/getTextureBatchBindGroup.ts"],"sourcesContent":["import { BindGroup } from '../../renderers/gpu/shader/BindGroup';\nimport { Texture } from '../../renderers/shared/texture/Texture';\n\nimport type { TextureSource } from '../../renderers/shared/texture/sources/TextureSource';\n\nconst cachedGroups: Record<number, BindGroup> = {};\n\n/**\n * @param textures\n * @param size\n * @param maxTextures\n * @internal\n */\nexport function getTextureBatchBindGroup(textures: TextureSource[], size: number, maxTextures: number)\n{\n    let uid = 2166136261; // FNV-1a 32-bit offset basis\n\n    for (let i = 0; i < size; i++)\n    {\n        uid ^= textures[i].uid;\n        uid = Math.imul(uid, 16777619);\n        uid >>>= 0;\n    }\n\n    return cachedGroups[uid] || generateTextureBatchBindGroup(textures, size, uid, maxTextures);\n}\n\nfunction generateTextureBatchBindGroup(textures: TextureSource[], size: number, key: number, maxTextures: number): BindGroup\n{\n    const bindGroupResources: Record<string, any> = {};\n\n    let bindIndex = 0;\n\n    for (let i = 0; i < maxTextures; i++)\n    {\n        const texture = i < size ? textures[i] : Texture.EMPTY.source;\n\n        bindGroupResources[bindIndex++] = texture.source;\n        bindGroupResources[bindIndex++] = texture.style;\n    }\n\n    // pad out with empty textures\n    const bindGroup = new BindGroup(bindGroupResources);\n\n    cachedGroups[key] = bindGroup;\n\n    return bindGroup;\n}\n\n"],"names":[],"mappings":";;;;AAKA,MAAM,eAA0C,EAAC;AAQ1C,SAAS,wBAAA,CAAyB,QAAA,EAA2B,IAAA,EAAc,WAAA,EAClF;AACI,EAAA,IAAI,GAAA,GAAM,UAAA;AAEV,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,EAAM,CAAA,EAAA,EAC1B;AACI,IAAA,GAAA,IAAO,QAAA,CAAS,CAAC,CAAA,CAAE,GAAA;AACnB,IAAA,GAAA,GAAM,IAAA,CAAK,IAAA,CAAK,GAAA,EAAK,QAAQ,CAAA;AAC7B,IAAA,GAAA,MAAS,CAAA;AAAA,EACb;AAEA,EAAA,OAAO,aAAa,GAAG,CAAA,IAAK,8BAA8B,QAAA,EAAU,IAAA,EAAM,KAAK,WAAW,CAAA;AAC9F;AAEA,SAAS,6BAAA,CAA8B,QAAA,EAA2B,IAAA,EAAc,GAAA,EAAa,WAAA,EAC7F;AACI,EAAA,MAAM,qBAA0C,EAAC;AAEjD,EAAA,IAAI,SAAA,GAAY,CAAA;AAEhB,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,EAAa,CAAA,EAAA,EACjC;AACI,IAAA,MAAM,UAAU,CAAA,GAAI,IAAA,GAAO,SAAS,CAAC,CAAA,GAAI,QAAQ,KAAA,CAAM,MAAA;AAEvD,IAAA,kBAAA,CAAmB,SAAA,EAAW,IAAI,OAAA,CAAQ,MAAA;AAC1C,IAAA,kBAAA,CAAmB,SAAA,EAAW,IAAI,OAAA,CAAQ,KAAA;AAAA,EAC9C;AAGA,EAAA,MAAM,SAAA,GAAY,IAAI,SAAA,CAAU,kBAAkB,CAAA;AAElD,EAAA,YAAA,CAAa,GAAG,CAAA,GAAI,SAAA;AAEpB,EAAA,OAAO,SAAA;AACX;;;;"}