shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$gpu$BindGroupSystem = function(global, require, module, exports) { global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions"); "use strict"; class BindGroupSystem { constructor(renderer) { this._hash = Object.create(null); this._renderer = renderer; } contextChange(gpu) { this._gpu = gpu; } getBindGroup(bindGroup, program, groupIndex) { bindGroup._updateKey(); return this._hash[bindGroup._key] || this._createBindGroup(bindGroup, program, groupIndex); } _createBindGroup(group, program, groupIndex) { var device = this._gpu.device; const groupLayout = program.layout[groupIndex], entries = [], renderer = this._renderer; for (const j in groupLayout) { var resource = group.resources[j] ?? group.resources[groupLayout[j]]; let gpuResource; "uniformGroup" === resource._resourceType ? (renderer.ubo.updateUniformGroup(resource), resource = resource.buffer, gpuResource = {buffer:renderer.buffer.getGPUBuffer(resource), offset:0, size:resource.descriptor.size}) : "buffer" === resource._resourceType ? gpuResource = {buffer:renderer.buffer.getGPUBuffer(resource), offset:0, size:resource.descriptor.size} : "bufferResource" === resource._resourceType ? gpuResource = {buffer:renderer.buffer.getGPUBuffer(resource.buffer), offset:resource.offset, size:resource.size} : "textureSampler" === resource._resourceType ? gpuResource = renderer.texture.getGpuSampler(resource) : "textureSource" === resource._resourceType && (gpuResource = renderer.texture.getTextureView(resource)); entries.push({binding:groupLayout[j], resource:gpuResource}); } program = renderer.shader.getProgramData(program).bindGroups[groupIndex]; device = device.createBindGroup({layout:program, entries}); return this._hash[group._key] = device; } destroy() { this._renderer = this._hash = null; } } BindGroupSystem.extension = {type:[global.ExtensionType.WebGPUSystem], name:"bindGroup"}; exports.BindGroupSystem = BindGroupSystem; }; //# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$gpu$BindGroupSystem.js.map