Как правильно хранить данные о постоянстве на пиксель в ядре вычислений Metal? - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь реализовать алгоритм вычитания фона MoG на основе реализации opencv cuda

Что мне нужно, так это поддерживать набор параметров Гаусса независимо для каждого положения пикселя в нескольких кадрах. В настоящее время я просто выделяю один большой MTLBuffer для выполнения работы, и в каждом кадре я должен вызывать commandEncoder.setBuffer API. Есть ли способ лучше? Я читал об имиджблоке, но не уверен, что он актуален.

Кроме того, я был бы очень рад, если бы вы могли найти какие-либо вещи, которые не должны быть прямо переведены с куда на металл.

1 Ответ

0 голосов
/ 07 ноября 2018

Выделите 8-битную текстуру и сохраните промежуточные значения в текстуру в вашем вычислительном шейдере. Затем после рендеринга этой текстуры вы можете привязать ее как входную текстуру к любым другим методам, которые необходимо прочитать из остальной части рендера. Вы можете найти очень подробный пример такого рода вещей в этом примере проекта github с параллельной суммой префикса поверх Metal. В этом примере также показано, как написать регрессионные тесты XCTest для ваших шейдеров Metal. Github MetalPrefixSum

...