Объявление
public void SetConstantBuffer(int nameID, ComputeBuffer buffer, int offset, int size);public void SetConstantBuffer(string name, ComputeBuffer buffer, int offset, int size);
public void SetConstantBuffer(int nameID, GraphicsBuffer buffer, int offset, int size);
public void SetConstantBuffer(string name, GraphicsBuffer buffer, int offset, int size);
Параметры
nameID | The ID of the property name for the constant buffer in shader code. Use Shader.PropertyToID, чтобы получить этот идентификатор. |
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 и т.п., если указанный идентификатор имени свойства указывает на переменную внутри переопределенного буфера констант, не будут иметь никакого эффекта.
Постоянный буфер, указанный в качестве аргумента, может использоваться только шейдерами, определенными в файле .raytrace, связанном с RayTracingShader. Если буфер констант должен быть виден во всех типах шейдеров трассировки лучей (closesthit, anyhit, miss и т. д.), необходимо использовать Shader.SetGlobalConstantBuffer.