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 • 3.19 kB
Source Map (JSON)
{"version":3,"file":"GpuShaderSystem.mjs","sources":["../../../../../src/rendering/renderers/gpu/shader/GpuShaderSystem.ts"],"sourcesContent":["import { ExtensionType } from '../../../../extensions/Extensions';\n\nimport type { GPU } from '../GpuDeviceSystem';\nimport type { GpuProgram } from './GpuProgram';\n\n/**\n * Data structure for GPU program layout.\n * Contains bind group layouts and pipeline layout.\n * @category rendering\n * @advanced\n */\nexport interface GPUProgramData\n{\n bindGroups: GPUBindGroupLayout[]\n pipeline: GPUPipelineLayout\n}\n\n/**\n * A system that manages the rendering of GpuPrograms.\n * @category rendering\n * @advanced\n */\nexport class GpuShaderSystem\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUSystem,\n ],\n name: 'shader',\n } as const;\n\n private _gpu: GPU;\n\n private readonly _gpuProgramData: Record<number, GPUProgramData> = Object.create(null);\n\n protected contextChange(gpu: GPU): void\n {\n this._gpu = gpu;\n }\n\n public getProgramData(program: GpuProgram)\n {\n return this._gpuProgramData[program._layoutKey] || this._createGPUProgramData(program);\n }\n\n private _createGPUProgramData(program: GpuProgram)\n {\n const device = this._gpu.device;\n\n const bindGroups = program.gpuLayout.map((group) => device.createBindGroupLayout({ entries: group }));\n\n const pipelineLayoutDesc = { bindGroupLayouts: bindGroups };\n\n this._gpuProgramData[program._layoutKey] = {\n bindGroups,\n pipeline: device.createPipelineLayout(pipelineLayoutDesc),\n };\n\n // generally we avoid having to make this automatically\n // keeping this for a reminder, if any issues popup\n // program._gpuLayout = {\n // bindGroups: null,\n // pipeline: 'auto',\n // };\n\n return this._gpuProgramData[program._layoutKey];\n }\n\n public destroy(): void\n {\n // TODO destroy the _gpuProgramData\n this._gpu = null;\n (this._gpuProgramData as null) = null;\n }\n}\n"],"names":[],"mappings":";;;AAsBO,MAAM,eAAA,CACb;AAAA,EADO,WAAA,GAAA;AAYH,IAAA,IAAA,CAAiB,eAAA,mBAAkD,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AAAA,EAAA;AAAA,EAE3E,cAAc,GAAA,EACxB;AACI,IAAA,IAAA,CAAK,IAAA,GAAO,GAAA;AAAA,EAChB;AAAA,EAEO,eAAe,OAAA,EACtB;AACI,IAAA,OAAO,KAAK,eAAA,CAAgB,OAAA,CAAQ,UAAU,CAAA,IAAK,IAAA,CAAK,sBAAsB,OAAO,CAAA;AAAA,EACzF;AAAA,EAEQ,sBAAsB,OAAA,EAC9B;AACI,IAAA,MAAM,MAAA,GAAS,KAAK,IAAA,CAAK,MAAA;AAEzB,IAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,SAAA,CAAU,GAAA,CAAI,CAAC,KAAA,KAAU,MAAA,CAAO,qBAAA,CAAsB,EAAE,OAAA,EAAS,KAAA,EAAO,CAAC,CAAA;AAEpG,IAAA,MAAM,kBAAA,GAAqB,EAAE,gBAAA,EAAkB,UAAA,EAAW;AAE1D,IAAA,IAAA,CAAK,eAAA,CAAgB,OAAA,CAAQ,UAAU,CAAA,GAAI;AAAA,MACvC,UAAA;AAAA,MACA,QAAA,EAAU,MAAA,CAAO,oBAAA,CAAqB,kBAAkB;AAAA,KAC5D;AASA,IAAA,OAAO,IAAA,CAAK,eAAA,CAAgB,OAAA,CAAQ,UAAU,CAAA;AAAA,EAClD;AAAA,EAEO,OAAA,GACP;AAEI,IAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,IAAC,KAAK,eAAA,GAA2B,IAAA;AAAA,EACrC;AACJ;AAAA;AArDa,eAAA,CAGK,SAAA,GAAY;AAAA,EACtB,IAAA,EAAM;AAAA,IACF,aAAA,CAAc;AAAA,GAClB;AAAA,EACA,IAAA,EAAM;AACV,CAAA;;;;"}