版本:Unity 6 (6000.0)
语种英语
  • C#

ComputeBufferType.Default

建议改进

成功!

感谢您帮助我们提高 Unity 手册的质量。虽然我们无法接受所有提交的内容,但我们确实会阅读用户建议的每处修改,并在适用情况下进行更新。

关闭

提交失败

由于某种原因,无法提交您建议的修改。请在几分钟后重试。感谢您花时间帮助我们提高 Unity 手册的质量。

关闭

取消

说明

默认 ComputeBuffer 类型(结构化缓冲区)。

在 HLSL 着色器中,它映射到StructuredBuffer<T>RWStructuredBuffer<T>

构建这种类型的 ComputeBuffer 时,stride 的值必须与 HLSL 代码中相应的 StructuredBuffer 结构类型的跨距相匹配。

stride 的值还必须是 4 的倍数,且小于 2048。

为了满足某些平台的要求并避免性能问题,stride 应为 16 的倍数。使用 float4 和 float4x4 变量创建 16 的倍数,并在其中放入较小的变量。避免使用“填充”变量来创建 16 的倍数,例如使用 float3 变量填充仅包含一个 float 的结构,因为某些数据类型在不同平台上可能具有不同的大小。

如果您使用各种变量大小,着色器结构化缓冲区的数据布局可能因图形 API 而异。这意味着 ComputeShader.SetBufferMaterial.SetBuffer 可能覆盖数据或将变量设置为错误的值。有关详细信息,请参阅 针对不同图形 API 编写着色器

请参阅 Microsoft 的 HLSL 文档,了解 StructuredBufferRWStructuredBuffer

其他资源:ComputeBufferComputeShaderMaterial.SetBuffer