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.34 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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"}