gfx-rs/wgpu wgsl 示例使用 @ 而不是 [[]]

Non*_*ios 3 rust wgpu-rs wgsl

这几天在学习wgpu,有一点比较困惑。当我浏览 wgpu 示例(https://github.com/gfx-rs/wgpu/tree/master/wgpu/examples)时,他们对其着色器使用以下语法:

struct VertexOutput {
    @location(0)       color:    vec4<f32>,
    @builtin(position) position: vec4<f32>,
}
Run Code Online (Sandbox Code Playgroud)

但我必须像这样编写我的着色器:

struct VertexOutput {
    [[location(0)]]       color:    vec4<f32>;
    [[builtin(position)]] position: vec4<f32>;
};
Run Code Online (Sandbox Code Playgroud)

@比起语法,我更喜欢[[]]语法。我的猜测是,这是我需要在 Cargo.toml 中启用的功能,但我无法找出这是什么功能。因此,如果有人能告诉我如何@在我的 wgsl 着色器中使用语法,我将不胜感激。

fra*_*pps 5

我猜您目前使用crates.iowgpu版本?0.12.0

该语法是规范@中新更新的语法。然而最新发布的版本仍然使用旧的语法。webgpuwgpu

如果您现在想使用新语法,您可以master像这样使用 git 的分支(在您的 中Cargo.toml):

wgpu = { git = "https://github.com/gfx-rs/wgpu" }
Run Code Online (Sandbox Code Playgroud)

更新

wgpu版本0.13同时发布,因此您现在可以使用

wgpu = "0.13"
Run Code Online (Sandbox Code Playgroud)

获取新的 wgsl 语法。