// Initialize WebGPU
static #device: GPUDevice | null = null
+ static #uboBuffer: GPUBuffer
static #gpuBuffer: GPUBuffer
static #cpuBuffer: GPUBuffer
static #bindGroupLayout: GPUBindGroupLayout
this.#device = device
// Create buffers for writing GPU calculations and reading from Javascript
+ this.#uboBuffer = this.#device.createBuffer({
+ size: 48,
+ usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST
+ })
this.#gpuBuffer = this.#device.createBuffer({
size: 16,
usage: GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_DST | GPUBufferUsage.COPY_SRC
const random = crypto.getRandomValues(new Uint32Array(1))[0]
uboView.setUint32(32, random, true)
uboView.setUint32(36, threshold, true)
- const uboBuffer = PowGpu.#device.createBuffer({
- size: uboView.byteLength,
- usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
- })
- PowGpu.#device.queue.writeBuffer(uboBuffer, 0, uboView)
+ PowGpu.#device.queue.writeBuffer(PowGpu.#uboBuffer, 0, uboView)
// Work buffer
const bindGroup = PowGpu.#device.createBindGroup({
{
binding: 0,
resource: {
- buffer: uboBuffer,
+ buffer: PowGpu.#uboBuffer
},
},
{
binding: 1,
resource: {
- buffer: PowGpu.#gpuBuffer,
+ buffer: PowGpu.#gpuBuffer
},
},
],