shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$high_shader$compiler$compileHighShader = function(global, require, module, exports) {
  function compileInputsAndOutputs(template, bits) {
    const vertexFragments = bits.map(shaderBit => shaderBit.vertex).filter(v => !!v), fragmentFragments = bits.map(shaderBit => shaderBit.fragment).filter(v => !!v);
    bits = compileInputs.compileInputs(vertexFragments, template.vertex, !0);
    bits = compileOutputs.compileOutputs(vertexFragments, bits);
    template = compileInputs.compileInputs(fragmentFragments, template.fragment, !0);
    return {vertex:bits, fragment:template};
  }
  function generateCacheId(template, bits) {
    return bits.map(highFragment => {
      bitCacheMap.has(highFragment) || bitCacheMap.set(highFragment, CACHE_UID++);
      return bitCacheMap.get(highFragment);
    }).sort((a, b) => a - b).join("-") + template.vertex + template.fragment;
  }
  function compileBits(vertex, fragment, bits) {
    const vertexParts = compileHooks.compileHooks(vertex), fragmentParts = compileHooks.compileHooks(fragment);
    bits.forEach(shaderBit => {
      addBits.addBits(shaderBit.vertex, vertexParts, shaderBit.name);
      addBits.addBits(shaderBit.fragment, fragmentParts, shaderBit.name);
    });
    return {vertex:injectBits.injectBits(vertex, vertexParts), fragment:injectBits.injectBits(fragment, fragmentParts)};
  }
  var addBits = require("module$node_modules$pixi_DOT_js$lib$rendering$high_shader$compiler$utils$addBits"), compileHooks = require("module$node_modules$pixi_DOT_js$lib$rendering$high_shader$compiler$utils$compileHooks"), compileInputs = require("module$node_modules$pixi_DOT_js$lib$rendering$high_shader$compiler$utils$compileInputs"), compileOutputs = require("module$node_modules$pixi_DOT_js$lib$rendering$high_shader$compiler$utils$compileOutputs"), injectBits = require("module$node_modules$pixi_DOT_js$lib$rendering$high_shader$compiler$utils$injectBits");
  "use strict";
  const cacheMap = Object.create(null), bitCacheMap = new Map();
  let CACHE_UID = 0;
  exports.compileHighShader = function({template, bits}) {
    const cacheId = generateCacheId(template, bits);
    if (cacheMap[cacheId]) {
      return cacheMap[cacheId];
    }
    const {vertex, fragment} = compileInputsAndOutputs(template, bits);
    cacheMap[cacheId] = compileBits(vertex, fragment, bits);
    return cacheMap[cacheId];
  };
  exports.compileHighShaderGl = function({template, bits}) {
    const cacheId = generateCacheId(template, bits);
    if (cacheMap[cacheId]) {
      return cacheMap[cacheId];
    }
    cacheMap[cacheId] = compileBits(template.vertex, template.fragment, bits);
    return cacheMap[cacheId];
  };
};

//# sourceMappingURL=module$node_modules$pixi_DOT_js$lib$rendering$high_shader$compiler$compileHighShader.js.map
