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.93 kB
{"version":3,"file":"GpuMeshAdapter.mjs","sources":["../../../../src/scene/mesh/gpu/GpuMeshAdapter.ts"],"sourcesContent":["import { ExtensionType } from '../../../extensions/Extensions';\nimport { Matrix } from '../../../maths/matrix/Matrix';\nimport { compileHighShaderGpuProgram } from '../../../rendering/high-shader/compileHighShaderToProgram';\nimport { localUniformBit } from '../../../rendering/high-shader/shader-bits/localUniformBit';\nimport { roundPixelsBit } from '../../../rendering/high-shader/shader-bits/roundPixelsBit';\nimport { textureBit } from '../../../rendering/high-shader/shader-bits/textureBit';\nimport { Shader } from '../../../rendering/renderers/shared/shader/Shader';\nimport { Texture } from '../../../rendering/renderers/shared/texture/Texture';\nimport { warn } from '../../../utils/logging/warn';\n\nimport type { WebGPURenderer } from '../../../rendering/renderers/gpu/WebGPURenderer';\nimport type { Mesh } from '../shared/Mesh';\nimport type { MeshAdaptor, MeshPipe } from '../shared/MeshPipe';\n\n/**\n * The WebGL adaptor for the mesh system. Allows the Mesh System to be used with the WebGl renderer\n * @category rendering\n * @ignore\n */\nexport class GpuMeshAdapter implements MeshAdaptor\n{\n /** @ignore */\n public static extension = {\n type: [\n ExtensionType.WebGPUPipesAdaptor,\n ],\n name: 'mesh',\n } as const;\n\n private _shader: Shader;\n\n public init(): void\n {\n const gpuProgram = compileHighShaderGpuProgram({\n name: 'mesh',\n bits: [\n localUniformBit,\n textureBit,\n roundPixelsBit,\n ]\n });\n\n this._shader = new Shader({\n gpuProgram,\n resources: {\n uTexture: Texture.EMPTY._source,\n uSampler: Texture.EMPTY._source.style,\n textureUniforms: {\n uTextureMatrix: { type: 'mat3x3<f32>', value: new Matrix() },\n }\n }\n });\n }\n\n public execute(meshPipe: MeshPipe, mesh: Mesh)\n {\n const renderer = meshPipe.renderer as WebGPURenderer;\n\n let shader: Shader = mesh._shader;\n\n if (!shader)\n {\n shader = this._shader;\n\n shader.groups[2] = renderer.texture.getTextureBindGroup(mesh.texture);\n }\n else if (!shader.gpuProgram)\n {\n // #if _DEBUG\n warn('Mesh shader has no gpuProgram', mesh.shader);\n // #endif\n\n return;\n }\n\n const gpuProgram = shader.gpuProgram;\n // GPU..\n\n if (gpuProgram.autoAssignGlobalUniforms)\n {\n shader.groups[0] = renderer.globalUniforms.bindGroup;\n }\n\n if (gpuProgram.autoAssignLocalUniforms)\n {\n const localUniforms = meshPipe.localUniforms;\n\n shader.groups[1] = (renderer as WebGPURenderer)\n .renderPipes.uniformBatch.getUniformBindGroup(localUniforms, true);\n }\n\n renderer.encoder.draw({\n geometry: mesh._geometry,\n shader,\n state: mesh.state\n });\n }\n\n public destroy(): void\n {\n this._shader.destroy(true);\n this._shader = null;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;AAmBO,MAAM,cAAA,CACb;AAAA,EAWW,IAAA,GACP;AACI,IAAA,MAAM,aAAa,2BAAA,CAA4B;AAAA,MAC3C,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM;AAAA,QACF,eAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA;AACJ,KACH,CAAA;AAED,IAAA,IAAA,CAAK,OAAA,GAAU,IAAI,MAAA,CAAO;AAAA,MACtB,UAAA;AAAA,MACA,SAAA,EAAW;AAAA,QACP,QAAA,EAAU,QAAQ,KAAA,CAAM,OAAA;AAAA,QACxB,QAAA,EAAU,OAAA,CAAQ,KAAA,CAAM,OAAA,CAAQ,KAAA;AAAA,QAChC,eAAA,EAAiB;AAAA,UACb,gBAAgB,EAAE,IAAA,EAAM,eAAe,KAAA,EAAO,IAAI,QAAO;AAAE;AAC/D;AACJ,KACH,CAAA;AAAA,EACL;AAAA,EAEO,OAAA,CAAQ,UAAoB,IAAA,EACnC;AACI,IAAA,MAAM,WAAW,QAAA,CAAS,QAAA;AAE1B,IAAA,IAAI,SAAiB,IAAA,CAAK,OAAA;AAE1B,IAAA,IAAI,CAAC,MAAA,EACL;AACI,MAAA,MAAA,GAAS,IAAA,CAAK,OAAA;AAEd,MAAA,MAAA,CAAO,OAAO,CAAC,CAAA,GAAI,SAAS,OAAA,CAAQ,mBAAA,CAAoB,KAAK,OAAO,CAAA;AAAA,IACxE,CAAA,MAAA,IACS,CAAC,MAAA,CAAO,UAAA,EACjB;AAEI,MAAA,IAAA,CAAK,+BAAA,EAAiC,KAAK,MAAM,CAAA;AAGjD,MAAA;AAAA,IACJ;AAEA,IAAA,MAAM,aAAa,MAAA,CAAO,UAAA;AAG1B,IAAA,IAAI,WAAW,wBAAA,EACf;AACI,MAAA,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,GAAI,QAAA,CAAS,cAAA,CAAe,SAAA;AAAA,IAC/C;AAEA,IAAA,IAAI,WAAW,uBAAA,EACf;AACI,MAAA,MAAM,gBAAgB,QAAA,CAAS,aAAA;AAE/B,MAAA,MAAA,CAAO,MAAA,CAAO,CAAC,CAAA,GAAK,QAAA,CACf,YAAY,YAAA,CAAa,mBAAA,CAAoB,eAAe,IAAI,CAAA;AAAA,IACzE;AAEA,IAAA,QAAA,CAAS,QAAQ,IAAA,CAAK;AAAA,MAClB,UAAU,IAAA,CAAK,SAAA;AAAA,MACf,MAAA;AAAA,MACA,OAAO,IAAA,CAAK;AAAA,KACf,CAAA;AAAA,EACL;AAAA,EAEO,OAAA,GACP;AACI,IAAA,IAAA,CAAK,OAAA,CAAQ,QAAQ,IAAI,CAAA;AACzB,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAAA,EACnB;AACJ;AAAA;AApFa,cAAA,CAGK,SAAA,GAAY;AAAA,EACtB,IAAA,EAAM;AAAA,IACF,aAAA,CAAc;AAAA,GAClB;AAAA,EACA,IAAA,EAAM;AACV,CAAA;;;;"}