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 • 6.02 kB
Source Map (JSON)
{"version":3,"file":"GenerateShaderSyncCode.mjs","sources":["../../../../../src/rendering/renderers/gl/shader/GenerateShaderSyncCode.ts"],"sourcesContent":["import { BufferResource } from '../../shared/buffer/BufferResource';\nimport { UniformGroup } from '../../shared/shader/UniformGroup';\nimport { TextureSource } from '../../shared/texture/sources/TextureSource';\n\nimport type { Shader } from '../../shared/shader/Shader';\nimport type { GlShaderSystem, ShaderSyncFunction } from './GlShaderSystem';\n\n/**\n * Generates the a function that will efficiently sync shader resources with the GPU.\n * @param shader - The shader to generate the code for\n * @param shaderSystem - An instance of the shader system\n * @internal\n */\nexport function generateShaderSyncCode(shader: Shader, shaderSystem: GlShaderSystem): ShaderSyncFunction\n{\n const funcFragments: string[] = [];\n\n /**\n * rS = renderer.shader\n * sS = shaderSystem\n * sD = shaderData\n * g = shader.groups\n * s = shader\n * r = renderer\n * ugS = renderer.uniformGroupSystem\n */\n const headerFragments: string[] = [`\n var g = s.groups;\n var sS = r.shader;\n var p = s.glProgram;\n var ugS = r.uniformGroup;\n var resources;\n `];\n\n let addedTextreSystem = false;\n let textureCount = 0;\n\n const programData = shaderSystem._getProgramData(shader.glProgram);\n\n for (const i in shader.groups)\n {\n const group = shader.groups[i];\n\n funcFragments.push(`\n resources = g[${i}].resources;\n `);\n\n for (const j in group.resources)\n {\n const resource = group.resources[j];\n\n if (resource instanceof UniformGroup)\n {\n if (resource.ubo)\n {\n const resName = shader._uniformBindMap[i][Number(j)];\n\n funcFragments.push(`\n sS.bindUniformBlock(\n resources[${j}],\n '${resName}',\n ${shader.glProgram._uniformBlockData[resName].index}\n );\n `);\n }\n else\n {\n funcFragments.push(`\n ugS.updateUniformGroup(resources[${j}], p, sD);\n `);\n }\n }\n else if (resource instanceof BufferResource)\n {\n const resName = shader._uniformBindMap[i][Number(j)];\n\n funcFragments.push(`\n sS.bindUniformBlock(\n resources[${j}],\n '${resName}',\n ${shader.glProgram._uniformBlockData[resName].index}\n );\n `);\n }\n else if (resource instanceof TextureSource)\n {\n const uniformName = shader._uniformBindMap[i as unknown as number][j as unknown as number];\n\n const uniformData = programData.uniformData[uniformName];\n\n if (uniformData)\n {\n if (!addedTextreSystem)\n {\n addedTextreSystem = true;\n headerFragments.push(`\n var tS = r.texture;\n `);\n }\n\n shaderSystem._gl.uniform1i(uniformData.location, textureCount);\n\n funcFragments.push(`\n tS.bind(resources[${j}], ${textureCount});\n `);\n\n textureCount++;\n }\n }\n }\n }\n\n const functionSource = [...headerFragments, ...funcFragments].join('\\n');\n\n // eslint-disable-next-line no-new-func\n return new Function('r', 's', 'sD', functionSource) as ShaderSyncFunction;\n}\n"],"names":[],"mappings":";;;;;AAaO,SAAS,sBAAA,CAAuB,QAAgB,YAAA,EACvD;AACI,EAAA,MAAM,gBAA0B,EAAC;AAWjC,EAAA,MAAM,kBAA4B,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAAA,CAMlC,CAAA;AAED,EAAA,IAAI,iBAAA,GAAoB,KAAA;AACxB,EAAA,IAAI,YAAA,GAAe,CAAA;AAEnB,EAAA,MAAM,WAAA,GAAc,YAAA,CAAa,eAAA,CAAgB,MAAA,CAAO,SAAS,CAAA;AAEjE,EAAA,KAAA,MAAW,CAAA,IAAK,OAAO,MAAA,EACvB;AACI,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA;AAE7B,IAAA,aAAA,CAAc,IAAA,CAAK;AAAA,0BAAA,EACC,CAAC,CAAA;AAAA,QAAA,CACpB,CAAA;AAED,IAAA,KAAA,MAAW,CAAA,IAAK,MAAM,SAAA,EACtB;AACI,MAAA,MAAM,QAAA,GAAW,KAAA,CAAM,SAAA,CAAU,CAAC,CAAA;AAElC,MAAA,IAAI,oBAAoB,YAAA,EACxB;AACI,QAAA,IAAI,SAAS,GAAA,EACb;AACI,UAAA,MAAM,UAAU,MAAA,CAAO,eAAA,CAAgB,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAC,CAAA;AAEnD,UAAA,aAAA,CAAc,IAAA,CAAK;AAAA;AAAA,sCAAA,EAEC,CAAC,CAAA;AAAA,6BAAA,EACV,OAAO,CAAA;AAAA,4BAAA,EACR,MAAA,CAAO,SAAA,CAAU,iBAAA,CAAkB,OAAO,EAAE,KAAK;AAAA;AAAA,oBAAA,CAE1D,CAAA;AAAA,QACL,CAAA,MAEA;AACI,UAAA,aAAA,CAAc,IAAA,CAAK;AAAA,yDAAA,EACoB,CAAC,CAAA;AAAA,oBAAA,CACvC,CAAA;AAAA,QACL;AAAA,MACJ,CAAA,MAAA,IACS,oBAAoB,cAAA,EAC7B;AACI,QAAA,MAAM,UAAU,MAAA,CAAO,eAAA,CAAgB,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAC,CAAA;AAEnD,QAAA,aAAA,CAAc,IAAA,CAAK;AAAA;AAAA,kCAAA,EAEC,CAAC,CAAA;AAAA,yBAAA,EACV,OAAO,CAAA;AAAA,wBAAA,EACR,MAAA,CAAO,SAAA,CAAU,iBAAA,CAAkB,OAAO,EAAE,KAAK;AAAA;AAAA,gBAAA,CAE1D,CAAA;AAAA,MACL,CAAA,MAAA,IACS,oBAAoB,aAAA,EAC7B;AACI,QAAA,MAAM,WAAA,GAAc,MAAA,CAAO,eAAA,CAAgB,CAAsB,EAAE,CAAsB,CAAA;AAEzF,QAAA,MAAM,WAAA,GAAc,WAAA,CAAY,WAAA,CAAY,WAAW,CAAA;AAEvD,QAAA,IAAI,WAAA,EACJ;AACI,UAAA,IAAI,CAAC,iBAAA,EACL;AACI,YAAA,iBAAA,GAAoB,IAAA;AACpB,YAAA,eAAA,CAAgB,IAAA,CAAK;AAAA;AAAA,wBAAA,CAEpB,CAAA;AAAA,UACL;AAEA,UAAA,YAAA,CAAa,GAAA,CAAI,SAAA,CAAU,WAAA,CAAY,QAAA,EAAU,YAAY,CAAA;AAE7D,UAAA,aAAA,CAAc,IAAA,CAAK;AAAA,0CAAA,EACK,CAAC,MAAM,YAAY,CAAA;AAAA,oBAAA,CAC1C,CAAA;AAED,UAAA,YAAA,EAAA;AAAA,QACJ;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,GAAG,eAAA,EAAiB,GAAG,aAAa,CAAA,CAAE,KAAK,IAAI,CAAA;AAGvE,EAAA,OAAO,IAAI,QAAA,CAAS,GAAA,EAAK,GAAA,EAAK,MAAM,cAAc,CAAA;AACtD;;;;"}