默认 ComputeBuffer 类型(结构化缓冲区)。
在 HLSL 着色器中,它映射到StructuredBuffer<T>
或 RWStructuredBuffer<T>
。
构建这种类型的 ComputeBuffer 时,stride
的值必须与 HLSL 代码中相应的 StructuredBuffer
结构类型的跨距相匹配。stride
的值还必须是 4 的倍数,且小于 2048。
为了满足某些平台的要求并避免性能问题,stride
应为 16 的倍数。使用 float4 和 float4x4 变量创建 16 的倍数,并在其中放入较小的变量。避免使用“填充”变量来创建 16 的倍数,例如使用 float3 变量填充仅包含一个 float 的结构,因为某些数据类型在不同平台上可能具有不同的大小。
如果您使用各种变量大小,着色器结构化缓冲区的数据布局可能因图形 API 而异。这意味着 ComputeShader.SetBuffer 或 Material.SetBuffer 可能覆盖数据或将变量设置为错误的值。有关详细信息,请参阅 针对不同图形 API 编写着色器。
请参阅 Microsoft 的 HLSL 文档,了解 StructuredBuffer 和 RWStructuredBuffer。
其他资源:ComputeBuffer、ComputeShader、Material.SetBuffer。