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 • 6.26 kB
Source Map (JSON)
{"version":3,"file":"createUboElementsWGSL.mjs","sources":["../../../../../../src/rendering/renderers/gpu/shader/utils/createUboElementsWGSL.ts"],"sourcesContent":["import type { UboElement, UboLayout, UNIFORM_TYPES, UniformData } from '../../../shared/shader/types';\n\n/** @internal */\nexport const WGSL_ALIGN_SIZE_DATA: Record<UNIFORM_TYPES | string, {align: number, size: number}> = {\n i32: { align: 4, size: 4 },\n u32: { align: 4, size: 4 },\n f32: { align: 4, size: 4 },\n f16: { align: 2, size: 2 },\n 'vec2<i32>': { align: 8, size: 8 },\n 'vec2<u32>': { align: 8, size: 8 },\n 'vec2<f32>': { align: 8, size: 8 },\n 'vec2<f16>': { align: 4, size: 4 },\n 'vec3<i32>': { align: 16, size: 12 },\n 'vec3<u32>': { align: 16, size: 12 },\n 'vec3<f32>': { align: 16, size: 12 },\n 'vec3<f16>': { align: 8, size: 6 },\n 'vec4<i32>': { align: 16, size: 16 },\n 'vec4<u32>': { align: 16, size: 16 },\n 'vec4<f32>': { align: 16, size: 16 },\n 'vec4<f16>': { align: 8, size: 8 },\n 'mat2x2<f32>': { align: 8, size: 16 },\n 'mat2x2<f16>': { align: 4, size: 8 },\n 'mat3x2<f32>': { align: 8, size: 24 },\n 'mat3x2<f16>': { align: 4, size: 12 },\n 'mat4x2<f32>': { align: 8, size: 32 },\n 'mat4x2<f16>': { align: 4, size: 16 },\n 'mat2x3<f32>': { align: 16, size: 32 },\n 'mat2x3<f16>': { align: 8, size: 16 },\n 'mat3x3<f32>': { align: 16, size: 48 },\n 'mat3x3<f16>': { align: 8, size: 24 },\n 'mat4x3<f32>': { align: 16, size: 64 },\n 'mat4x3<f16>': { align: 8, size: 32 },\n 'mat2x4<f32>': { align: 16, size: 32 },\n 'mat2x4<f16>': { align: 8, size: 16 },\n 'mat3x4<f32>': { align: 16, size: 48 },\n 'mat3x4<f16>': { align: 8, size: 24 },\n 'mat4x4<f32>': { align: 16, size: 64 },\n 'mat4x4<f16>': { align: 8, size: 32 },\n};\n\n/**\n * @param uniformData\n * @internal\n */\nexport function createUboElementsWGSL(uniformData: UniformData[]): UboLayout\n{\n const uboElements: UboElement[] = uniformData.map((data: UniformData) =>\n ({\n data,\n offset: 0,\n size: 0,\n }));\n\n let offset = 0;\n\n for (let i = 0; i < uboElements.length; i++)\n {\n const uboElement = uboElements[i];\n\n let size = WGSL_ALIGN_SIZE_DATA[uboElement.data.type].size;\n const align = WGSL_ALIGN_SIZE_DATA[uboElement.data.type].align;\n\n if (!WGSL_ALIGN_SIZE_DATA[uboElement.data.type])\n {\n throw new Error(`[Pixi.js] WebGPU UniformBuffer: Unknown type ${uboElement.data.type}`);\n }\n\n if (uboElement.data.size > 1)\n {\n size = Math.max(size, align) * uboElement.data.size;\n }\n\n offset = Math.ceil((offset) / align) * align;\n\n // TODO deal with Arrays\n uboElement.size = size;\n\n uboElement.offset = offset;\n\n offset += size;\n }\n\n // must align to 16 bits!\n offset = Math.ceil(offset / 16) * 16;\n\n return { uboElements, size: offset };\n}\n\n"],"names":[],"mappings":"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"}