pixi.js
Version:
PixiJS — The HTML5 Creation Engine =============
1 lines • 6.96 kB
Source Map (JSON)
{"version":3,"file":"BatcherPipe.mjs","sources":["../../../../src/rendering/batcher/shared/BatcherPipe.ts"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions';\nimport { State } from '../../renderers/shared/state/State';\nimport { Batcher } from './Batcher';\nimport { BatchGeometry } from './BatchGeometry';\n\nimport type { Geometry } from '../../renderers/shared/geometry/Geometry';\nimport type { InstructionSet } from '../../renderers/shared/instructions/InstructionSet';\nimport type { BatchPipe, InstructionPipe } from '../../renderers/shared/instructions/RenderPipe';\nimport type { Renderer } from '../../renderers/types';\nimport type { Batch, BatchableObject } from './Batcher';\n\nexport interface BatcherAdaptor\n{\n start(batchPipe: BatcherPipe, geometry: Geometry): void\n init(batchPipe: BatcherPipe): void;\n execute(batchPipe: BatcherPipe, batch: Batch): void\n destroy(): void;\n contextChange?(): void;\n}\n\n// eslint-disable-next-line max-len\nexport class BatcherPipe implements InstructionPipe<Batch>, BatchPipe\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'batch',\n } as const;\n\n public state: State = State.for2d();\n public renderer: Renderer;\n\n private _batches: Record<number, Batcher> = Object.create(null);\n private _geometries: Record<number, BatchGeometry> = Object.create(null);\n private _adaptor: BatcherAdaptor;\n\n private _activeBatch: Batcher;\n private _activeGeometry: Geometry;\n\n constructor(renderer: Renderer, adaptor: BatcherAdaptor)\n {\n this.renderer = renderer;\n this._adaptor = adaptor;\n\n this._adaptor.init(this);\n }\n\n public buildStart(instructionSet: InstructionSet)\n {\n if (!this._batches[instructionSet.uid])\n {\n const batcher = new Batcher();\n\n this._batches[instructionSet.uid] = batcher;\n this._geometries[batcher.uid] = new BatchGeometry();\n }\n\n this._activeBatch = this._batches[instructionSet.uid];\n this._activeGeometry = this._geometries[this._activeBatch.uid];\n\n this._activeBatch.begin();\n }\n\n public addToBatch(batchableObject: BatchableObject)\n {\n this._activeBatch.add(batchableObject);\n }\n\n public break(instructionSet: InstructionSet)\n {\n this._activeBatch.break(instructionSet);\n }\n\n public buildEnd(instructionSet: InstructionSet)\n {\n const activeBatch = this._activeBatch;\n const geometry = this._activeGeometry;\n\n activeBatch.finish(instructionSet);\n\n geometry.indexBuffer.setDataWithSize(activeBatch.indexBuffer, activeBatch.indexSize, true);\n\n geometry.buffers[0].setDataWithSize(activeBatch.attributeBuffer.float32View, activeBatch.attributeSize, false);\n }\n\n public upload(instructionSet: InstructionSet)\n {\n const batcher = this._batches[instructionSet.uid];\n const geometry = this._geometries[batcher.uid];\n\n if (batcher.dirty)\n {\n batcher.dirty = false;\n geometry.buffers[0].update(batcher.attributeSize * 4);\n }\n }\n\n public execute(batch: Batch)\n {\n if (batch.action === 'startBatch')\n {\n const batcher = batch.batcher;\n const geometry = this._geometries[batcher.uid];\n\n this._adaptor.start(this, geometry);\n }\n\n this._adaptor.execute(this, batch);\n }\n\n public destroy()\n {\n this.state = null;\n this.renderer = null;\n\n this._adaptor.destroy();\n this._adaptor = null;\n\n for (const i in this._batches)\n {\n this._batches[i].destroy();\n }\n\n this._batches = null;\n\n for (const i in this._geometries)\n {\n this._geometries[i].destroy();\n }\n\n this._geometries = null;\n }\n}\n"],"names":[],"mappings":"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"}