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

Объявление

public void DispatchIndirect(int kernelIndex, ComputeBuffer argsBuffer, uint argsOffset = 0);

public void DispatchIndirect(int kernelIndex, GraphicsBuffer argsBuffer, uint argsOffset = 0);

Параметры

kernelIndex Какое ядро запускать. У одного ресурса вычислительного шейдера может быть несколько точек входа ядра.
argsBuffer Буфер с аргументами отправки.
argsOffset Байтовое смещение в буфере, где начинаются аргументы отрисовки.

Описание

Выполнить вычислительный шейдер.

Эта функция «запускает» вычислительный шейдер, при этом заданный рабочий объем считывается непосредственно из графического процессора. Типичный пример использования – генерация произвольного объема данных из ComputeShader и последующая их отправка без необходимости обратного считывания в ЦП.

Буфер с аргументами, argsBuffer, должен содержать три целых числа при заданном смещении argsOffset: количество рабочих групп в X измерение, количество рабочих групп в измерении Y, количество рабочих групп в измерении Z.

В каждой рабочей группе выполняется несколько вызовов шейдера ("потоков"). Размер рабочей группы указывается в самом вычислительном шейдере (с помощью HLSL-атрибута «numthreads»), и общее количество вызовов вычислительного шейдера, таким образом, представляет собой количество групп, умноженное на размер группы потоков. Размер рабочей группы можно запросить с помощью функции GetKernelThreadGroupSizes.

Это очень похоже на Direct3D11 DispatchIndirect, OpenGL glDispatchComputeIndirect и эквивалентные функции в других графических API.

Смотрите так же: Dispatch, Graphics.DrawProceduralIndirect, ComputeBuffer.CopyCount, Compute Shaders.

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