nameID | 着色器代码中常量缓冲区属性名称的 ID。使用 Shader.PropertyToID 获取此 ID。 |
name | 着色器代码中常量缓冲区的名称。 |
buffer | 要绑定为常量缓冲区的缓冲区。 |
offset | 从 ComputeBuffer 或 GraphicsBuffer 开始绑定的字节偏移量。必须是 SystemInfo.constantBufferOffsetAlignment 的倍数,如果该值为 0,则为 0。 |
size | 要绑定的字节数。 |
绑定通过 ComputeBuffer 或 GraphicsBuffer 创建的常量缓冲区。
使用此方法将给定常量缓冲区中的所有着色器参数覆盖为给定 ComputeBuffer 或 GraphicsBuffer 的内容。
当使用 ComputeBuffer 作为参数时,它必须使用 ComputeBufferType.Constant 标志创建。类似地,当使用 GraphicsBuffer 作为参数时,它必须使用 GraphicsBuffer.Target.Constant 标志创建。常量缓冲区的数据布局必须与 ComputeBuffer 或 GraphicsBuffer 中提供的数据完全匹配。
如果不满足上述条件,缓冲区可能无法正确绑定,因此会拾取常规参数。或者可能会出现视觉伪影。
在使用非空 ComputeBuffer 或 GraphicsBuffer 调用此函数后,您将无法再手动设置覆盖的常量缓冲区中变量的值。调用 RayTracingShader.SetFloat 以及类似方法(其中给定的属性名称 ID 指向覆盖的常量缓冲区中的变量)将无效。
只有在 .raytrace 文件中定义的着色器才能访问您指定为此方法参数的常量缓冲区。要使此缓冲区可供所有光线追踪着色器类型(最近命中、任何命中、未命中等)访问,请改为调用 Shader.SetGlobalConstantBuffer 方法。