You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VK_ACCESS_SHADER_READ_BIT与VK_ACCESS_MEMORY_READ_BIT的区别及使用疑问

着色器读取前数据传输的同步位选择

核心结论

针对着色器读取数据前的传输同步,需根据资源的访问场景选择对应标记,两者的适用场景不同:

不同资源类型的选择逻辑

  • 索引缓冲区、顶点输入:这类资源由图形管线的固定功能阶段读取,并非着色器直接访问,需使用 MEMORY_READ 确保传输完成后管线能获取到最新数据。
  • 存储缓冲区、统一缓冲区:若仅由着色器(顶点/片段/计算着色器)读取,仅需使用 SHADER_READ 标记;如果同时存在CPU端的读取需求,才需要额外搭配 MEMORY_READ。
  • 采样图像(纹理、采样器等):着色器通过采样器访问时,使用 SHADER_READ 即可完成同步;只有当CPU需要读取该图像数据时,才需要补充 MEMORY_READ。

计算着色器的规则

计算着色器遵循完全一致的同步规则:

  • 当计算着色器读取存储缓冲区、统一缓冲区、采样图像时,使用 SHADER_READ 同步传输操作即可;
  • 若涉及CPU读取计算着色器输出的缓冲区这类非着色器阶段的内存访问,才需要使用 MEMORY_READ。

内容的提问来源于stack exchange,提问作者Zebrafish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 00:02:32