Я использую DirectCompute для общих вычислений на GPU. В настоящее время я пытаюсь работать с текстурой с разрешением 1920x1080. У меня есть Dispatch(2, 1080, 1) и numthreads(960, 1, 1), которые по моим расчетам точно покрывают мое изображение с одним потоком на пиксель.
Теперь, как я понимаю, все потоки должны запускаться одновременно, верно? Однако в моем коде я не выполняю никаких вычислений, если пиксель черный. Поэтому я заметил определенное увеличение производительности, когда большая часть моего изображения черная. Однако, если один объект загораживает экран, производительность резко падает.
Мой вопрос: если все потоки работают параллельно, скорость обработки кадра будет определяться наименее производительным потоком, по сути, потоки, работающие с черными пикселями, будут бездействовать, верно? Так почему же тогда я вижу замедление при обработке большего количества пикселей? Они должны делать это одновременно. Или я все неправильно понял?
Любая помощь будет оценена по достоинству.