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

92 lines
6.5 KiB
JavaScript

shadow$provide.module$node_modules$pixi_DOT_js$lib$scene$sprite_tiling$TilingSpritePipe = function(global, require, module, exports) {
global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions");
var getAdjustedBlendModeBlend = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$state$getAdjustedBlendModeBlend"), State = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$state$State"), types = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$types"), GCManagedHash = require("module$node_modules$pixi_DOT_js$lib$utils$data$GCManagedHash"), colorToUniform = require("module$node_modules$pixi_DOT_js$lib$scene$graphics$gpu$colorToUniform"),
BatchableMesh = require("module$node_modules$pixi_DOT_js$lib$scene$mesh$shared$BatchableMesh"), MeshGeometry = require("module$node_modules$pixi_DOT_js$lib$scene$mesh$shared$MeshGeometry"), TilingSpriteShader = require("module$node_modules$pixi_DOT_js$lib$scene$sprite_tiling$shader$TilingSpriteShader");
module = require("module$node_modules$pixi_DOT_js$lib$scene$sprite_tiling$utils$QuadGeometry");
var setPositions = require("module$node_modules$pixi_DOT_js$lib$scene$sprite_tiling$utils$setPositions"), setUvs = require("module$node_modules$pixi_DOT_js$lib$scene$sprite_tiling$utils$setUvs");
"use strict";
const sharedQuad = new module.QuadGeometry();
class TilingSpriteGpuData {
constructor() {
this.canBatch = !0;
this.geometry = new MeshGeometry.MeshGeometry({indices:sharedQuad.indices.slice(), positions:sharedQuad.positions.slice(), uvs:sharedQuad.uvs.slice()});
}
destroy() {
this.geometry.destroy();
this.shader?.destroy();
}
}
class TilingSpritePipe {
constructor(renderer) {
this._state = State.State.default2d;
this._renderer = renderer;
this._managedTilingSprites = new GCManagedHash.GCManagedHash({renderer, type:"renderable", name:"tilingSprite"});
}
validateRenderable(renderable) {
var tilingSpriteData = this._getTilingSpriteData(renderable);
const couldBatch = tilingSpriteData.canBatch;
this._updateCanBatch(renderable);
const canBatch = tilingSpriteData.canBatch;
return canBatch && canBatch === couldBatch ? ({batchableMesh:tilingSpriteData} = tilingSpriteData, !tilingSpriteData._batcher.checkAndUpdateTexture(tilingSpriteData, renderable.texture)) : couldBatch !== canBatch;
}
addRenderable(tilingSprite, instructionSet) {
const batcher = this._renderer.renderPipes.batch;
this._updateCanBatch(tilingSprite);
var tilingSpriteData = this._getTilingSpriteData(tilingSprite);
const {geometry, canBatch} = tilingSpriteData;
canBatch ? (tilingSpriteData.batchableMesh || (tilingSpriteData.batchableMesh = new BatchableMesh.BatchableMesh()), tilingSpriteData = tilingSpriteData.batchableMesh, tilingSprite.didViewUpdate && (this._updateBatchableMesh(tilingSprite), tilingSpriteData.geometry = geometry, tilingSpriteData.renderable = tilingSprite, tilingSpriteData.transform = tilingSprite.groupTransform, tilingSpriteData.setTexture(tilingSprite._texture)), tilingSpriteData.roundPixels = this._renderer._roundPixels | tilingSprite._roundPixels,
batcher.addToBatch(tilingSpriteData, instructionSet)) : (batcher.break(instructionSet), tilingSpriteData.shader || (tilingSpriteData.shader = new TilingSpriteShader.TilingSpriteShader()), this.updateRenderable(tilingSprite), instructionSet.add(tilingSprite));
}
execute(tilingSprite) {
const renderer = this._renderer, {shader} = this._getTilingSpriteData(tilingSprite);
shader.groups[0] = renderer.globalUniforms.bindGroup;
const localUniforms = shader.resources.localUniforms.uniforms;
localUniforms.uTransformMatrix = tilingSprite.groupTransform;
localUniforms.uRound = renderer._roundPixels | tilingSprite._roundPixels;
colorToUniform.color32BitToUniform(tilingSprite.groupColorAlpha, localUniforms.uColor, 0);
this._state.blendMode = getAdjustedBlendModeBlend.getAdjustedBlendModeBlend(tilingSprite.groupBlendMode, tilingSprite.texture._source);
renderer.encoder.draw({geometry:sharedQuad, shader, state:this._state});
}
updateRenderable(tilingSprite) {
var tilingSpriteData = this._getTilingSpriteData(tilingSprite);
const {canBatch} = tilingSpriteData;
canBatch ? ({batchableMesh:tilingSpriteData} = tilingSpriteData, tilingSprite.didViewUpdate && this._updateBatchableMesh(tilingSprite), tilingSpriteData._batcher.updateElement(tilingSpriteData)) : tilingSprite.didViewUpdate && ({shader:tilingSpriteData} = tilingSpriteData, tilingSpriteData.updateUniforms(tilingSprite.width, tilingSprite.height, tilingSprite._tileTransform.matrix, tilingSprite.anchor.x, tilingSprite.anchor.y, tilingSprite.texture));
}
_getTilingSpriteData(renderable) {
return renderable._gpuData[this._renderer.uid] || this._initTilingSpriteData(renderable);
}
_initTilingSpriteData(tilingSprite) {
const gpuData = new TilingSpriteGpuData();
gpuData.renderable = tilingSprite;
tilingSprite._gpuData[this._renderer.uid] = gpuData;
this._managedTilingSprites.add(tilingSprite);
return gpuData;
}
_updateBatchableMesh(tilingSprite) {
var renderableData = this._getTilingSpriteData(tilingSprite);
({geometry:renderableData} = renderableData);
const style = tilingSprite.texture.source.style;
"repeat" !== style.addressMode && (style.addressMode = "repeat", style.update());
setUvs.setUvs(tilingSprite, renderableData.uvs);
setPositions.setPositions(tilingSprite, renderableData.positions);
}
destroy() {
this._managedTilingSprites.destroy();
this._renderer = null;
}
_updateCanBatch(tilingSprite) {
const renderableData = this._getTilingSpriteData(tilingSprite);
tilingSprite = tilingSprite.texture;
let _nonPowOf2wrapping = !0;
this._renderer.type === types.RendererType.WEBGL && (_nonPowOf2wrapping = this._renderer.context.supports.nonPowOf2wrapping);
renderableData.canBatch = tilingSprite.textureMatrix.isSimple && (_nonPowOf2wrapping || tilingSprite.source.isPowerOfTwo);
return renderableData.canBatch;
}
}
TilingSpritePipe.extension = {type:[global.ExtensionType.WebGLPipes, global.ExtensionType.WebGPUPipes], name:"tilingSprite"};
exports.TilingSpriteGpuData = TilingSpriteGpuData;
exports.TilingSpritePipe = TilingSpritePipe;
};
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$scene$sprite_tiling$TilingSpritePipe.js.map