【问题标题】:wgpu Compute Write Direct to Surface Texture Viewwgpu 计算直接写入表面纹理视图
【发布时间】:2023-01-02 13:01:00
【问题描述】:

我对使用 gpu api 比较陌生,对 wgpu 来说甚至是新手,并且想弄乱绘制到表面的计算着色器。 不过,好像直接不允许这样吧?

在运行时尝试从表面创建到纹理视图的绑定时,会出现一个错误,指出 STORAGE BINDING 位是必需的,但是不允许在表面配置期间定义它。我还尝试让着色器将纹理接受为常规纹理而不是存储纹理,但这会带来绑定无效的自身错误。

直接写入表面纹理有什么好的方法,还是需要单独创建一个存储纹理?引擎盖下的渲染管道是否不直接写入表面的纹理视图? 如果是单独的纹理(我猜是),是否有最佳方法可遵循?

【问题讨论】:

  • 请提供足够的代码,以便其他人可以更好地理解或重现问题。
  • 我不确定我是否理解这个问题。但是......你正在尝试做的事情对我来说并没有真正的意义。如果你想写入表面纹理,你应该使用标准着色器而不是计算着色器。因为这正是他们的目的。

标签: rust graphics compute-shader wgpu-rs


【解决方案1】:

计算着色器不能直接写入表面纹理,这是片段着色器的职责。

由于交换链使用双缓冲或多缓冲技术,表面纹理在帧与帧之间发生变化;另外,surface texture的用法是RENDER_ATTACHMENT,也就是说只能用于RenderPass的color_attachments;

Compute shader只能输出Storaga BufferStorage Texture,这两类数据可以绑定到一个fragment shader上使用。

【讨论】:

    猜你喜欢
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 2015-01-22
    相关资源
    最近更新 更多