Function createCapture

  • Creates a texture and buffer to use as a capture.

    Parameters

    • device: GPUDevice

      The device to use for creating the capture.

    • width: number

      The width of the capture texture.

    • height: number

      The height of the capture texture.

    Returns CreateCapture

    The texture to render to and buffer to read from.

    import { createCapture } from "@std/webgpu/create-capture";
    import { getRowPadding } from "@std/webgpu/row-padding";

    const adapter = await navigator.gpu.requestAdapter();
    const device = await adapter?.requestDevice()!;

    const dimensions = {
    width: 200,
    height: 200,
    };

    const { texture, outputBuffer } = createCapture(device, dimensions.width, dimensions.height);

    const encoder = device.createCommandEncoder();
    encoder.beginRenderPass({
    colorAttachments: [
    {
    view: texture.createView(),
    storeOp: "store",
    loadOp: "clear",
    clearValue: [1, 0, 0, 1],
    },
    ],
    }).end();

    const { padded } = getRowPadding(dimensions.width);

    encoder.copyTextureToBuffer(
    {
    texture,
    },
    {
    buffer: outputBuffer,
    bytesPerRow: padded,
    },
    dimensions,
    );

    device.queue.submit([encoder.finish()]);

    // outputBuffer contains the raw image data, can then be used
    // to save as png or other formats.