{"version":3,"file":"generateShaderSyncPolyfill.mjs","sources":["../../../src/unsafe-eval/shader/generateShaderSyncPolyfill.ts"],"sourcesContent":["import { BufferResource } from '../../rendering/renderers/shared/buffer/BufferResource';\nimport { UniformGroup } from '../../rendering/renderers/shared/shader/UniformGroup';\nimport { TextureSource } from '../../rendering/renderers/shared/texture/sources/TextureSource';\nimport { TextureStyle } from '../../rendering/renderers/shared/texture/TextureStyle';\n\nimport type { ShaderSyncData, ShaderSyncFunction } from '../../rendering/renderers/gl/shader/GlShaderSystem';\nimport type { WebGLRenderer } from '../../rendering/renderers/gl/WebGLRenderer';\nimport type { Shader } from '../../rendering/renderers/shared/shader/Shader';\n\nexport function generateShaderSyncPolyfill(): ShaderSyncFunction\n{\n    return syncShader;\n}\n\nfunction syncShader(renderer: WebGLRenderer, shader: Shader, syncData: ShaderSyncData): void\n{\n    const gl = renderer.gl;\n    const shaderSystem = renderer.shader;\n    const programData = shaderSystem._getProgramData(shader.glProgram);\n\n    // loop through the groups and sync everything...\n    for (const i in shader.groups)\n    {\n        const bindGroup = shader.groups[i];\n\n        for (const j in bindGroup.resources)\n        {\n            const resource = bindGroup.resources[j];\n\n            if (resource instanceof UniformGroup)\n            {\n                if (resource.ubo)\n                {\n                    shaderSystem.bindUniformBlock(\n                        resource,\n                        shader._uniformBindMap[i as unknown as number][j as unknown as number],\n                        syncData.blockIndex++\n                    );\n                }\n                else\n                {\n                    shaderSystem.updateUniformGroup(resource);\n                }\n            }\n            else if (resource instanceof BufferResource)\n            {\n                shaderSystem.bindUniformBlock(\n                    resource,\n                    shader._uniformBindMap[i as unknown as number][j as unknown as number],\n                    syncData.blockIndex++\n                );\n            }\n            else if (resource instanceof TextureSource)\n            {\n                // TODO really we should not be binding the sampler here too\n                renderer.texture.bind(resource, syncData.textureCount);\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 (uniformData.value !== syncData.textureCount)\n                    {\n                        gl.uniform1i(uniformData.location, syncData.textureCount);\n                    }\n\n                    syncData.textureCount++;\n                }\n            }\n            else if (resource instanceof TextureStyle)\n            {\n                // TODO not doing anything here works is assuming that textures are bound with the style they own.\n                // this.renderer.texture.bindSampler(resource, syncData.textureCount);\n            }\n        }\n    }\n}\n"],"names":[],"mappings":";;;;;;AASO,SAAS,0BAChB,GAAA;AACI,EAAO,OAAA,UAAA,CAAA;AACX,CAAA;AAEA,SAAS,UAAA,CAAW,QAAyB,EAAA,MAAA,EAAgB,QAC7D,EAAA;AACI,EAAA,MAAM,KAAK,QAAS,CAAA,EAAA,CAAA;AACpB,EAAA,MAAM,eAAe,QAAS,CAAA,MAAA,CAAA;AAC9B,EAAA,MAAM,WAAc,GAAA,YAAA,CAAa,eAAgB,CAAA,MAAA,CAAO,SAAS,CAAA,CAAA;AAGjE,EAAW,KAAA,MAAA,CAAA,IAAK,OAAO,MACvB,EAAA;AACI,IAAM,MAAA,SAAA,GAAY,MAAO,CAAA,MAAA,CAAO,CAAC,CAAA,CAAA;AAEjC,IAAW,KAAA,MAAA,CAAA,IAAK,UAAU,SAC1B,EAAA;AACI,MAAM,MAAA,QAAA,GAAW,SAAU,CAAA,SAAA,CAAU,CAAC,CAAA,CAAA;AAEtC,MAAA,IAAI,oBAAoB,YACxB,EAAA;AACI,QAAA,IAAI,SAAS,GACb,EAAA;AACI,UAAa,YAAA,CAAA,gBAAA;AAAA,YACT,QAAA;AAAA,YACA,MAAO,CAAA,eAAA,CAAgB,CAAsB,CAAA,CAAE,CAAsB,CAAA;AAAA,YACrE,QAAS,CAAA,UAAA,EAAA;AAAA,WACb,CAAA;AAAA,SAGJ,MAAA;AACI,UAAA,YAAA,CAAa,mBAAmB,QAAQ,CAAA,CAAA;AAAA,SAC5C;AAAA,OACJ,MAAA,IACS,oBAAoB,cAC7B,EAAA;AACI,QAAa,YAAA,CAAA,gBAAA;AAAA,UACT,QAAA;AAAA,UACA,MAAO,CAAA,eAAA,CAAgB,CAAsB,CAAA,CAAE,CAAsB,CAAA;AAAA,UACrE,QAAS,CAAA,UAAA,EAAA;AAAA,SACb,CAAA;AAAA,OACJ,MAAA,IACS,oBAAoB,aAC7B,EAAA;AAEI,QAAA,QAAA,CAAS,OAAQ,CAAA,IAAA,CAAK,QAAU,EAAA,QAAA,CAAS,YAAY,CAAA,CAAA;AAErD,QAAA,MAAM,WAAc,GAAA,MAAA,CAAO,eAAgB,CAAA,CAAsB,EAAE,CAAsB,CAAA,CAAA;AAEzF,QAAM,MAAA,WAAA,GAAc,WAAY,CAAA,WAAA,CAAY,WAAW,CAAA,CAAA;AAEvD,QAAA,IAAI,WACJ,EAAA;AACI,UAAI,IAAA,WAAA,CAAY,KAAU,KAAA,QAAA,CAAS,YACnC,EAAA;AACI,YAAA,EAAA,CAAG,SAAU,CAAA,WAAA,CAAY,QAAU,EAAA,QAAA,CAAS,YAAY,CAAA,CAAA;AAAA,WAC5D;AAEA,UAAS,QAAA,CAAA,YAAA,EAAA,CAAA;AAAA,SACb;AAAA,OACJ,MAAA,IACS,oBAAoB,YAC7B,EAAA;AAAA,OAGA;AAAA,KACJ;AAAA,GACJ;AACJ;;;;"}