标签: webgpu

为什么我的 wgpu 绑定组中只能有一个纹理绑定?

我目前有一个BindGroupandBindGroupLayout看起来像这样:

let bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor {
    label: None,
    entries: &[wgpu::BindGroupLayoutEntry {
        binding: 0,
        visibility: wgpu::ShaderStages::FRAGMENT,
        ty: wgpu::BindingType::Texture {
            sample_type: wgpu::TextureSampleType::Float { filterable: true },
            view_dimension: wgpu::TextureViewDimension::D2,
            multisampled: false,
        },
        count: None,
    }],
});

let bind_group = device.create_bind_group(&wgpu::BindGroupDescriptor {
    label: None,
    entries: &[wgpu::BindGroupEntry {
        binding: 0,
        resource: wgpu::BindingResource::TextureView(&target),
    }],
    layout: &bind_group_layout,
});
Run Code Online (Sandbox Code Playgroud)

并按预期工作。

对于上下文:我在渲染通道中使用它们来进行后处理。

现在我的着色器中还需要一个Sampler。首先我创建了Sampler

let linear_sampler = device.create_sampler(&wgpu::SamplerDescriptor {
    mag_filter: wgpu::FilterMode::Nearest,
    min_filter: wgpu::FilterMode::Nearest,
    mipmap_filter: wgpu::FilterMode::Nearest,
    ..Default::default()
});
Run Code Online (Sandbox Code Playgroud)

并将其添加到布局和绑定组中,如下所示:

let bind_group_layout = device.create_bind_group_layout(&wgpu::BindGroupLayoutDescriptor { …
Run Code Online (Sandbox Code Playgroud)

graphics rust webgpu wgpu-rs

3
推荐指数
1
解决办法
551
查看次数

如何在 webgpu 中创建 2d 剪贴蒙版?

我一直在研究一种创建剪贴蒙版的 webgpu 方法。

这是我尝试过的:

const pipeline1 = device.createRenderPipeline({
  vertex: {
    module: basicShaderModule,
    entryPoint: 'vertex_main',
    buffers: [{
      attributes: [{
        shaderLocation: 0,
        offset: 0,
        format: 'float32x2'
      }],
      arrayStride: 8,
      stepMode: 'vertex'
    }],
  },
  fragment: {
    module: basicShaderModule,
    entryPoint: 'fragment_main',
    targets: [{ format }]
  },
  primitive: {
    topology: 'triangle-strip',
  },
  layout: 'auto',
})
passEncoder.setPipeline(pipeline1);
const uniformValues1 = new Float32Array(4)
uniformValues1.set([1, 0, 0, 1], 0)
const uniformBuffer1 = device.createBuffer({
  size: uniformValues1.byteLength,
  usage: GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,
});
device.queue.writeBuffer(uniformBuffer1, 0, uniformValues1)
passEncoder.setBindGroup(0, device.createBindGroup({
  layout: pipeline1.getBindGroupLayout(0),
  entries: …
Run Code Online (Sandbox Code Playgroud)

2d mask stencil-buffer clip webgpu

2
推荐指数
1
解决办法
329
查看次数

Google chrome 和 Apple M1 中的计算着色器

我有一个用 wgpu/rust 编写的物理模拟器,当我从命令行运行时它可以工作。但是,当我尝试在 chrome v114 上运行(根据我在网上看到的支持)时,我收到以下错误,指出计算工作组的最大数量为零。我打印了适配器功能,得到以下信息:Limits { . . . max_compute_workgroup_storage_size: 0, max_compute_invocations_per_workgroup: 0, max_compute_workgroup_size_x: 0, max_compute_workgroup_size_y: 0, max_compute_workgroup_size_z: 0, max_compute_workgroups_per_dimension: 0, max_push_constant_size: 256 }

此外,抛出错误时控制台会转储以下内容: Version: WebGL 2.0 (OpenGL ES 3.0 Chromium)

我的适配器设置错误吗?或者 wgpu 还不支持浏览器中的计算着色器?欢迎任何建议。感谢大家。

编辑:以防万一这会破解代码,这些是我在本机运行时的设备功能。


...
max_compute_workgroup_storage_size: 16384, 
max_compute_invocations_per_workgroup: 256, max_compute_workgroup_size_x: 256, max_compute_workgroup_size_y: 256, max_compute_workgroup_size_z: 64, max_compute_workgroups_per_dimension: 65535, max_push_constant_size: 0 }```
Run Code Online (Sandbox Code Playgroud)

webgl rust webgpu rust-wasm wgpu-rs

2
推荐指数
1
解决办法
287
查看次数

WGPU 和 Dawn (WebGpu)

我试图了解 wgpu 和 Dawn 的一般概念。

据我了解,Khronos 的 WebGPU 标准有两种主要实现:Mozilla 的 wgpu 和 Google 的 Dawn。

我的理解是否正确:

-wgpu:它是一个 C/Rust 库,可以编译成操作系统的可执行文件和浏览器的 WebAssembly 代码吗?

-Dawn:只能为浏览器创建Web Assembly代码。

我还想问:wgpu 可以创建 WebAssembly 代码吗?wgpu 是否只转换其 API 代码或 C/C++ 代码?我想不通。

webgpu wgpu-rs

1
推荐指数
1
解决办法
2649
查看次数

标签 统计

webgpu ×4

wgpu-rs ×3

rust ×2

2d ×1

clip ×1

graphics ×1

mask ×1

rust-wasm ×1

stencil-buffer ×1

webgl ×1