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.62 kB
Source Map (JSON)
{"version":3,"file":"ParticleContainerPipe.mjs","sources":["../../../../src/scene/particle-container/shared/ParticleContainerPipe.ts"],"sourcesContent":["import { Matrix } from '../../../maths/matrix/Matrix';\nimport { UniformGroup } from '../../../rendering/renderers/shared/shader/UniformGroup';\nimport { getAdjustedBlendModeBlend } from '../../../rendering/renderers/shared/state/getAdjustedBlendModeBlend';\nimport { State } from '../../../rendering/renderers/shared/state/State';\nimport { color32BitToUniform } from '../../graphics/gpu/colorToUniform';\nimport { ParticleBuffer } from './ParticleBuffer';\nimport { ParticleShader } from './shader/ParticleShader';\n\nimport type { InstructionSet } from '../../../rendering/renderers/shared/instructions/InstructionSet';\nimport type { RenderPipe } from '../../../rendering/renderers/shared/instructions/RenderPipe';\nimport type { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport type { Renderer } from '../../../rendering/renderers/types';\nimport type { ParticleContainer } from './ParticleContainer';\n\n/** @internal */\nexport interface ParticleContainerAdaptor\n{\n execute(particleContainerPop: ParticleContainerPipe, container: ParticleContainer): void;\n}\n\n/**\n * Renderer for Particles that is designer for speed over feature set.\n * @category scene\n * @internal\n */\nexport class ParticleContainerPipe implements RenderPipe<ParticleContainer>\n{\n /** The default shader that is used if a sprite doesn't have a more specific one. */\n public defaultShader: Shader;\n\n /** @internal */\n public adaptor: ParticleContainerAdaptor;\n /** @internal */\n public readonly state = State.for2d();\n /** @internal */\n public readonly renderer: Renderer;\n\n /** Local uniforms that are used for rendering particles. */\n public readonly localUniforms = new UniformGroup({\n uTranslationMatrix: { value: new Matrix(), type: 'mat3x3<f32>' },\n uColor: { value: new Float32Array(4), type: 'vec4<f32>' },\n uRound: { value: 1, type: 'f32' },\n uResolution: { value: [0, 0], type: 'vec2<f32>' },\n });\n\n /**\n * @param renderer - The renderer this sprite batch works for.\n * @param adaptor\n */\n constructor(renderer: Renderer, adaptor: ParticleContainerAdaptor)\n {\n this.renderer = renderer;\n\n this.adaptor = adaptor;\n\n this.defaultShader = new ParticleShader();\n\n this.state = State.for2d();\n }\n\n public validateRenderable(_renderable: ParticleContainer): boolean\n {\n // always fine :D\n return false;\n }\n\n public addRenderable(renderable: ParticleContainer, instructionSet: InstructionSet)\n {\n this.renderer.renderPipes.batch.break(instructionSet);\n instructionSet.add(renderable);\n }\n\n public getBuffers(renderable: ParticleContainer): ParticleBuffer\n {\n return renderable._gpuData[this.renderer.uid] || this._initBuffer(renderable);\n }\n\n private _initBuffer(renderable: ParticleContainer): ParticleBuffer\n {\n renderable._gpuData[this.renderer.uid] = new ParticleBuffer({\n size: renderable.particleChildren.length,\n properties: renderable._properties,\n });\n\n return renderable._gpuData[this.renderer.uid];\n }\n\n public updateRenderable(_renderable: ParticleContainer)\n {\n // nothing to be done here!\n\n }\n\n public execute(container: ParticleContainer): void\n {\n const children = container.particleChildren;\n\n if (children.length === 0)\n {\n return;\n }\n\n const renderer = this.renderer;\n const buffer = this.getBuffers(container);\n\n container.texture ||= children[0].texture;\n\n const state = this.state;\n\n buffer.update(children, container._childrenDirty);\n container._childrenDirty = false;\n\n state.blendMode = getAdjustedBlendModeBlend(container.blendMode, container.texture._source);\n\n const uniforms = this.localUniforms.uniforms;\n\n const transformationMatrix = uniforms.uTranslationMatrix;\n\n container.worldTransform.copyTo(transformationMatrix);\n\n transformationMatrix.prepend(renderer.globalUniforms.globalUniformData.projectionMatrix);\n\n uniforms.uResolution = renderer.globalUniforms.globalUniformData.resolution;\n uniforms.uRound = renderer._roundPixels | container._roundPixels;\n\n color32BitToUniform(\n container.groupColorAlpha,\n uniforms.uColor,\n 0\n );\n\n this.adaptor.execute(this, container);\n }\n\n /** Destroys the ParticleRenderer. */\n public destroy(): void\n {\n if (this.defaultShader)\n {\n this.defaultShader.destroy();\n this.defaultShader = null;\n }\n }\n}\n"],"names":[],"mappings":"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"}