Naga 验证这个片段:
[[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.));
}
用rgba8uint替换rgba8unorm会使 naga 抛出错误。
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
我在 textureStore: i32,u32,f32 中尝试了标量与 vec4<> 的不同组合,但没有运气。
问题是:如何使用内置函数textureStore()和 texture_storage_2d<rgba8uint,write>而不是texture_storage_2d<rgba8unorm,write>?
编辑:按照丹的回答我尝试了以下
[[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(output, vec2(10,10), vec4(10,5,10,20)); 失败了 我忘记了10 u ,5 u等中的u ...
谢谢。