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.23 kB
{"version":3,"file":"createUboSyncFunction.mjs","sources":["../../../../../../src/rendering/renderers/shared/shader/utils/createUboSyncFunction.ts"],"sourcesContent":["import { uniformParsers } from './uniformParsers';\n\nimport type { UboElement, UNIFORM_TYPES_SINGLE, UniformsSyncCallback } from '../types';\n\n/**\n * @param uboElements\n * @param parserCode\n * @param arrayGenerationFunction\n * @param singleSettersMap\n * @internal\n */\nexport function createUboSyncFunction(\n uboElements: UboElement[],\n parserCode: 'uboWgsl' | 'uboStd40',\n arrayGenerationFunction: (uboElement: UboElement, offsetToAdd: number) => string,\n singleSettersMap: Record<UNIFORM_TYPES_SINGLE, string>,\n): UniformsSyncCallback\n{\n const funcFragments = [`\n var v = null;\n var v2 = null;\n var t = 0;\n var index = 0;\n var name = null;\n var arrayOffset = null;\n `];\n\n let prev = 0;\n\n for (let i = 0; i < uboElements.length; i++)\n {\n const uboElement = uboElements[i];\n\n const name = uboElement.data.name;\n\n let parsed = false;\n let offset = 0;\n\n for (let j = 0; j < uniformParsers.length; j++)\n {\n const uniformParser = uniformParsers[j];\n\n if (uniformParser.test(uboElement.data))\n {\n offset = uboElement.offset / 4;\n\n funcFragments.push(\n `name = \"${name}\";`,\n `offset += ${offset - prev};`,\n uniformParsers[j][parserCode] || uniformParsers[j].ubo);\n parsed = true;\n\n break;\n }\n }\n\n if (!parsed)\n {\n if (uboElement.data.size > 1)\n {\n offset = uboElement.offset / 4;\n\n funcFragments.push(arrayGenerationFunction(uboElement, offset - prev));\n }\n else\n {\n const template = singleSettersMap[uboElement.data.type as UNIFORM_TYPES_SINGLE];\n\n offset = uboElement.offset / 4;\n\n funcFragments.push(/* wgsl */`\n v = uv.${name};\n offset += ${offset - prev};\n ${template};\n `);\n }\n }\n\n prev = offset;\n }\n\n const fragmentSrc = funcFragments.join('\\n');\n\n // eslint-disable-next-line no-new-func\n return new Function(\n 'uv',\n 'data',\n 'dataInt32',\n 'offset',\n fragmentSrc,\n ) as UniformsSyncCallback;\n}\n"],"names":[],"mappings":";;;AAWO,SAAS,qBAAA,CACZ,WAAA,EACA,UAAA,EACA,uBAAA,EACA,gBAAA,EAEJ;AACI,EAAA,MAAM,gBAAgB,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAOtB,CAAA;AAED,EAAA,IAAI,IAAA,GAAO,CAAA;AAEX,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,WAAA,CAAY,QAAQ,CAAA,EAAA,EACxC;AACI,IAAA,MAAM,UAAA,GAAa,YAAY,CAAC,CAAA;AAEhC,IAAA,MAAM,IAAA,GAAO,WAAW,IAAA,CAAK,IAAA;AAE7B,IAAA,IAAI,MAAA,GAAS,KAAA;AACb,IAAA,IAAI,MAAA,GAAS,CAAA;AAEb,IAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,cAAA,CAAe,QAAQ,CAAA,EAAA,EAC3C;AACI,MAAA,MAAM,aAAA,GAAgB,eAAe,CAAC,CAAA;AAEtC,MAAA,IAAI,aAAA,CAAc,IAAA,CAAK,UAAA,CAAW,IAAI,CAAA,EACtC;AACI,QAAA,MAAA,GAAS,WAAW,MAAA,GAAS,CAAA;AAE7B,QAAA,aAAA,CAAc,IAAA;AAAA,UACV,WAAW,IAAI,CAAA,EAAA,CAAA;AAAA,UACf,CAAA,UAAA,EAAa,SAAS,IAAI,CAAA,CAAA,CAAA;AAAA,UAC1B,eAAe,CAAC,CAAA,CAAE,UAAU,CAAA,IAAK,cAAA,CAAe,CAAC,CAAA,CAAE;AAAA,SAAG;AAC1D,QAAA,MAAA,GAAS,IAAA;AAET,QAAA;AAAA,MACJ;AAAA,IACJ;AAEA,IAAA,IAAI,CAAC,MAAA,EACL;AACI,MAAA,IAAI,UAAA,CAAW,IAAA,CAAK,IAAA,GAAO,CAAA,EAC3B;AACI,QAAA,MAAA,GAAS,WAAW,MAAA,GAAS,CAAA;AAE7B,QAAA,aAAA,CAAc,IAAA,CAAK,uBAAA,CAAwB,UAAA,EAAY,MAAA,GAAS,IAAI,CAAC,CAAA;AAAA,MACzE,CAAA,MAEA;AACI,QAAA,MAAM,QAAA,GAAW,gBAAA,CAAiB,UAAA,CAAW,IAAA,CAAK,IAA4B,CAAA;AAE9E,QAAA,MAAA,GAAS,WAAW,MAAA,GAAS,CAAA;AAE7B,QAAA,aAAA,CAAc,IAAA;AAAA;AAAA,UAAe;AAAA,2BAAA,EAChB,IAAI,CAAA;AAAA,8BAAA,EACD,SAAS,IAAI,CAAA;AAAA,oBAAA,EACvB,QAAQ,CAAA;AAAA,gBAAA;AAAA,SACb;AAAA,MACL;AAAA,IACJ;AAEA,IAAA,IAAA,GAAO,MAAA;AAAA,EACX;AAEA,EAAA,MAAM,WAAA,GAAc,aAAA,CAAc,IAAA,CAAK,IAAI,CAAA;AAG3C,EAAA,OAAO,IAAI,QAAA;AAAA,IACP,IAAA;AAAA,IACA,MAAA;AAAA,IACA,WAAA;AAAA,IACA,QAAA;AAAA,IACA;AAAA,GACJ;AACJ;;;;"}