Files
il/resources/public/js/cljs-runtime/module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$shader$UboSystem.js
2026-07-01 22:38:29 -06:00

62 lines
3.0 KiB
JavaScript

shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$shader$UboSystem = function(global, require, module, exports) {
var unsafeEvalSupported = require("module$node_modules$pixi_DOT_js$lib$utils$browser$unsafeEvalSupported"), Buffer = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$buffer$Buffer"), _const = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$buffer$const");
"use strict";
class UboSystem {
constructor(adaptor) {
this._syncFunctionHash = Object.create(null);
this._adaptor = adaptor;
this._systemCheck();
}
_systemCheck() {
if (!unsafeEvalSupported.unsafeEvalSupported()) {
throw Error("Current environment does not allow unsafe-eval, please use pixi.js/unsafe-eval module to enable support.");
}
}
ensureUniformGroup(uniformGroup) {
const uniformData = this.getUniformGroupData(uniformGroup);
uniformGroup.buffer || (uniformGroup.buffer = new Buffer.Buffer({data:new Float32Array(uniformData.layout.size / 4), usage:_const.BufferUsage.UNIFORM | _const.BufferUsage.COPY_DST}));
}
getUniformGroupData(uniformGroup) {
return this._syncFunctionHash[uniformGroup._signature] || this._initUniformGroup(uniformGroup);
}
_initUniformGroup(uniformGroup) {
const uniformGroupSignature = uniformGroup._signature;
var uniformData = this._syncFunctionHash[uniformGroupSignature];
if (!uniformData) {
uniformData = Object.keys(uniformGroup.uniformStructures).map(i => uniformGroup.uniformStructures[i]);
uniformData = this._adaptor.createUboElements(uniformData);
const syncFunction = this._generateUboSync(uniformData.uboElements);
uniformData = this._syncFunctionHash[uniformGroupSignature] = {layout:uniformData, syncFunction};
}
return this._syncFunctionHash[uniformGroupSignature];
}
_generateUboSync(uboElements) {
return this._adaptor.generateUboSync(uboElements);
}
syncUniformGroup(uniformGroup, data, offset) {
const uniformGroupData = this.getUniformGroupData(uniformGroup);
uniformGroup.buffer || (uniformGroup.buffer = new Buffer.Buffer({data:new Float32Array(uniformGroupData.layout.size / 4), usage:_const.BufferUsage.UNIFORM | _const.BufferUsage.COPY_DST}));
let dataInt32 = null;
data || (data = uniformGroup.buffer.data, dataInt32 = uniformGroup.buffer.dataInt32);
offset || (offset = 0);
uniformGroupData.syncFunction(uniformGroup.uniforms, data, dataInt32, offset);
return !0;
}
updateUniformGroup(uniformGroup) {
if (uniformGroup.isStatic && !uniformGroup._dirtyId) {
return !1;
}
uniformGroup._dirtyId = 0;
const synced = this.syncUniformGroup(uniformGroup);
uniformGroup.buffer.update();
return synced;
}
destroy() {
this._syncFunctionHash = null;
}
}
exports.UboSystem = UboSystem;
};
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$shader$UboSystem.js.map