UNPKG

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">

54 lines (50 loc) 1.7 kB
'use strict'; var getAttributeInfoFromFormat = require('../../../shared/geometry/utils/getAttributeInfoFromFormat.js'); "use strict"; const WGSL_TO_VERTEX_TYPES = { f32: "float32", "vec2<f32>": "float32x2", "vec3<f32>": "float32x3", "vec4<f32>": "float32x4", vec2f: "float32x2", vec3f: "float32x3", vec4f: "float32x4", i32: "sint32", "vec2<i32>": "sint32x2", "vec3<i32>": "sint32x3", "vec4<i32>": "sint32x4", u32: "uint32", "vec2<u32>": "uint32x2", "vec3<u32>": "uint32x3", "vec4<u32>": "uint32x4", bool: "uint32", "vec2<bool>": "uint32x2", "vec3<bool>": "uint32x3", "vec4<bool>": "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.getAttributeInfoFromFormat(format).stride, offset: 0, instance: false, start: 0 }; } } } return results; } exports.extractAttributesFromGpuProgram = extractAttributesFromGpuProgram; //# sourceMappingURL=extractAttributesFromGpuProgram.js.map