createMsaa static method

GpuTexture createMsaa({
  1. required int width,
  2. required int height,
  3. int samples = 4,
})

Implementation

static GpuTexture createMsaa({required int width, required int height, int samples = 4}) {
  final wgpu = WebgpuRend.instance.wgpu;
  return using((arena) {
    final desc = arena<WGPUTextureDescriptor>();
    desc.ref.label.data = nullptr;
    desc.ref.size.width = width;
    desc.ref.size.height = height;
    desc.ref.size.depthOrArrayLayers = 1;
    desc.ref.mipLevelCount = 1;
    desc.ref.sampleCount = samples;
    desc.ref.dimension = WGPUTextureDimension.WGPUTextureDimension_2D;
    // MSAA textures are RenderAttachments only, never copied directly
    desc.ref.usage = WGPUTextureUsage_RenderAttachment;
    desc.ref.format = kPreferredTextureFormat; // Must match screen format

    final handle = wgpu.wgpuDeviceCreateTexture(WebgpuRend.instance.device, desc);
    final viewHandle = wgpu.wgpuTextureCreateView(handle, nullptr);

    return GpuTexture._(handle.cast(), -1, handle, viewHandle, width, height, false);
  });
}