shadow$provide.module$node_modules$pixi_DOT_js$lib$scene$graphics$gpu$GpuGraphicsAdaptor = function(global, require, module, exports) {
  global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions");
  var Matrix = require("module$node_modules$pixi_DOT_js$lib$maths$matrix$Matrix"), getTextureBatchBindGroup = require("module$node_modules$pixi_DOT_js$lib$rendering$batcher$gpu$getTextureBatchBindGroup"), compileHighShaderToProgram = require("module$node_modules$pixi_DOT_js$lib$rendering$high_shader$compileHighShaderToProgram"), colorBit = require("module$node_modules$pixi_DOT_js$lib$rendering$high_shader$shader_bits$colorBit"), generateTextureBatchBit = require("module$node_modules$pixi_DOT_js$lib$rendering$high_shader$shader_bits$generateTextureBatchBit"), 
  localUniformBit = require("module$node_modules$pixi_DOT_js$lib$rendering$high_shader$shader_bits$localUniformBit"), roundPixelsBit = require("module$node_modules$pixi_DOT_js$lib$rendering$high_shader$shader_bits$roundPixelsBit"), Shader = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$shader$Shader"), UniformGroup = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$shader$UniformGroup");
  "use strict";
  class GpuGraphicsAdaptor {
    constructor() {
      this._maxTextures = 0;
    }
    contextChange(renderer) {
      const localUniforms = new UniformGroup.UniformGroup({uTransformMatrix:{value:new Matrix.Matrix(), type:"mat3x3\x3cf32\x3e"}, uColor:{value:new Float32Array([1, 1, 1, 1]), type:"vec4\x3cf32\x3e"}, uRound:{value:0, type:"f32"}});
      this._maxTextures = renderer.limits.maxBatchableTextures;
      renderer = compileHighShaderToProgram.compileHighShaderGpuProgram({name:"graphics", bits:[colorBit.colorBit, generateTextureBatchBit.generateTextureBatchBit(this._maxTextures), localUniformBit.localUniformBitGroup2, roundPixelsBit.roundPixelsBit]});
      this.shader = new Shader.Shader({gpuProgram:renderer, resources:{localUniforms}});
    }
    execute(graphicsPipe, renderable) {
      var context = renderable.context;
      renderable = context.customShader || this.shader;
      const renderer = graphicsPipe.renderer, {batcher, instructions} = renderer.graphicsContext.getContextRenderData(context);
      context = renderer.encoder;
      context.setGeometry(batcher.geometry, renderable.gpuProgram);
      context.setBindGroup(0, renderer.globalUniforms.bindGroup, renderable.gpuProgram);
      var localBindGroup = renderer.renderPipes.uniformBatch.getUniformBindGroup(renderable.resources.localUniforms, !0);
      context.setBindGroup(2, localBindGroup, renderable.gpuProgram);
      localBindGroup = instructions.instructions;
      let topology = null;
      for (let i = 0; i < instructions.instructionSize; i++) {
        const batch = localBindGroup[i];
        batch.topology !== topology && (topology = batch.topology, context.setPipelineFromGeometryProgramAndState(batcher.geometry, renderable.gpuProgram, graphicsPipe.state, batch.topology));
        renderable.groups[1] = batch.bindGroup;
        if (!batch.gpuBindGroup) {
          const textureBatch = batch.textures;
          batch.bindGroup = getTextureBatchBindGroup.getTextureBatchBindGroup(textureBatch.textures, textureBatch.count, this._maxTextures);
          batch.gpuBindGroup = renderer.bindGroup.getBindGroup(batch.bindGroup, renderable.gpuProgram, 1);
        }
        context.setBindGroup(1, batch.bindGroup, renderable.gpuProgram);
        context.renderPassEncoder.drawIndexed(batch.size, 1, batch.start);
      }
    }
    destroy() {
      this.shader.destroy(!0);
      this.shader = null;
    }
  }
  GpuGraphicsAdaptor.extension = {type:[global.ExtensionType.WebGPUPipesAdaptor], name:"graphics"};
  exports.GpuGraphicsAdaptor = GpuGraphicsAdaptor;
};

//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$scene$graphics$gpu$GpuGraphicsAdaptor.js.map
