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

48 lines
3.1 KiB
JavaScript

shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$gpu$shader$GpuProgram = function(global, require, module, exports) {
var createIdFromString = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$utils$createIdFromString"), extractAttributesFromGpuProgram = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gpu$shader$utils$extractAttributesFromGpuProgram"), extractStructAndGroups = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gpu$shader$utils$extractStructAndGroups"), generateGpuLayoutGroups = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gpu$shader$utils$generateGpuLayoutGroups"),
generateLayoutHash = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gpu$shader$utils$generateLayoutHash"), removeStructAndGroupDuplicates = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gpu$shader$utils$removeStructAndGroupDuplicates");
"use strict";
const programCache = Object.create(null);
class GpuProgram {
constructor(options) {
this._attributeLocationsKey = this._layoutKey = 0;
const {fragment, vertex, layout, gpuLayout, name} = options;
this.name = name;
this.fragment = fragment;
this.vertex = vertex;
if (fragment.source === vertex.source) {
this.structsAndGroups = extractStructAndGroups.extractStructAndGroups(fragment.source);
} else {
options = extractStructAndGroups.extractStructAndGroups(vertex.source);
const fragmentStructsAndGroups = extractStructAndGroups.extractStructAndGroups(fragment.source);
this.structsAndGroups = removeStructAndGroupDuplicates.removeStructAndGroupDuplicates(options, fragmentStructsAndGroups);
}
this.layout = layout ?? generateLayoutHash.generateLayoutHash(this.structsAndGroups);
this.gpuLayout = gpuLayout ?? generateGpuLayoutGroups.generateGpuLayoutGroups(this.structsAndGroups);
this.autoAssignGlobalUniforms = void 0 !== this.layout[0]?.globalUniforms;
this.autoAssignLocalUniforms = void 0 !== this.layout[1]?.localUniforms;
this._generateProgramKey();
}
_generateProgramKey() {
const {vertex, fragment} = this;
this._layoutKey = createIdFromString.createIdFromString(vertex.source + fragment.source + vertex.entryPoint + fragment.entryPoint, "program");
}
get attributeData() {
this._attributeData ?? (this._attributeData = extractAttributesFromGpuProgram.extractAttributesFromGpuProgram(this.vertex));
return this._attributeData;
}
destroy() {
this.vertex = this.fragment = this.structsAndGroups = this.layout = this.gpuLayout = null;
programCache[this._cacheKey] = null;
}
static from(options) {
const key = `${options.vertex.source}:${options.fragment.source}:${options.fragment.entryPoint}:${options.vertex.entryPoint}`;
programCache[key] || (programCache[key] = new GpuProgram(options), programCache[key]._cacheKey = key);
return programCache[key];
}
}
exports.GpuProgram = GpuProgram;
};
//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$gpu$shader$GpuProgram.js.map