UNPKG

pixi.js

Version:

PixiJS — The HTML5 Creation Engine =============

1 lines 8.09 kB
{"version":3,"file":"BatchableGraphics.mjs","sources":["../../../../src/scene/graphics/shared/BatchableGraphics.ts"],"sourcesContent":["import { multiplyHexColors } from '../../container/utils/multiplyHexColors';\n\nimport type { Batch, BatchableObject, Batcher } from '../../../rendering/batcher/shared/Batcher';\nimport type { IndexBufferArray } from '../../../rendering/renderers/shared/geometry/Geometry';\nimport type { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport type { Graphics } from './Graphics';\n\n/**\n * A batchable graphics object.\n * @ignore\n */\nexport class BatchableGraphics implements BatchableObject\n{\n public indexStart: number;\n public textureId: number;\n public texture: Texture;\n public location: number;\n public batcher: Batcher = null;\n public batch: Batch = null;\n public renderable: Graphics;\n public indexOffset: number;\n public indexSize: number;\n public vertexOffset: number;\n public vertexSize: number;\n public color: number;\n public alpha: number;\n public applyTransform = true;\n public roundPixels: 0 | 1 = 0;\n\n public geometryData: { vertices: number[]; uvs: number[]; indices: number[]; };\n\n get blendMode()\n {\n if (this.applyTransform)\n {\n return this.renderable.groupBlendMode;\n }\n\n return 'normal';\n }\n\n public packIndex(indexBuffer: IndexBufferArray, index: number, indicesOffset: number)\n {\n const indices = this.geometryData.indices;\n\n for (let i = 0; i < this.indexSize; i++)\n {\n indexBuffer[index++] = indices[i + this.indexOffset] + indicesOffset - this.vertexOffset;\n }\n }\n\n public packAttributes(\n float32View: Float32Array,\n uint32View: Uint32Array,\n index: number,\n textureId: number\n )\n {\n const geometry = this.geometryData;\n const graphics = this.renderable;\n\n const positions = geometry.vertices;\n const uvs = geometry.uvs;\n\n const offset = this.vertexOffset * 2;\n const vertSize = (this.vertexOffset + this.vertexSize) * 2;\n\n const rgb = this.color;\n const bgr = (rgb >> 16) | (rgb & 0xff00) | ((rgb & 0xff) << 16);\n\n if (this.applyTransform)\n {\n const argb = multiplyHexColors(bgr, graphics.groupColor)\n + ((this.alpha * graphics.groupAlpha * 255) << 24);\n\n const wt = graphics.groupTransform;\n const textureIdAndRound = (textureId << 16) | (this.roundPixels & 0xFFFF);\n\n const a = wt.a;\n const b = wt.b;\n const c = wt.c;\n const d = wt.d;\n const tx = wt.tx;\n const ty = wt.ty;\n\n for (let i = offset; i < vertSize; i += 2)\n {\n const x = positions[i];\n const y = positions[i + 1];\n\n float32View[index] = (a * x) + (c * y) + tx;\n float32View[index + 1] = (b * x) + (d * y) + ty;\n\n float32View[index + 2] = uvs[i];\n float32View[index + 3] = uvs[i + 1];\n\n uint32View[index + 4] = argb;\n uint32View[index + 5] = textureIdAndRound;\n\n index += 6;\n }\n }\n else\n {\n const argb = bgr + ((this.alpha * 255) << 24);\n\n for (let i = offset; i < vertSize; i += 2)\n {\n float32View[index] = positions[i];\n float32View[index + 1] = positions[i + 1];\n\n float32View[index + 2] = uvs[i];\n float32View[index + 3] = uvs[i + 1];\n\n uint32View[index + 4] = argb;\n uint32View[index + 5] = textureId << 16;\n\n index += 6;\n }\n }\n }\n\n // TODO rename to vertexSize\n get vertSize()\n {\n return this.vertexSize;\n }\n\n public copyTo(gpuBuffer: BatchableGraphics)\n {\n gpuBuffer.indexOffset = this.indexOffset;\n gpuBuffer.indexSize = this.indexSize;\n\n gpuBuffer.vertexOffset = this.vertexOffset;\n gpuBuffer.vertexSize = this.vertexSize;\n\n gpuBuffer.color = this.color;\n gpuBuffer.alpha = this.alpha;\n\n gpuBuffer.texture = this.texture;\n gpuBuffer.geometryData = this.geometryData;\n }\n\n public reset()\n {\n this.applyTransform = true;\n }\n}\n"],"names":[],"mappings":"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"}