create static method

GpuSampler create({
  1. WGPUAddressMode addressMode = WGPUAddressMode.WGPUAddressMode_ClampToEdge,
  2. WGPUFilterMode filter = WGPUFilterMode.WGPUFilterMode_Linear,
  3. WGPUCompareFunction compare = WGPUCompareFunction.WGPUCompareFunction_Undefined,
})

Implementation

static GpuSampler create({
  WGPUAddressMode addressMode = WGPUAddressMode.WGPUAddressMode_ClampToEdge,
  WGPUFilterMode filter = WGPUFilterMode.WGPUFilterMode_Linear,
  WGPUCompareFunction compare =
      WGPUCompareFunction.WGPUCompareFunction_Undefined,
}) {
  final wgpu = WebgpuRend.instance.wgpu;
  return using((arena) {
    final desc = arena<WGPUSamplerDescriptor>();
    desc.ref.label.data = nullptr;
    desc.ref.label.length = 0;
    desc.ref.magFilter = filter;
    desc.ref.minFilter = filter;
    desc.ref.mipmapFilter = filter == WGPUFilterMode.WGPUFilterMode_Linear
        ? WGPUMipmapFilterMode.WGPUMipmapFilterMode_Linear
        : WGPUMipmapFilterMode.WGPUMipmapFilterMode_Nearest;
    desc.ref.addressModeU = addressMode;
    desc.ref.addressModeV = addressMode;
    desc.ref.addressModeW = addressMode;
    desc.ref.lodMinClamp = 0.0;
    desc.ref.lodMaxClamp = 1000.0;
    desc.ref.compare = compare;
    desc.ref.maxAnisotropy = 1;
    final handle =
        wgpu.wgpuDeviceCreateSampler(WebgpuRend.instance.device, desc);
    return GpuSampler._(handle.cast());
  });
}