Files
il/resources/public/js/cljs-runtime/module$node_modules$pixi_DOT_js$lib$scene$container$RenderGroupSystem.js
2026-07-01 22:38:29 -06:00

108 lines
6.5 KiB
JavaScript

shadow$provide.module$node_modules$pixi_DOT_js$lib$scene$container$RenderGroupSystem = function(global, require, module, exports) {
global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions");
module = require("module$node_modules$pixi_DOT_js$lib$maths$matrix$Matrix");
var TexturePool = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$TexturePool"), TextureStyle = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$texture$TextureStyle"), Bounds = require("module$node_modules$pixi_DOT_js$lib$scene$container$bounds$Bounds"), clearList = require("module$node_modules$pixi_DOT_js$lib$scene$container$utils$clearList"), executeInstructions = require("module$node_modules$pixi_DOT_js$lib$scene$container$utils$executeInstructions"),
updateRenderGroupTransforms = require("module$node_modules$pixi_DOT_js$lib$scene$container$utils$updateRenderGroupTransforms"), validateRenderables = require("module$node_modules$pixi_DOT_js$lib$scene$container$utils$validateRenderables");
"use strict";
const tempMatrix = new module.Matrix();
class RenderGroupSystem {
constructor(renderer) {
this._renderer = renderer;
}
render({container, transform}) {
const parent = container.parent, renderGroupParent = container.renderGroup.renderGroupParent;
container.parent = null;
container.renderGroup.renderGroupParent = null;
const renderer = this._renderer;
transform && (tempMatrix.copyFrom(container.renderGroup.localTransform), container.renderGroup.localTransform.copyFrom(transform));
const renderPipes = renderer.renderPipes;
this._updateCachedRenderGroups(container.renderGroup, null);
this._updateRenderGroups(container.renderGroup);
renderer.globalUniforms.start({worldTransformMatrix:transform ? container.renderGroup.localTransform : container.renderGroup.worldTransform, worldColor:container.renderGroup.worldColorAlpha});
executeInstructions.executeInstructions(container.renderGroup, renderPipes);
renderPipes.uniformBatch && renderPipes.uniformBatch.renderEnd();
transform && container.renderGroup.localTransform.copyFrom(tempMatrix);
container.parent = parent;
container.renderGroup.renderGroupParent = renderGroupParent;
}
destroy() {
this._renderer = null;
}
_updateCachedRenderGroups(renderGroup, closestCacheAsTexture) {
renderGroup._parentCacheAsTextureRenderGroup = closestCacheAsTexture;
if (renderGroup.isCachedAsTexture) {
if (!renderGroup.textureNeedsUpdate) {
return;
}
closestCacheAsTexture = renderGroup;
}
for (var i = renderGroup.renderGroupChildren.length - 1; 0 <= i; i--) {
this._updateCachedRenderGroups(renderGroup.renderGroupChildren[i], closestCacheAsTexture);
}
renderGroup.invalidateMatrices();
if (renderGroup.isCachedAsTexture) {
if (renderGroup.textureNeedsUpdate) {
closestCacheAsTexture = renderGroup.root.getLocalBounds();
var renderer = this._renderer;
i = renderGroup.textureOptions.resolution || renderer.view.resolution;
const antialias = renderGroup.textureOptions.antialias ?? renderer.view.antialias;
renderer = renderGroup.textureOptions.scaleMode ?? "linear";
const lastTexture = renderGroup.texture;
closestCacheAsTexture.ceil();
renderGroup.texture && TexturePool.TexturePool.returnTexture(renderGroup.texture, !0);
i = TexturePool.TexturePool.getOptimalTexture(closestCacheAsTexture.width, closestCacheAsTexture.height, i, antialias);
i._source.style = new TextureStyle.TextureStyle({scaleMode:renderer});
renderGroup.texture = i;
renderGroup._textureBounds || (renderGroup._textureBounds = new Bounds.Bounds());
renderGroup._textureBounds.copyFrom(closestCacheAsTexture);
lastTexture !== renderGroup.texture && renderGroup.renderGroupParent && (renderGroup.renderGroupParent.structureDidChange = !0);
}
} else {
renderGroup.texture && (TexturePool.TexturePool.returnTexture(renderGroup.texture, !0), renderGroup.texture = null);
}
}
_updateRenderGroups(renderGroup) {
var renderer = this._renderer;
const renderPipes = renderer.renderPipes;
renderGroup.runOnRender(renderer);
renderGroup.instructionSet.renderPipes = renderPipes;
renderGroup.structureDidChange ? clearList.clearList(renderGroup.childrenRenderablesToUpdate.list, 0) : validateRenderables.validateRenderables(renderGroup, renderPipes);
updateRenderGroupTransforms.updateRenderGroupTransforms(renderGroup);
renderGroup.structureDidChange ? (renderGroup.structureDidChange = !1, this._buildInstructions(renderGroup, renderer)) : this._updateRenderables(renderGroup);
renderGroup.childrenRenderablesToUpdate.index = 0;
renderer.renderPipes.batch.upload(renderGroup.instructionSet);
if (!renderGroup.isCachedAsTexture || renderGroup.textureNeedsUpdate) {
for (renderer = 0; renderer < renderGroup.renderGroupChildren.length; renderer++) {
this._updateRenderGroups(renderGroup.renderGroupChildren[renderer]);
}
}
}
_updateRenderables(renderGroup) {
const {list, index} = renderGroup.childrenRenderablesToUpdate;
for (let i = 0; i < index; i++) {
const container = list[i];
container.didViewUpdate && renderGroup.updateRenderable(container);
}
clearList.clearList(list, index);
}
_buildInstructions(renderGroup, rendererOrPipes) {
const root = renderGroup.root;
renderGroup = renderGroup.instructionSet;
renderGroup.reset();
rendererOrPipes = rendererOrPipes.renderPipes ? rendererOrPipes : rendererOrPipes.batch.renderer;
const renderPipes = rendererOrPipes.renderPipes;
renderPipes.batch.buildStart(renderGroup);
renderPipes.blendMode.buildStart();
renderPipes.colorMask.buildStart();
root.sortableChildren && root.sortChildren();
root.collectRenderablesWithEffects(renderGroup, rendererOrPipes, null);
renderPipes.batch.buildEnd(renderGroup);
renderPipes.blendMode.buildEnd(renderGroup);
}
}
RenderGroupSystem.extension = {type:[global.ExtensionType.WebGLSystem, global.ExtensionType.WebGPUSystem, global.ExtensionType.CanvasSystem], name:"renderGroup"};
exports.RenderGroupSystem = RenderGroupSystem;
};
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$scene$container$RenderGroupSystem.js.map