UNPKG

pixi.js

Version:

<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">

1 lines 7.56 kB
{"version":3,"file":"RenderGroupPipe.mjs","sources":["../../../src/scene/container/RenderGroupPipe.ts"],"sourcesContent":["import { ExtensionType } from '../../extensions/Extensions';\nimport { Matrix } from '../../maths/matrix/Matrix';\nimport { type Renderer } from '../../rendering/renderers/types';\nimport { BigPool } from '../../utils/pool/PoolGroup';\nimport { BatchableSprite } from '../sprite/BatchableSprite';\nimport { executeInstructions } from './utils/executeInstructions';\n\nimport type { InstructionSet } from '../../rendering/renderers/shared/instructions/InstructionSet';\nimport type { InstructionPipe } from '../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { RenderGroup } from './RenderGroup';\n\n/**\n * The RenderGroupPipe is a render pipe for rendering RenderGroups.\n * @internal\n */\nexport class RenderGroupPipe implements InstructionPipe<RenderGroup>\n{\n public static extension = {\n type: [\n ExtensionType.WebGLPipes,\n ExtensionType.WebGPUPipes,\n ExtensionType.CanvasPipes,\n ],\n name: 'renderGroup',\n } as const;\n\n private _renderer: Renderer;\n\n constructor(renderer: Renderer)\n {\n this._renderer = renderer;\n }\n\n public addRenderGroup(renderGroup: RenderGroup, instructionSet: InstructionSet): void\n {\n if (renderGroup.isCachedAsTexture)\n {\n this._addRenderableCacheAsTexture(renderGroup, instructionSet);\n }\n else\n {\n this._addRenderableDirect(renderGroup, instructionSet);\n }\n }\n\n public execute(renderGroup: RenderGroup)\n {\n if (!renderGroup.isRenderable) return;\n\n if (renderGroup.isCachedAsTexture)\n {\n this._executeCacheAsTexture(renderGroup);\n }\n else\n {\n this._executeDirect(renderGroup);\n }\n }\n\n public destroy(): void\n {\n this._renderer = null;\n }\n\n private _addRenderableDirect(renderGroup: RenderGroup, instructionSet: InstructionSet): void\n {\n this._renderer.renderPipes.batch.break(instructionSet);\n\n if (renderGroup._batchableRenderGroup)\n {\n BigPool.return(renderGroup._batchableRenderGroup);\n renderGroup._batchableRenderGroup = null;\n }\n\n instructionSet.add(renderGroup);\n }\n\n private _addRenderableCacheAsTexture(renderGroup: RenderGroup, instructionSet: InstructionSet): void\n {\n const batchableRenderGroup = renderGroup._batchableRenderGroup ??= BigPool.get(BatchableSprite);\n\n batchableRenderGroup.renderable = renderGroup.root;\n batchableRenderGroup.transform = renderGroup.root.relativeGroupTransform;\n batchableRenderGroup.texture = renderGroup.texture;\n batchableRenderGroup.bounds = renderGroup._textureBounds;\n\n instructionSet.add(renderGroup);\n\n this._renderer.renderPipes.blendMode.pushBlendMode(renderGroup, renderGroup.root.groupBlendMode, instructionSet);\n this._renderer.renderPipes.batch.addToBatch(batchableRenderGroup, instructionSet);\n this._renderer.renderPipes.blendMode.popBlendMode(instructionSet);\n }\n\n private _executeCacheAsTexture(renderGroup: RenderGroup): void\n {\n if (renderGroup.textureNeedsUpdate)\n {\n renderGroup.textureNeedsUpdate = false;\n\n const worldTransformMatrix = new Matrix().translate(\n -renderGroup._textureBounds.x,\n -renderGroup._textureBounds.y\n );\n\n this._renderer.renderTarget.push(renderGroup.texture, true, null, renderGroup.texture.frame);\n\n this._renderer.globalUniforms.push({\n worldTransformMatrix,\n worldColor: 0xFFFFFFFF,\n offset: { x: 0, y: 0 },\n });\n\n executeInstructions(renderGroup, this._renderer.renderPipes);\n\n this._renderer.renderTarget.finishRenderPass();\n\n this._renderer.renderTarget.pop();\n this._renderer.globalUniforms.pop();\n }\n\n renderGroup._batchableRenderGroup._batcher.updateElement(renderGroup._batchableRenderGroup);\n renderGroup._batchableRenderGroup._batcher.geometry.buffers[0].update();\n }\n\n private _executeDirect(renderGroup: RenderGroup): void\n {\n this._renderer.globalUniforms.push({\n worldTransformMatrix: renderGroup.inverseParentTextureTransform,\n worldColor: renderGroup.worldColorAlpha,\n });\n\n executeInstructions(renderGroup, this._renderer.renderPipes);\n\n this._renderer.globalUniforms.pop();\n }\n}\n"],"names":[],"mappings":"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"}