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

1 lines 4.18 kB
{"version":3,"file":"extractAttributesFromGpuProgram.mjs","sources":["../../../../../../src/rendering/renderers/gpu/shader/utils/extractAttributesFromGpuProgram.ts"],"sourcesContent":["import { getAttributeInfoFromFormat } from '../../../shared/geometry/utils/getAttributeInfoFromFormat';\n\nimport type { ExtractedAttributeData } from '../../../gl/shader/program/extractAttributesFromGlProgram';\nimport type { VertexFormat } from '../../../shared/geometry/const';\nimport type { ProgramSource } from '../GpuProgram';\n\nconst WGSL_TO_VERTEX_TYPES: Record<string, VertexFormat> = {\n\n f32: 'float32',\n 'vec2<f32>': 'float32x2',\n 'vec3<f32>': 'float32x3',\n 'vec4<f32>': 'float32x4',\n vec2f: 'float32x2',\n vec3f: 'float32x3',\n vec4f: 'float32x4',\n\n i32: 'sint32',\n 'vec2<i32>': 'sint32x2',\n 'vec3<i32>': 'sint32x3',\n 'vec4<i32>': 'sint32x4',\n\n u32: 'uint32',\n 'vec2<u32>': 'uint32x2',\n 'vec3<u32>': 'uint32x3',\n 'vec4<u32>': 'uint32x4',\n\n bool: 'uint32',\n 'vec2<bool>': 'uint32x2',\n 'vec3<bool>': 'uint32x3',\n 'vec4<bool>': 'uint32x4',\n};\n\n/**\n * @param root0\n * @param root0.source\n * @param root0.entryPoint\n * @internal\n */\nexport function extractAttributesFromGpuProgram(\n { source, entryPoint }: ProgramSource\n): Record<string, ExtractedAttributeData>\n{\n const results: Record<string, ExtractedAttributeData> = {};\n\n // Step 1: Find the start of the mainVert function using string methods\n const mainVertStart = source.indexOf(`fn ${entryPoint}`);\n\n if (mainVertStart !== -1)\n {\n // Step 2: Find the index of the next '->' after the start of the mainVert function\n const arrowFunctionStart = source.indexOf('->', mainVertStart);\n\n if (arrowFunctionStart !== -1)\n {\n const functionArgsSubstring = source.substring(mainVertStart, arrowFunctionStart);\n\n // Apply the inputs regex directly to the trimmed string\n const inputsRegex = /@location\\((\\d+)\\)\\s+([a-zA-Z0-9_]+)\\s*:\\s*([a-zA-Z0-9_<>]+)(?:,|\\s|$)/g;\n let match;\n\n while ((match = inputsRegex.exec(functionArgsSubstring)) !== null)\n {\n const format = WGSL_TO_VERTEX_TYPES[match[3] as VertexFormat] ?? 'float32';\n\n results[match[2]] = {\n location: parseInt(match[1], 10),\n format,\n stride: getAttributeInfoFromFormat(format).stride,\n offset: 0,\n instance: false,\n start: 0,\n };\n }\n }\n }\n\n return results;\n}\n"],"names":[],"mappings":";;;AAMA,MAAM,oBAAqD,GAAA;AAAA,EAEvD,GAAM,EAAA,SAAA;AAAA,EACN,WAAa,EAAA,WAAA;AAAA,EACb,WAAa,EAAA,WAAA;AAAA,EACb,WAAa,EAAA,WAAA;AAAA,EACb,KAAO,EAAA,WAAA;AAAA,EACP,KAAO,EAAA,WAAA;AAAA,EACP,KAAO,EAAA,WAAA;AAAA,EAEP,GAAK,EAAA,QAAA;AAAA,EACL,WAAa,EAAA,UAAA;AAAA,EACb,WAAa,EAAA,UAAA;AAAA,EACb,WAAa,EAAA,UAAA;AAAA,EAEb,GAAK,EAAA,QAAA;AAAA,EACL,WAAa,EAAA,UAAA;AAAA,EACb,WAAa,EAAA,UAAA;AAAA,EACb,WAAa,EAAA,UAAA;AAAA,EAEb,IAAM,EAAA,QAAA;AAAA,EACN,YAAc,EAAA,UAAA;AAAA,EACd,YAAc,EAAA,UAAA;AAAA,EACd,YAAc,EAAA,UAAA;AAClB,CAAA,CAAA;AAQO,SAAS,+BACZ,CAAA,EAAE,MAAQ,EAAA,UAAA,EAEd,EAAA;AACI,EAAA,MAAM,UAAkD,EAAC,CAAA;AAGzD,EAAA,MAAM,aAAgB,GAAA,MAAA,CAAO,OAAQ,CAAA,CAAA,GAAA,EAAM,UAAU,CAAE,CAAA,CAAA,CAAA;AAEvD,EAAA,IAAI,kBAAkB,CACtB,CAAA,EAAA;AAEI,IAAA,MAAM,kBAAqB,GAAA,MAAA,CAAO,OAAQ,CAAA,IAAA,EAAM,aAAa,CAAA,CAAA;AAE7D,IAAA,IAAI,uBAAuB,CAC3B,CAAA,EAAA;AACI,MAAA,MAAM,qBAAwB,GAAA,MAAA,CAAO,SAAU,CAAA,aAAA,EAAe,kBAAkB,CAAA,CAAA;AAGhF,MAAA,MAAM,WAAc,GAAA,yEAAA,CAAA;AACpB,MAAI,IAAA,KAAA,CAAA;AAEJ,MAAA,OAAA,CAAQ,KAAQ,GAAA,WAAA,CAAY,IAAK,CAAA,qBAAqB,OAAO,IAC7D,EAAA;AACI,QAAA,MAAM,MAAS,GAAA,oBAAA,CAAqB,KAAM,CAAA,CAAC,CAAiB,CAAK,IAAA,SAAA,CAAA;AAEjE,QAAQ,OAAA,CAAA,KAAA,CAAM,CAAC,CAAC,CAAI,GAAA;AAAA,UAChB,QAAU,EAAA,QAAA,CAAS,KAAM,CAAA,CAAC,GAAG,EAAE,CAAA;AAAA,UAC/B,MAAA;AAAA,UACA,MAAA,EAAQ,0BAA2B,CAAA,MAAM,CAAE,CAAA,MAAA;AAAA,UAC3C,MAAQ,EAAA,CAAA;AAAA,UACR,QAAU,EAAA,KAAA;AAAA,UACV,KAAO,EAAA,CAAA;AAAA,SACX,CAAA;AAAA,OACJ;AAAA,KACJ;AAAA,GACJ;AAEA,EAAO,OAAA,OAAA,CAAA;AACX;;;;"}