я собираюсь добавить поддержку Compute Shader моих кодовые и имеющие проблемы с поиском ответов на некоторые довольно основные вопросы:Compute Shader основы в DX11
Вся документация там говорит, что трубопровод Compute Shader работает независимо от GPU, однако все образцы кода dx11 используют контекстный интерфейс устройства для установки самого шейдера, представлений ресурсов и вызова метода dispatch(), поэтому они попадают в очередь в командном буфере с остальными командами рендеринга или они выполняются независимо?
Следуя за вопросом 1, могу ли я вызывать вычислительные шейдеры из нескольких потоков или мне нужно буферизировать все команды командного процессора и выдавать их в потоке, на котором был создан непосредственный контекст устройства?
Синхронизация. В большинстве статей используется команда CopyResource, которая будет автоматически синхронизировать завершение выполнения вычисляемого шейдера и предоставить доступ к ЦП для результатов, но похоже, что это также заблокировало бы GPU. Есть ли более эффективный способ синхронизации?
Я знаю, что могу найти ответы на это, экспериментируя, но любая помощь, которая экономит мне время, будет оценена по достоинству.
Я вижу, так что происходит, когда я называю Present()? Соответствует ли конвейер Compute Shader таким же, как конвейер рендеринга? Значение – Rincer
Я вижу, так что произойдет, если у меня есть очередь вычислений в очереди, и я вызываю Present()? Будет ли он останавливаться, пока вычислительный шейдер не завершит выполнение? В принципе, возможно запустить вычислительный шейдер, который охватывает многострочные рамки рендеринга? – Rincer