2013-03-04 32 views
10

Ich bin heute (auf TechCrunch.com) auf diese Machbarkeitsstudie gestoßen und war überwältigt und fasziniert, wie sie das Endergebnis erreicht haben. Sie geben an, dass sie weder webGL noch Plugins verwenden, sondern direkt mit der GPU interagieren und 3D-Visuals mit bis zu 60 fps nur mit Javascript rendern können. Irgendwelche Ideen, wie dies gemacht werden könnte oder wie man auf die GPU von Javascript im Allgemeinen ohne die Verwendung von Plugins zugreifen kann?Zugriff auf die GPU über den Webbrowser

Site-Adresse lautet: famo.us

ps: Versuchen Sie Ihre Pfeiltasten Ausrichtung seiner weit zu verschieben !!

Antwort

15

Sie verwenden Standard HTML5 Javascript-APIs, um dies zu erreichen.

Ich sah mehrere Referenzen auf requestAnimationFrame in ihrem Code. Diese Methode ermöglicht eine, die einen kompatiblen Browser verwendet, um flüssigere und optimierte Animationen anzuzeigen, mit weit besseren Bildraten als setInterval basierten Animationen werden Sie jemals haben können. Dies wird sicherlich durch die Verwendung der GPU und des verfügbaren Hardware-Hintergrunds erreicht.

GPU oder jede andere Hardwarekomponente kann nicht direkt mit Javascript-Routinen aufgerufen werden. Stattdessen verwendet der Browser, basierend auf den aufgerufenen JS-Anweisungen und dem Ausführungskontext, die GPU , wenn möglich,, um einige spezielle Behandlungen, Berechnungen und Renderings zu optimieren.

+0

Danke, so dass sie nur Standard-HTML5-Funktionen verwenden? Ich bin jetzt etwas weniger beeindruckt, sie machen aus, als würden sie direkt über Javascript auf GPU-Hardware zugreifen. Natürlich begann ich über all die coolen Möglichkeiten nachzudenken, die sich ergeben würden, wenn das wahr wäre. Aahh gut. –

+0

Sie können sagen, dass sie die GPU verwenden, weil das irgendwie wahr ist. Nichtsdestoweniger erreichen sie dies selbst nicht, am Ende wird die einzige Anwendung, die wählen wird, ob die GPU oder irgendeine Art von verfügbarer Hardware-Interaktion verwendet wird, der Browser selbst sein. –

+0

sie sagen tatsächlich, dass sie einen Wrapper für jede Plattform benutzen, auf der sie laufen. Anstatt also CSS3 zu verwenden, verwenden sie requestAnimationFrame und normale HTML-Elemente, aber die 3D-Berechnungen werden in GPU durchgeführt. Betrachten Sie es als Phonegap für GPU :) wenn Sie so wollen. Sie erwähnen, dass der Wrapper auf xbox zum Beispiel in DirectX ist, während auf iOS in OpenGL. – memical

1

Sie verwenden CSS 3D-Transformationen. Webbrowser verwenden zunehmend Hardwarebeschleunigung, um diese Art von CSS3-Dingen auszuführen.

6

In Bezug auf famo.us: Sie haben die Engpässe der Webkit-Rendering-Pipe analysiert und dann eine Möglichkeit gefunden, sie beim Erstellen der Seiten zu umgehen. Grundsätzlich: Die DOM-Baum-Konstruktion, die Render-Baum-Konstruktion, das Layout des Render-Baumes werden umgangen. Werfen Sie einen Blick auf this article für eine ganze Erklärung.

enter image description here

1

Ich denke, die WebGL glsl.js Bibliothek könnte dies gut sein, obwohl ich gesehen Benchmarks havnt ... https://github.com/gre/glsl.js/

auch dieser Ansatz scheint lebensfähig;

grundsätzlich die gpu so zu verwenden, wie wir es gerne haben, hardwareoptimierte funktionen (hab ein wenig in "blas" geschaut) werden benutzt, du willst diese nicht schreiben! seltsamerweise scheint es so zu sein, dass die leute immer noch den alten fortran blas benutzen ... es gibt einige sachen mit compiling via llvm und dann benutze emscripten um es in javascript zu verwandeln. Use Emscripten with Fortran: LAPACK binding

die Emscripten Art und Weise scheint das vielseitigste, im nur über sie überprüfen, aber es sieht aus wie ein Berg, auch scheint dieses Thema so etwas wie ein Ruf zu den Waffen zu sein, Emscripten funktioniert nur mit Fortran, wenn Sie hacken es (siehe Links vom zweiten Link). Ich denke, was wir suchen, ist Blas-Unterstützung in Javascript, das ist kein geschlossenes Problem auf keinen Fall, und für einige von uns hier draußen ist es sehr frustrierend! hoffentlich hat jemand einen link zu diesen blas-bibliotheken, die wir nicht finden können ... bitte lassen sie mich wissen, wenn ich nicht meinen kopf rund um dieses problem haben, js ist neu für mich.

auch, was darauf hindeutet, HTML5 ist ausreichend "optimiert", um die Hardware zu verwenden, wie können wir diesem vertrauen? Wir brauchen GPU optimiertes Blas (grundlegende lineare Algebra-Unterprogramme), z. Skalarprodukt.

ich denke vielleicht auch, dass diese alten fortran blas arnt eigentlich das richtige für eine moderne gpu? node-cuda scheint sehr wahrscheinlich die beste Sache, die ich gefunden habe ...

Verwandte Themen