Мои Уведомления
Привет, !
Мой Аккаунт Мои Финансы Мои Подписки Мои Настройки Выход
Руководство API скрипты

RayTracingShader.SetConstantBuffer

Экспериментальный: этот API является экспериментальным и может быть изменен или удален в будущем.

Объявление

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.

Вы можете отблагодарить автора, за перевод документации на русский язык. ₽ Спасибо
API скрипты 2021.3