Я сталкиваюсь с развертыванием цикла рендеринга Metal как цепочки из нескольких шейдеров KCS (ядро / вычисление) и шейдеров VFS (вершин / фрагментов):
texture -> [KCS -> VFS -> KCS -> VFS] --\
--->[KCS -> KCS] --> presentable
texture -> [KCS -> VFS -> KCS -> VFS] --/
Выходные данные одного шейдера являются входными данными для следующего. Два набора из 4 чередующихся шейдеров объединяются ближе к концу, как показано.
Если я правильно обдумываю это, мне понадобится до 10 разрозненных дескрипторов конвейера, чтобы это произошло, а также множество вызовов обработчиков завершения, в которых будет отправлен следующий шейдер.
Я тоже не указал на это, но последний вызов Presentable также будет передавать подобласть его вывода в отдельный MTKView (через вершинный / фрагментный шейдер).
Мы будем благодарны за любые подсказки.