48 lines
2.3 KiB
JavaScript
48 lines
2.3 KiB
JavaScript
shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$GlUniformGroupSystem = function(global, require, module, exports) {
|
|
global = require("module$node_modules$pixi_DOT_js$lib$extensions$Extensions");
|
|
var generateUniformsSync = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$utils$generateUniformsSync");
|
|
"use strict";
|
|
class GlUniformGroupSystem {
|
|
constructor(renderer) {
|
|
this._uniformGroupSyncHash = {};
|
|
this._renderer = renderer;
|
|
this.gl = null;
|
|
this._cache = {};
|
|
}
|
|
contextChange(gl) {
|
|
this.gl = gl;
|
|
}
|
|
updateUniformGroup(group, program, syncData) {
|
|
const programData = this._renderer.shader._getProgramData(program);
|
|
group.isStatic && group._dirtyId === programData.uniformDirtyGroups[group.uid] || (programData.uniformDirtyGroups[group.uid] = group._dirtyId, this._getUniformSyncFunction(group, program)(programData.uniformData, group.uniforms, this._renderer, syncData));
|
|
}
|
|
_getUniformSyncFunction(group, program) {
|
|
return this._uniformGroupSyncHash[group._signature]?.[program._key] || this._createUniformSyncFunction(group, program);
|
|
}
|
|
_createUniformSyncFunction(group, program) {
|
|
const uniformGroupSyncHash = this._uniformGroupSyncHash[group._signature] || (this._uniformGroupSyncHash[group._signature] = {}), id = this._getSignature(group, program._uniformData, "u");
|
|
this._cache[id] || (this._cache[id] = this._generateUniformsSync(group, program._uniformData));
|
|
uniformGroupSyncHash[program._key] = this._cache[id];
|
|
return uniformGroupSyncHash[program._key];
|
|
}
|
|
_generateUniformsSync(group, uniformData) {
|
|
return generateUniformsSync.generateUniformsSync(group, uniformData);
|
|
}
|
|
_getSignature(group, uniformData, preFix) {
|
|
group = group.uniforms;
|
|
preFix = [`${preFix}-`];
|
|
for (const i in group) {
|
|
preFix.push(i), uniformData[i] && preFix.push(uniformData[i].type);
|
|
}
|
|
return preFix.join("-");
|
|
}
|
|
destroy() {
|
|
this._cache = this._renderer = null;
|
|
}
|
|
}
|
|
GlUniformGroupSystem.extension = {type:[global.ExtensionType.WebGLSystem], name:"uniformGroup"};
|
|
exports.GlUniformGroupSystem = GlUniformGroupSystem;
|
|
};
|
|
|
|
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$GlUniformGroupSystem.js.map
|