Передача текстуры на основе графического процессора веб-работнику ничего не ускорит, на самом деле это будет значительно медленнее.
Передача памяти из графического процессора в ЦП (и ЦП в ГП) также происходит очень медленно по сравнению с выполнением всех операций на ГП. Единственный способ передать содержимое текстуры работнику - попросить WebGL скопировать из графического процессора в ЦП (используя gl.readPixels
в трех, независимо от того, является ли это оболочкой для gl.readPixels
), а затем передать результат работнику. , Тогда на рабочем месте все, что вы могли бы сделать, - это медленное размытие на основе ЦП (медленнее, чем это было бы на GPU), затем вам пришлось бы перенести его обратно в основной поток, только чтобы загрузить его снова через gl.texImage2D
или сказать Three.js сделать это для вас, что также является медленной операцией копирования данных из ЦП обратно в графический процессор.
Самый быстрый способ применить размытие - это сделать это на GPU.
Кроме того, нет возможности совместно использовать ресурсы WebGL между основным потоком и рабочим, и вряд ли это произойдет в ближайшее время. Даже если бы вы могли совместно использовать ресурс, а затем от работника, попросите графический процессор сделать размытие, которое не сэкономило бы время, а также, по большей части, графические процессоры не выполняют разные операции параллельно (обычно не многопроцессорные, как процессоры), поэтому все, что вам нужно сделать, это попросить графический процессор выполнить тот же объем работы.