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 • 5.04 kB
Source Map (JSON)
{"version":3,"file":"generateUniformsSync.mjs","sources":["../../../../../../src/rendering/renderers/gl/shader/utils/generateUniformsSync.ts"],"sourcesContent":["// cu = Cached value's uniform data field\n// cv = Cached value\n// v = value to upload\n// ud = uniformData\n// uv = uniformValue\n\nimport { BufferResource } from '../../../shared/buffer/BufferResource';\nimport { UniformGroup } from '../../../shared/shader/UniformGroup';\nimport { uniformParsers } from '../../../shared/shader/utils/uniformParsers';\nimport { UNIFORM_TO_ARRAY_SETTERS, UNIFORM_TO_SINGLE_SETTERS } from './generateUniformsSyncTypes';\n\nimport type { UniformsSyncCallback } from '../../../shared/shader/types';\n\n/**\n * @param group\n * @param uniformData\n * @internal\n */\nexport function generateUniformsSync(group: UniformGroup, uniformData: Record<string, any>): UniformsSyncCallback\n{\n const funcFragments = [`\n var v = null;\n var cv = null;\n var cu = null;\n var t = 0;\n var gl = renderer.gl;\n var name = null;\n `];\n\n for (const i in group.uniforms)\n {\n if (!uniformData[i])\n {\n if (group.uniforms[i] instanceof UniformGroup)\n {\n if ((group.uniforms[i] as UniformGroup).ubo)\n {\n funcFragments.push(`\n renderer.shader.bindUniformBlock(uv.${i}, \"${i}\");\n `);\n }\n else\n {\n funcFragments.push(`\n renderer.shader.updateUniformGroup(uv.${i});\n `);\n }\n }\n else if (group.uniforms[i] instanceof BufferResource)\n {\n funcFragments.push(`\n renderer.shader.bindBufferResource(uv.${i}, \"${i}\");\n `);\n }\n\n continue;\n }\n\n const uniform = group.uniformStructures[i];\n\n let parsed = false;\n\n for (let j = 0; j < uniformParsers.length; j++)\n {\n const parser = uniformParsers[j];\n\n if (uniform.type === parser.type && parser.test(uniform))\n {\n funcFragments.push(`name = \"${i}\";`, uniformParsers[j].uniform);\n parsed = true;\n\n break;\n }\n }\n\n if (!parsed)\n {\n const templateType = uniform.size === 1 ? UNIFORM_TO_SINGLE_SETTERS : UNIFORM_TO_ARRAY_SETTERS;\n\n const template = templateType[uniform.type].replace('location', `ud[\"${i}\"].location`);\n\n funcFragments.push(`\n cu = ud[\"${i}\"];\n cv = cu.value;\n v = uv[\"${i}\"];\n ${template};`);\n }\n }\n\n /*\n * the introduction of syncData is to solve an issue where textures in uniform groups are not set correctly\n * the texture count was always starting from 0 in each group. This needs to increment each time a texture is used\n * no matter which group is being used\n *\n */\n // eslint-disable-next-line no-new-func\n return new Function('ud', 'uv', 'renderer', 'syncData', funcFragments.join('\\n')) as UniformsSyncCallback;\n}\n"],"names":[],"mappings":";;;;;;AAkBgB,SAAA,oBAAA,CAAqB,OAAqB,WAC1D,EAAA;AACI,EAAA,MAAM,gBAAgB,CAAC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOtB,CAAA,CAAA,CAAA;AAED,EAAW,KAAA,MAAA,CAAA,IAAK,MAAM,QACtB,EAAA;AACI,IAAI,IAAA,CAAC,WAAY,CAAA,CAAC,CAClB,EAAA;AACI,MAAA,IAAI,KAAM,CAAA,QAAA,CAAS,CAAC,CAAA,YAAa,YACjC,EAAA;AACI,QAAA,IAAK,KAAM,CAAA,QAAA,CAAS,CAAC,CAAA,CAAmB,GACxC,EAAA;AACI,UAAA,aAAA,CAAc,IAAK,CAAA,CAAA;AAAA,4DACuB,EAAA,CAAC,MAAM,CAAC,CAAA;AAAA,oBACjD,CAAA,CAAA,CAAA;AAAA,SAGL,MAAA;AACI,UAAA,aAAA,CAAc,IAAK,CAAA,CAAA;AAAA,8DAAA,EACyB,CAAC,CAAA;AAAA,oBAC5C,CAAA,CAAA,CAAA;AAAA,SACL;AAAA,OAEK,MAAA,IAAA,KAAA,CAAM,QAAS,CAAA,CAAC,aAAa,cACtC,EAAA;AACI,QAAA,aAAA,CAAc,IAAK,CAAA,CAAA;AAAA,8DAC6B,EAAA,CAAC,MAAM,CAAC,CAAA;AAAA,oBACnD,CAAA,CAAA,CAAA;AAAA,OACT;AAEA,MAAA,SAAA;AAAA,KACJ;AAEA,IAAM,MAAA,OAAA,GAAU,KAAM,CAAA,iBAAA,CAAkB,CAAC,CAAA,CAAA;AAEzC,IAAA,IAAI,MAAS,GAAA,KAAA,CAAA;AAEb,IAAA,KAAA,IAAS,CAAI,GAAA,CAAA,EAAG,CAAI,GAAA,cAAA,CAAe,QAAQ,CAC3C,EAAA,EAAA;AACI,MAAM,MAAA,MAAA,GAAS,eAAe,CAAC,CAAA,CAAA;AAE/B,MAAA,IAAI,QAAQ,IAAS,KAAA,MAAA,CAAO,QAAQ,MAAO,CAAA,IAAA,CAAK,OAAO,CACvD,EAAA;AACI,QAAA,aAAA,CAAc,KAAK,CAAW,QAAA,EAAA,CAAC,MAAM,cAAe,CAAA,CAAC,EAAE,OAAO,CAAA,CAAA;AAC9D,QAAS,MAAA,GAAA,IAAA,CAAA;AAET,QAAA,MAAA;AAAA,OACJ;AAAA,KACJ;AAEA,IAAA,IAAI,CAAC,MACL,EAAA;AACI,MAAA,MAAM,YAAe,GAAA,OAAA,CAAQ,IAAS,KAAA,CAAA,GAAI,yBAA4B,GAAA,wBAAA,CAAA;AAEtE,MAAM,MAAA,QAAA,GAAW,aAAa,OAAQ,CAAA,IAAI,EAAE,OAAQ,CAAA,UAAA,EAAY,CAAO,IAAA,EAAA,CAAC,CAAa,WAAA,CAAA,CAAA,CAAA;AAErF,MAAA,aAAA,CAAc,IAAK,CAAA,CAAA;AAAA,qBAAA,EACR,CAAC,CAAA;AAAA;AAAA,oBAAA,EAEF,CAAC,CAAA;AAAA,YAAA,EACT,QAAQ,CAAG,CAAA,CAAA,CAAA,CAAA;AAAA,KACjB;AAAA,GACJ;AASA,EAAO,OAAA,IAAI,SAAS,IAAM,EAAA,IAAA,EAAM,YAAY,UAAY,EAAA,aAAA,CAAc,IAAK,CAAA,IAAI,CAAC,CAAA,CAAA;AACpF;;;;"}