{"version":3,"file":"generateArraySyncWGSL.mjs","sources":["../../../../../../src/rendering/renderers/gpu/shader/utils/generateArraySyncWGSL.ts"],"sourcesContent":["import { WGSL_ALIGN_SIZE_DATA } from './createUboElementsWGSL';\n\nimport type { UboElement } from '../../../shared/shader/types';\n\n/**\n * This generates a function that will sync an array to the uniform buffer\n * following the wgsl layout\n * @param uboElement - the element to generate the array sync for\n * @param offsetToAdd - the offset to append at the start of the code\n * @returns - the generated code\n * @internal\n */\nexport function generateArraySyncWGSL(uboElement: UboElement, offsetToAdd: number): string\n{\n    // this is in byte..\n    const { size, align } = WGSL_ALIGN_SIZE_DATA[uboElement.data.type];\n\n    const remainder = (align - size) / 4;\n    const data = uboElement.data.type.indexOf('i32') >= 0 ? 'dataInt32' : 'data';\n\n    return `\n         v = uv.${uboElement.data.name};\n         ${offsetToAdd !== 0 ? `offset += ${offsetToAdd};` : ''}\n\n         arrayOffset = offset;\n\n         t = 0;\n\n         for(var i=0; i < ${uboElement.data.size * (size / 4)}; i++)\n         {\n             for(var j = 0; j < ${size / 4}; j++)\n             {\n                 ${data}[arrayOffset++] = v[t++];\n             }\n             ${remainder !== 0 ? `arrayOffset += ${remainder};` : ''}\n         }\n     `;\n}\n"],"names":[],"mappings":";;;AAYO,SAAS,qBAAA,CAAsB,YAAwB,WAAA,EAC9D;AAEI,EAAA,MAAM,EAAE,IAAA,EAAM,KAAA,KAAU,oBAAA,CAAqB,UAAA,CAAW,KAAK,IAAI,CAAA;AAEjE,EAAA,MAAM,SAAA,GAAA,CAAa,QAAQ,IAAA,IAAQ,CAAA;AACnC,EAAA,MAAM,IAAA,GAAO,WAAW,IAAA,CAAK,IAAA,CAAK,QAAQ,KAAK,CAAA,IAAK,IAAI,WAAA,GAAc,MAAA;AAEtE,EAAA,OAAO;AAAA,gBAAA,EACO,UAAA,CAAW,KAAK,IAAI,CAAA;AAAA,SAAA,EAC3B,WAAA,KAAgB,CAAA,GAAI,CAAA,UAAA,EAAa,WAAW,MAAM,EAAE;;AAAA;;AAAA;;AAAA,0BAAA,EAMnC,UAAA,CAAW,IAAA,CAAK,IAAA,IAAQ,IAAA,GAAO,CAAA,CAAE,CAAA;AAAA;AAAA,gCAAA,EAE3B,OAAO,CAAC,CAAA;AAAA;AAAA,iBAAA,EAEvB,IAAI,CAAA;AAAA;AAAA,aAAA,EAER,SAAA,KAAc,CAAA,GAAI,CAAA,eAAA,EAAkB,SAAS,MAAM,EAAE;AAAA;AAAA,KAAA,CAAA;AAGpE;;;;"}