Доступ к графическому процессору через веб-браузер

Сегодня я встретил это доказательство концепции (на TechCrunch.com) и был потрясен и заинтригован тем, как им удалось достичь конечного результата. Они заявляют, что они не используют webGL или любые плагины, но они могут напрямую взаимодействовать с графическим процессором и визуализировать 3D-изображения со скоростью до 60 кадров в секунду, используя только Javascript. Любые идеи о том, как это можно сделать, или как получить доступ к графическому процессору от Javascript вообще без использования плагинов?

Адрес сайта: famo.us

ps: попробуйте использовать клавиши со стрелками, чтобы сдвинуть ориентацию в сторону.

Ответ 1

Они используют стандартные API HTML5 Javascript для достижения этого.

Я видел несколько ссылок на requestAnimationFrame в своем коде. Этот метод позволяет использовать совместимый браузер для отображения более гибкой и оптимизированной анимации с гораздо более высокой частотой кадров, чем анимации на основе setInterval, которые когда-либо позволят вам иметь. Это, безусловно, достигается с помощью графического процессора и имеющегося оборудования.

Графический процессор или любой другой аппаратный компонент не могут быть доступны напрямую с использованием любых Javascript-подпрограмм. Вместо этого браузер, основанный на вызываемых директивах JS и контексте выполнения, будет использовать GPU, если возможно, для оптимизации некоторых конкретных обработок, исчисления и визуализации.

Ответ 2

Относительно famo.us: они проанализировали узкие места в канале рендеринга Webkit, а затем нашли способ обойти их при построении страниц. В основном: построение дерева DOM, построение дерева рендеринга, макет дерева рендеринга исключаются. Посмотрите эту статью для полного объяснения.

enter image description here

Ответ 3

Они используют преобразования CSS 3D. Веб-браузеры все чаще используют аппаратное ускорение для выполнения подобных видов CSS3.

Ответ 4

Я думаю, что библиотека webgl glsl.js может быть хороша для этого, хотя я havnt видел тесты... https://github.com/gre/glsl.js/

также этот подход кажется жизнеспособным;

в основном использовать gpu так, как нам нравится, используются аппаратные оптимизированные функции (немного заглядывайте в "blas" ), вы не хотите их писать! странно кажется, что люди все еще используют старый fortran blas.... есть кое-что с компиляцией через llvm, а затем с использованием emscripten, чтобы превратить его в javascript. Использовать Emscripten с Fortran: привязка LAPACK

emscripten-путь кажется наиболее универсальным, я просто хочу его проверить, но он похож на гору, и эта тема кажется скорее призывом к оружию, emscripten работает только с fortran, если вы его взломали (см. ссылки со второй ссылки). Я думаю, что мы ищем поддержку blas в javascript, это не закрытая проблема, и для некоторых из нас здесь очень сложно! надеюсь, у кого-то есть ссылка на эти библиотеки blas, которые мы не можем найти... пожалуйста, дайте мне знать, если у меня не будет головы вокруг этой проблемы, js является новым для меня.

также, предполагая, что html5 достаточно "оптимизирован" для использования аппаратного обеспечения, как мы можем доверять этому!? нам нужны оптимизированные blp (основные подпрограммы линейной алгебры), например gpu. точечный продукт.

Я думаю, может быть, также, что эти старые fortran blas на самом деле правильные вещи для современного gpu? node -cuda кажется очень вероятным, лучшее, что я нашел...