shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$GlProgram = function(global, require, module, exports) {
  var createIdFromString = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$shared$utils$createIdFromString"), getMaxFragmentPrecision = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$getMaxFragmentPrecision");
  global = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$preprocessors$addProgramDefines");
  module = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$preprocessors$ensurePrecision");
  var insertVersion = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$preprocessors$insertVersion"), setProgramName = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$preprocessors$setProgramName");
  require = require("module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$program$preprocessors$stripVersion");
  "use strict";
  const processes = {stripVersion:require.stripVersion, ensurePrecision:module.ensurePrecision, addProgramDefines:global.addProgramDefines, setProgramName:setProgramName.setProgramName, insertVersion:insertVersion.insertVersion}, programCache = Object.create(null), node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$GlProgram$classdecl$var8 = class {
    constructor(options) {
      options = {...node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$GlProgram$classdecl$var8.defaultOptions, ...options};
      const isES300 = -1 !== options.fragment.indexOf("#version 300 es"), preprocessorOptions = {stripVersion:isES300, ensurePrecision:{requestedFragmentPrecision:options.preferredFragmentPrecision, requestedVertexPrecision:options.preferredVertexPrecision, maxSupportedVertexPrecision:"highp", maxSupportedFragmentPrecision:getMaxFragmentPrecision.getMaxFragmentPrecision()}, setProgramName:{name:options.name}, addProgramDefines:isES300, insertVersion:isES300};
      let fragment = options.fragment, vertex = options.vertex;
      Object.keys(processes).forEach(processKey => {
        const processOptions = preprocessorOptions[processKey];
        fragment = processes[processKey](fragment, processOptions, !0);
        vertex = processes[processKey](vertex, processOptions, !1);
      });
      this.fragment = fragment;
      this.vertex = vertex;
      this.transformFeedbackVaryings = options.transformFeedbackVaryings;
      this._key = createIdFromString.createIdFromString(`${this.vertex}:${this.fragment}`, "gl-program");
    }
    destroy() {
      this.transformFeedbackVaryings = this._uniformBlockData = this._uniformData = this._attributeData = this.vertex = this.fragment = null;
      programCache[this._cacheKey] = null;
    }
    static from(options) {
      const key = `${options.vertex}:${options.fragment}`;
      programCache[key] || (programCache[key] = new node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$GlProgram$classdecl$var8(options), programCache[key]._cacheKey = key);
      return programCache[key];
    }
  };
  require = node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$GlProgram$classdecl$var8;
  require.defaultOptions = {preferredVertexPrecision:"highp", preferredFragmentPrecision:"mediump"};
  exports.GlProgram = require;
};

//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$renderers$gl$shader$GlProgram.js.map
