首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wgsl Naga -我如何使用内置textureStore()与texture_storage_2d<rgba8uint,write>?

Wgsl Naga -我如何使用内置textureStore()与texture_storage_2d<rgba8uint,write>?
EN

Stack Overflow用户
提问于 2021-12-17 10:27:09
回答 1查看 423关注 0票数 1

Naga验证此代码段:

代码语言:javascript
复制
    [[group(0), binding(0)]] var output :
    texture_storage_2d<rgba8unorm,write>;
    
    [[stage(compute), workgroup_size(1)]]
    fn main() {
        textureStore(output, vec2<i32>(10,10), vec4<f32>(10.,5.,100.,200.));
    }

rgba8unorm替换为rgba8uint会导致naga抛出错误。

代码语言:javascript
复制
Entry point main at Compute is invalid:     The value [9] can not be stored
    Generating SPIR-V output requires validation to succeed, and it failed in a previous step

我尝试了不同的标量组合和vec4<>在textureStore: i32,u32,f32,但没有运气。

问题是:如何使用内置函数textureStore()texture_storage_2d而不是texture_storage_2d

编辑:下面是丹的答案,我尝试了以下方法

代码语言:javascript
复制
[[group(0), binding(0)]] var output :
    texture_storage_2d<rgba8uint,write>;
    
    [[stage(compute), workgroup_size(1)]]
    fn main() {
        textureStore(output, vec2<i32>(10,10), vec4<u32>(10u,5u,10u,20u));
    } 

它起作用了!

我试着用textureStore(输出,vec2(10,10),vec4(10,5,10,20))失败,忘记了textureStore中的u等等。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-17 20:31:20

要在rgba8uint中存储,需要使用vec4<u32>类型。有关每个纹理存储的对应类型,请参见这里。如果这不起作用,你可能会有不同的问题。(你是把10.等送到vec4<u32>吗?)应该是10u。Wgsl对类型非常严格。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70391717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档