import { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat.mjs'; "use strict"; const WGSL_TO_VERTEX_TYPES = { f32: "float32", "vec2": "float32x2", "vec3": "float32x3", "vec4": "float32x4", vec2f: "float32x2", vec3f: "float32x3", vec4f: "float32x4", i32: "sint32", "vec2": "sint32x2", "vec3": "sint32x3", "vec4": "sint32x4", u32: "uint32", "vec2": "uint32x2", "vec3": "uint32x3", "vec4": "uint32x4", bool: "uint32", "vec2": "uint32x2", "vec3": "uint32x3", "vec4": "uint32x4" }; function extractAttributesFromGpuProgram({ source, entryPoint }) { const results = {}; const mainVertStart = source.indexOf(`fn ${entryPoint}`); if (mainVertStart !== -1) { const arrowFunctionStart = source.indexOf("->", mainVertStart); if (arrowFunctionStart !== -1) { const functionArgsSubstring = source.substring(mainVertStart, arrowFunctionStart); const inputsRegex = /@location\((\d+)\)\s+([a-zA-Z0-9_]+)\s*:\s*([a-zA-Z0-9_<>]+)(?:,|\s|$)/g; let match; while ((match = inputsRegex.exec(functionArgsSubstring)) !== null) { const format = WGSL_TO_VERTEX_TYPES[match[3]] ?? "float32"; results[match[2]] = { location: parseInt(match[1], 10), format, stride: getAttributeInfoFromFormat(format).stride, offset: 0, instance: false, start: 0 }; } } } return results; } export { extractAttributesFromGpuProgram }; //# sourceMappingURL=extractAttributesFromGpuProgram.mjs.map