shadow$provide.module$node_modules$pixi_DOT_js$lib$rendering$high_shader$compiler$utils$compileOutputs = function(global, require, module, exports) {
  function extractOutputs(fragmentSource, out) {
    let match;
    const regex = /@out\s+([^;]+);/g;
    for (; null !== (match = regex.exec(fragmentSource));) {
      out.push(match[1]);
    }
  }
  exports.compileOutputs = function(fragments, template) {
    const results = [];
    extractOutputs(template, results);
    fragments.forEach(fragment => {
      fragment.header && extractOutputs(fragment.header, results);
    });
    let index = 0;
    fragments = results.sort().map(inValue => -1 < inValue.indexOf("builtin") ? inValue : `@location(${index++}) ${inValue}`).join(",\n");
    const mainStart = results.sort().map(inValue => `       var ${inValue.replace(/@.*?\s+/g, "")};`).join("\n"), mainEnd = `return VSOutput(
            ${results.sort().map(inValue => {
      inValue = /\b(\w+)\s*:/g.exec(inValue);
      return ` ${inValue ? inValue[1] : ""}`;
    }).join(",\n")});`;
    template = template.replace(/@out\s+[^;]+;\s*/g, "");
    template = template.replace("{{struct}}", `
${fragments}
`);
    template = template.replace("{{start}}", `
${mainStart}
`);
    return template = template.replace("{{return}}", `
${mainEnd}
`);
  };
};

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