73 lines
3.8 KiB
JavaScript
73 lines
3.8 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$batcher$shared$BatcherPipe = 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"), DefaultBatcher = require("module$node_modules$pixi_DOT_js$lib$rendering$batcher$shared$DefaultBatcher");
|
|
"use strict";
|
|
const node_modules$pixi_DOT_js$lib$rendering$batcher$shared$BatcherPipe$classdecl$var15 = class {
|
|
constructor(renderer, adaptor) {
|
|
this.state = State.State.for2d();
|
|
this._batchersByInstructionSet = Object.create(null);
|
|
this._activeBatches = Object.create(null);
|
|
this.renderer = renderer;
|
|
this._adaptor = adaptor;
|
|
this._adaptor.init?.(this);
|
|
}
|
|
static getBatcher(name, maxTextures) {
|
|
return new this._availableBatchers[name]({maxTextures});
|
|
}
|
|
buildStart(instructionSet) {
|
|
let batchers = this._batchersByInstructionSet[instructionSet.uid];
|
|
batchers || (batchers = this._batchersByInstructionSet[instructionSet.uid] = Object.create(null), batchers.default || (batchers.default = new DefaultBatcher.DefaultBatcher({maxTextures:this.renderer.limits.maxBatchableTextures})));
|
|
this._activeBatches = batchers;
|
|
this._activeBatch = this._activeBatches.default;
|
|
for (const i in this._activeBatches) {
|
|
this._activeBatches[i].begin();
|
|
}
|
|
}
|
|
addToBatch(batchableObject, instructionSet) {
|
|
this._activeBatch.name !== batchableObject.batcherName && (this._activeBatch.break(instructionSet), instructionSet = this._activeBatches[batchableObject.batcherName], instructionSet || (instructionSet = this._activeBatches[batchableObject.batcherName] = node_modules$pixi_DOT_js$lib$rendering$batcher$shared$BatcherPipe$classdecl$var15.getBatcher(batchableObject.batcherName, this.renderer.limits.maxBatchableTextures), instructionSet.begin()), this._activeBatch = instructionSet);
|
|
this._activeBatch.add(batchableObject);
|
|
}
|
|
break(instructionSet) {
|
|
this._activeBatch.break(instructionSet);
|
|
}
|
|
buildEnd(instructionSet) {
|
|
this._activeBatch.break(instructionSet);
|
|
instructionSet = this._activeBatches;
|
|
for (const i in instructionSet) {
|
|
const batch = instructionSet[i], geometry = batch.geometry;
|
|
geometry.indexBuffer.setDataWithSize(batch.indexBuffer, batch.indexSize, !0);
|
|
geometry.buffers[0].setDataWithSize(batch.attributeBuffer.float32View, batch.attributeSize, !1);
|
|
}
|
|
}
|
|
upload(instructionSet) {
|
|
instructionSet = this._batchersByInstructionSet[instructionSet.uid];
|
|
for (const i in instructionSet) {
|
|
const batcher = instructionSet[i], geometry = batcher.geometry;
|
|
batcher.dirty && (batcher.dirty = !1, geometry.buffers[0].update(4 * batcher.attributeSize));
|
|
}
|
|
}
|
|
execute(batch) {
|
|
if ("startBatch" === batch.action) {
|
|
const batcher = batch.batcher;
|
|
this._adaptor.start(this, batcher.geometry, batcher.shader);
|
|
}
|
|
this._adaptor.execute(this, batch);
|
|
}
|
|
destroy() {
|
|
this._adaptor = this.renderer = this.state = null;
|
|
for (const i in this._activeBatches) {
|
|
this._activeBatches[i].destroy();
|
|
}
|
|
this._activeBatches = null;
|
|
}
|
|
};
|
|
require = node_modules$pixi_DOT_js$lib$rendering$batcher$shared$BatcherPipe$classdecl$var15;
|
|
require.extension = {type:[global.ExtensionType.WebGLPipes, global.ExtensionType.WebGPUPipes, global.ExtensionType.CanvasPipes], name:"batch"};
|
|
require._availableBatchers = Object.create(null);
|
|
global.extensions.handleByMap(global.ExtensionType.Batcher, require._availableBatchers);
|
|
global.extensions.add(DefaultBatcher.DefaultBatcher);
|
|
exports.BatcherPipe = require;
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$batcher$shared$BatcherPipe.js.map
|