WebGL работает на стандарте OpenGL ES 3 или OpenGL ES 2 зависит от версии WebGL. Эти версии возвращают только посчитанный кадр.
Если хочешь вернуть данные вставь данные в возвращаемый кадр (RGB это целых три байта на пиксель). А со стороны JS ты можешь получить поток байтов кадра как canvas.imageData.data
Хранить данные в GPU проще всего в сгенерированной текстуре (glGenTextures) а когда данные нужно передать просто отображаешь текстуру на кадр.
Цитата:
|
может с помощью web worker
|
Это не паральное исполнение а раздельное. Именно потому что JS не пригоден для параллельных вычислений и придумали специально АПИ которое запускает отдельные и независимые скрипты не создавая отдельные страницы (раньше для этого использовали iframe).
Конечно паралельность исполнения это довольно абстрактное понятие но JS никогда не сможет работать с одними и теми же данными из разных потоков исполнения как в компилируемых языках.