1 line
7.0 KiB
Plaintext
1 line
7.0 KiB
Plaintext
{"version":3,"file":"generateUboSyncPolyfill.mjs","sources":["../../../src/unsafe-eval/ubo/generateUboSyncPolyfill.ts"],"sourcesContent":["import { WGSL_TO_STD40_SIZE } from '../../rendering/renderers/gl/shader/utils/createUboElementsSTD40';\nimport { WGSL_ALIGN_SIZE_DATA } from '../../rendering/renderers/gpu/shader/utils/createUboElementsWGSL';\nimport { uniformParsers } from '../../rendering/renderers/shared/shader/utils/uniformParsers';\nimport { uboParserFunctions, uboSingleFunctionsSTD40, uboSingleFunctionsWGSL } from './uboSyncFunctions';\n\nimport type { UboElement, UniformsSyncCallback } from '../../rendering/renderers/shared/shader/types';\nimport type { UniformGroup } from '../../rendering/renderers/shared/shader/UniformGroup';\nimport type { UboUploadFunction } from './uboSyncFunctions';\n\nexport function generateUboSyncPolyfillSTD40(uboElements: UboElement[]): UniformsSyncCallback\n{\n return generateUboSyncPolyfill(\n uboElements,\n uboSingleFunctionsSTD40,\n (uboElement: UboElement) =>\n {\n const rowSize = Math.max(WGSL_TO_STD40_SIZE[uboElement.data.type] / 16, 1);\n const elementSize = (uboElement.data.value as Array<number>).length / uboElement.data.size;// size / rowSize;\n const remainder = (4 - (elementSize % 4)) % 4;\n\n return (_name: string, data: Float32Array, offset: number, _uv: any, v: any) =>\n {\n let t = 0;\n\n for (let i = 0; i < (uboElement.data.size * rowSize); i++)\n {\n for (let j = 0; j < elementSize; j++)\n {\n data[offset++] = v[t++];\n }\n\n offset += remainder;\n }\n };\n }\n\n );\n}\n\nexport function generateUboSyncPolyfillWGSL(uboElements: UboElement[]): UniformsSyncCallback\n{\n return generateUboSyncPolyfill(\n uboElements,\n uboSingleFunctionsWGSL,\n (uboElement: UboElement) =>\n {\n const { size, align } = WGSL_ALIGN_SIZE_DATA[uboElement.data.type];\n\n const remainder = (size - align) / 4;\n\n return (_name: string, data: Float32Array, offset: number, _uv: any, v: any) =>\n {\n let t = 0;\n\n for (let i = 0; i < uboElement.data.size * (size / 4); i++)\n {\n for (let j = 0; j < (size / 4); j++)\n {\n data[offset++] = v[t++];\n }\n offset += remainder;\n }\n };\n }\n );\n}\n\nfunction generateUboSyncPolyfill(\n uboElements: UboElement[],\n uboFunctions: Record<string, UboUploadFunction>,\n arrayUploadFunction: (uboElement: UboElement) => UboUploadFunction\n): UniformsSyncCallback\n{\n // loop through all the uniforms..\n const functionMap: Record<string, {offset: number, func: UboUploadFunction}> = {};\n\n for (const i in uboElements)\n {\n const uboElement = uboElements[i];\n const uniform = uboElement.data;\n\n let parsed = false;\n\n functionMap[uniform.name] = {\n offset: uboElement.offset / 4,\n func: null\n };\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 functionMap[uniform.name].func = uboParserFunctions[j];\n\n parsed = true;\n\n break;\n }\n }\n\n // if not parsed...\n\n if (!parsed)\n {\n if (uniform.size === 1)\n {\n functionMap[uniform.name].func = uboFunctions[uniform.type];\n }\n else\n {\n functionMap[uniform.name].func = arrayUploadFunction(uboElement);\n }\n }\n }\n\n return (\n uniforms: UniformGroup,\n data: Float32Array,\n offset: number\n ) =>\n {\n for (const i in functionMap)\n {\n functionMap[i].func(i, data, offset + functionMap[i].offset, uniforms, uniforms[i as keyof typeof uniforms]);\n }\n };\n}\n"],"names":[],"mappings":"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"} |