59 lines
3.7 KiB
JavaScript
59 lines
3.7 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$scene$container$RenderGroupPipe = function(global, require, module, exports) {
|
|
global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions");
|
|
var Matrix = require("module$node_modules$pixi_DOT_js$lib$maths$matrix$Matrix"), PoolGroup = require("module$node_modules$pixi_DOT_js$lib$utils$pool$PoolGroup"), BatchableSprite = require("module$node_modules$pixi_DOT_js$lib$scene$sprite$BatchableSprite"), executeInstructions = require("module$node_modules$pixi_DOT_js$lib$scene$container$utils$executeInstructions");
|
|
"use strict";
|
|
class RenderGroupPipe {
|
|
constructor(renderer) {
|
|
this._renderer = renderer;
|
|
}
|
|
addRenderGroup(renderGroup, instructionSet) {
|
|
renderGroup.isCachedAsTexture ? this._addRenderableCacheAsTexture(renderGroup, instructionSet) : this._addRenderableDirect(renderGroup, instructionSet);
|
|
}
|
|
execute(renderGroup) {
|
|
renderGroup.isRenderable && (renderGroup.isCachedAsTexture ? this._executeCacheAsTexture(renderGroup) : this._executeDirect(renderGroup));
|
|
}
|
|
destroy() {
|
|
this._renderer = null;
|
|
}
|
|
_addRenderableDirect(renderGroup, instructionSet) {
|
|
this._renderer.renderPipes.batch.break(instructionSet);
|
|
renderGroup._batchableRenderGroup && (PoolGroup.BigPool.return(renderGroup._batchableRenderGroup), renderGroup._batchableRenderGroup = null);
|
|
instructionSet.add(renderGroup);
|
|
}
|
|
_addRenderableCacheAsTexture(renderGroup, instructionSet) {
|
|
const batchableRenderGroup = renderGroup._batchableRenderGroup ?? (renderGroup._batchableRenderGroup = PoolGroup.BigPool.get(BatchableSprite.BatchableSprite));
|
|
batchableRenderGroup.renderable = renderGroup.root;
|
|
batchableRenderGroup.transform = renderGroup.root.relativeGroupTransform;
|
|
batchableRenderGroup.texture = renderGroup.texture;
|
|
batchableRenderGroup.bounds = renderGroup._textureBounds;
|
|
instructionSet.add(renderGroup);
|
|
this._renderer.renderPipes.blendMode.pushBlendMode(renderGroup, renderGroup.root.groupBlendMode, instructionSet);
|
|
this._renderer.renderPipes.batch.addToBatch(batchableRenderGroup, instructionSet);
|
|
this._renderer.renderPipes.blendMode.popBlendMode(instructionSet);
|
|
}
|
|
_executeCacheAsTexture(renderGroup) {
|
|
if (renderGroup.textureNeedsUpdate) {
|
|
renderGroup.textureNeedsUpdate = !1;
|
|
const worldTransformMatrix = (new Matrix.Matrix()).translate(-renderGroup._textureBounds.x, -renderGroup._textureBounds.y);
|
|
this._renderer.renderTarget.push(renderGroup.texture, !0, null, renderGroup.texture.frame);
|
|
this._renderer.globalUniforms.push({worldTransformMatrix, worldColor:4294967295, offset:{x:0, y:0}});
|
|
executeInstructions.executeInstructions(renderGroup, this._renderer.renderPipes);
|
|
this._renderer.renderTarget.finishRenderPass();
|
|
this._renderer.renderTarget.pop();
|
|
this._renderer.globalUniforms.pop();
|
|
}
|
|
renderGroup._batchableRenderGroup._batcher.updateElement(renderGroup._batchableRenderGroup);
|
|
renderGroup._batchableRenderGroup._batcher.geometry.buffers[0].update();
|
|
}
|
|
_executeDirect(renderGroup) {
|
|
this._renderer.globalUniforms.push({worldTransformMatrix:renderGroup.inverseParentTextureTransform, worldColor:renderGroup.worldColorAlpha});
|
|
executeInstructions.executeInstructions(renderGroup, this._renderer.renderPipes);
|
|
this._renderer.globalUniforms.pop();
|
|
}
|
|
}
|
|
RenderGroupPipe.extension = {type:[global.ExtensionType.WebGLPipes, global.ExtensionType.WebGPUPipes, global.ExtensionType.CanvasPipes], name:"renderGroup"};
|
|
exports.RenderGroupPipe = RenderGroupPipe;
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$scene$container$RenderGroupPipe.js.map
|