shadow$provide.module$node_modules$pixi_DOT_js$lib$scene$graphics$shared$GraphicsPipe = function(global, require, module, exports) { global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions"); var State = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$state$State"), GCManagedHash = require("module$node_modules$pixi_DOT_js$lib$utils$data$GCManagedHash"), PoolGroup = require("module$node_modules$pixi_DOT_js$lib$utils$pool$PoolGroup"), colorToUniform = require("module$node_modules$pixi_DOT_js$lib$scene$graphics$gpu$colorToUniform"), BatchableGraphics = require("module$node_modules$pixi_DOT_js$lib$scene$graphics$shared$BatchableGraphics"); "use strict"; class GraphicsGpuData { constructor() { this.batches = []; this.batched = !1; } destroy() { this.batches.forEach(batch => { PoolGroup.BigPool.return(batch); }); this.batches.length = 0; } } class GraphicsPipe { constructor(renderer, adaptor) { this.state = State.State.for2d(); this.renderer = renderer; this._adaptor = adaptor; this.renderer.runners.contextChange.add(this); this._managedGraphics = new GCManagedHash.GCManagedHash({renderer, type:"renderable", priority:-1, name:"graphics"}); } contextChange() { this._adaptor.contextChange(this.renderer); } validateRenderable(graphics) { const wasBatched = !!graphics._gpuData; graphics = this.renderer.graphicsContext.updateGpuContext(graphics.context); return graphics.isBatchable || wasBatched !== graphics.isBatchable ? !0 : !1; } addRenderable(graphics, instructionSet) { const gpuContext = this.renderer.graphicsContext.updateGpuContext(graphics.context); graphics.didViewUpdate && this._rebuild(graphics); gpuContext.isBatchable ? this._addToBatcher(graphics, instructionSet) : (this.renderer.renderPipes.batch.break(instructionSet), instructionSet.add(graphics)); } updateRenderable(graphics) { graphics = this._getGpuDataForRenderable(graphics).batches; for (let i = 0; i < graphics.length; i++) { const batch = graphics[i]; batch._batcher.updateElement(batch); } } execute(graphics) { if (graphics.isRenderable) { var renderer = this.renderer, context = graphics.context; renderer.graphicsContext.getGpuContext(context).batches.length && (context = context.customShader || this._adaptor.shader, this.state.blendMode = graphics.groupBlendMode, context = context.resources.localUniforms.uniforms, context.uTransformMatrix = graphics.groupTransform, context.uRound = renderer._roundPixels | graphics._roundPixels, colorToUniform.color32BitToUniform(graphics.groupColorAlpha, context.uColor, 0), this._adaptor.execute(this, graphics)); } } _rebuild(graphics) { const gpuData = this._getGpuDataForRenderable(graphics), gpuContext = this.renderer.graphicsContext.updateGpuContext(graphics.context); gpuData.destroy(); gpuContext.isBatchable && this._updateBatchesForRenderable(graphics, gpuData); } _addToBatcher(graphics, instructionSet) { const batchPipe = this.renderer.renderPipes.batch; graphics = this._getGpuDataForRenderable(graphics).batches; for (let i = 0; i < graphics.length; i++) { batchPipe.addToBatch(graphics[i], instructionSet); } } _getGpuDataForRenderable(graphics) { return graphics._gpuData[this.renderer.uid] || this._initGpuDataForRenderable(graphics); } _initGpuDataForRenderable(graphics) { const gpuData = new GraphicsGpuData(); graphics._gpuData[this.renderer.uid] = gpuData; this._managedGraphics.add(graphics); return gpuData; } _updateBatchesForRenderable(graphics, gpuData) { const gpuContext = this.renderer.graphicsContext.getGpuContext(graphics.context), roundPixels = this.renderer._roundPixels | graphics._roundPixels; gpuData.batches = gpuContext.batches.map(batch => { const batchClone = PoolGroup.BigPool.get(BatchableGraphics.BatchableGraphics); batch.copyTo(batchClone); batchClone.renderable = graphics; batchClone.roundPixels = roundPixels; return batchClone; }); } destroy() { this._managedGraphics.destroy(); this.renderer = null; this._adaptor.destroy(); this.state = this._adaptor = null; } } GraphicsPipe.extension = {type:[global.ExtensionType.WebGLPipes, global.ExtensionType.WebGPUPipes], name:"graphics"}; exports.GraphicsGpuData = GraphicsGpuData; exports.GraphicsPipe = GraphicsPipe; }; //# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$scene$graphics$shared$GraphicsPipe.js.map