UNPKG

@animech-public/playcanvas

Version:
2 lines (1 loc) 866 B
import{BindGroup as i}from"../bind-group.js";import{UniformBuffer as o}from"../uniform-buffer.js";class r{constructor(r){this.uniformBuffers=[],this.bindGroup=null,this.compute=r;const{device:t,shader:s}=r,{computeBindGroupFormat:e,computeUniformBufferFormats:n}=s.impl;if(this.bindGroup=new i(t,e),n)for(const i in n)if(n.hasOwnProperty(i)){const r=new o(t,n[i],!0);this.uniformBuffers.push(r),this.bindGroup.setUniformBuffer(i,r)}this.pipeline=t.computePipeline.get(s,e)}destroy(){this.uniformBuffers.forEach((i=>i.destroy())),this.uniformBuffers.length=0,this.bindGroup.destroy(),this.bindGroup=null}updateBindGroup(){const{bindGroup:i}=this;i.updateUniformBuffers(),i.update()}dispatch(i,o,r){const t=this.compute.device;t.setBindGroup(0,this.bindGroup);const s=t.passEncoder;s.setPipeline(this.pipeline),s.dispatchWorkgroups(i,o,r)}}export{r as WebgpuCompute};