UNPKG

pixi.js

Version:

<p align="center"> <a href="https://pixijs.com" target="_blank" rel="noopener noreferrer"> <img height="150" src="https://files.pixijs.download/branding/pixijs-logo-transparent-dark.svg?v=1" alt="PixiJS logo"> </a> </p> <br/> <p align="center">

1 lines 4.01 kB
{"version":3,"file":"compileOutputs.mjs","sources":["../../../../../src/rendering/high-shader/compiler/utils/compileOutputs.ts"],"sourcesContent":["function extractOutputs(fragmentSource: string, out: string[])\n{\n let match;\n const regex = /@out\\s+([^;]+);/g;\n\n while ((match = regex.exec(fragmentSource)) !== null)\n {\n out.push(match[1]);\n }\n}\n\nfunction extractVariableName(value: string)\n{\n const regex = /\\b(\\w+)\\s*:/g;\n\n const match = regex.exec(value);\n\n return match ? match[1] : '';\n}\n\nfunction stripVariable(value: string)\n{\n const regex = /@.*?\\s+/g;\n\n return value.replace(regex, '');\n}\n\n/**\n * @param fragments\n * @param template\n * @internal\n */\nexport function compileOutputs(fragments: any[], template: string)\n{\n // get all the inputs from the fragments..\n const results: string[] = [];\n\n extractOutputs(template, results);\n\n fragments.forEach((fragment) =>\n {\n if (fragment.header)\n {\n extractOutputs(fragment.header, results);\n }\n });\n\n let index = 0;\n\n // generate the output struct\n const mainStruct = results\n .sort()\n .map((inValue) =>\n {\n if (inValue.indexOf('builtin') > -1)\n {\n return inValue;\n }\n\n return `@location(${index++}) ${inValue}`;\n })\n .join(',\\n');\n\n // generate the variables we will set:\n const mainStart = results\n .sort()\n .map((inValue) => ` var ${stripVariable(inValue)};`)\n .join('\\n');\n\n // generate the return object\n const mainEnd = `return VSOutput(\n ${results\n .sort()\n .map((inValue) => ` ${extractVariableName(inValue)}`)\n .join(',\\n')});`;\n\n // Remove lines from original string\n let compiledCode = template.replace(/@out\\s+[^;]+;\\s*/g, '');\n\n compiledCode = compiledCode.replace('{{struct}}', `\\n${mainStruct}\\n`);\n compiledCode = compiledCode.replace('{{start}}', `\\n${mainStart}\\n`);\n compiledCode = compiledCode.replace('{{return}}', `\\n${mainEnd}\\n`);\n\n return compiledCode;\n}\n"],"names":[],"mappings":";AAAA,SAAS,cAAA,CAAe,gBAAwB,GAAA,EAChD;AACI,EAAA,IAAI,KAAA;AACJ,EAAA,MAAM,KAAA,GAAQ,kBAAA;AAEd,EAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,cAAc,OAAO,IAAA,EAChD;AACI,IAAA,GAAA,CAAI,IAAA,CAAK,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,EACrB;AACJ;AAEA,SAAS,oBAAoB,KAAA,EAC7B;AACI,EAAA,MAAM,KAAA,GAAQ,cAAA;AAEd,EAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,KAAK,CAAA;AAE9B,EAAA,OAAO,KAAA,GAAQ,KAAA,CAAM,CAAC,CAAA,GAAI,EAAA;AAC9B;AAEA,SAAS,cAAc,KAAA,EACvB;AACI,EAAA,MAAM,KAAA,GAAQ,UAAA;AAEd,EAAA,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAClC;AAOO,SAAS,cAAA,CAAe,WAAkB,QAAA,EACjD;AAEI,EAAA,MAAM,UAAoB,EAAC;AAE3B,EAAA,cAAA,CAAe,UAAU,OAAO,CAAA;AAEhC,EAAA,SAAA,CAAU,OAAA,CAAQ,CAAC,QAAA,KACnB;AACI,IAAA,IAAI,SAAS,MAAA,EACb;AACI,MAAA,cAAA,CAAe,QAAA,CAAS,QAAQ,OAAO,CAAA;AAAA,IAC3C;AAAA,EACJ,CAAC,CAAA;AAED,EAAA,IAAI,KAAA,GAAQ,CAAA;AAGZ,EAAA,MAAM,aAAa,OAAA,CACd,IAAA,EAAK,CACL,GAAA,CAAI,CAAC,OAAA,KACN;AACI,IAAA,IAAI,OAAA,CAAQ,OAAA,CAAQ,SAAS,CAAA,GAAI,CAAA,CAAA,EACjC;AACI,MAAA,OAAO,OAAA;AAAA,IACX;AAEA,IAAA,OAAO,CAAA,UAAA,EAAa,KAAA,EAAO,CAAA,EAAA,EAAK,OAAO,CAAA,CAAA;AAAA,EAC3C,CAAC,CAAA,CACA,IAAA,CAAK,KAAK,CAAA;AAGf,EAAA,MAAM,SAAA,GAAY,OAAA,CACb,IAAA,EAAK,CACL,IAAI,CAAC,OAAA,KAAY,CAAA,WAAA,EAAc,aAAA,CAAc,OAAO,CAAC,CAAA,CAAA,CAAG,CAAA,CACxD,KAAK,IAAI,CAAA;AAGd,EAAA,MAAM,OAAA,GAAU,CAAA;AAAA,YAAA,EACN,OAAA,CACG,IAAA,EAAK,CACL,GAAA,CAAI,CAAC,OAAA,KAAY,CAAA,CAAA,EAAI,mBAAA,CAAoB,OAAO,CAAC,CAAA,CAAE,CAAA,CACnD,IAAA,CAAK,KAAK,CAAC,CAAA,EAAA,CAAA;AAGxB,EAAA,IAAI,YAAA,GAAe,QAAA,CAAS,OAAA,CAAQ,mBAAA,EAAqB,EAAE,CAAA;AAE3D,EAAA,YAAA,GAAe,YAAA,CAAa,QAAQ,YAAA,EAAc;AAAA,EAAK,UAAU;AAAA,CAAI,CAAA;AACrE,EAAA,YAAA,GAAe,YAAA,CAAa,QAAQ,WAAA,EAAa;AAAA,EAAK,SAAS;AAAA,CAAI,CAAA;AACnE,EAAA,YAAA,GAAe,YAAA,CAAa,QAAQ,YAAA,EAAc;AAAA,EAAK,OAAO;AAAA,CAAI,CAAA;AAElE,EAAA,OAAO,YAAA;AACX;;;;"}