用途:在 WebGPU 中为 uniform 或 storage 缓冲区布局 WGSL 结构体,使宿主端类型化数组写入的字节偏移与着色器读取一致,并选择正确的地址空间,规避 vec3 的 16 字节对齐陷阱。
主要能力:梳理 WGSL 六种地址空间(function、private、workgroup、uniform、storage、handle)及其访问模式与是否可宿主共享;给出各类型的 AlignOf 与 SizeOf 规则;说明 uniform 地址空间类似 std140 的额外约束(数组元素步长须为 16 的倍数、结构体或数组成员须从 16 字节倍数处开始);提供 @align、@size、指针参数、运行时长度数组等模式。
使用方式:按决策树选择地址空间;布局宿主匹配结构体时,从 AlignOf 计算每个偏移,并按结构体向上取整后的 SizeOf 设置 Float32Array 大小;vec3 后成员跳到下一个 16 字节偏移;uniform 中 array<scalar, N> 每元素填充到 16 字节步长,应改用 array<vec4<f32>, N> 或移入 storage;运行时长度数组只能作为 storage 结构体的最后一个成员,用 arrayLength(&ptr) 取长度;需回写调用者内存时传 ptr 并用 * 解引用。
适用场景:编写 WebGPU 着色器与宿主端缓冲区交互、调试布局错位导致的读取异常。
限制:不涉及宿主端拷贝对齐(256 字节动态偏移、256 字节 bytesPerRow),该部分由 webgpu-core-memory-model 覆盖;uniform 地址空间只读,不能从着色器写入。具体平台与版本信息资料未完整提供。