2013-03-04 1 views
10

Mi sono imbattuto in questa dimostrazione di concetto oggi (su TechCrunch.com) ed è stato spazzato via e incuriosito da come erano riusciti a raggiungere il risultato finale. Affermano che non usano webGL o alcun plugin, ma sono in grado di interagire direttamente con la GPU e renderizzare immagini 3D fino a 60 fps usando nient'altro che Javascript. Qualche idea su come questo potrebbe essere fatto, o come accedere alla GPU da Javascript in generale senza l'uso di plugin?Accesso alla GPU tramite browser web

indirizzo del sito è: famo.us

ps: Provare a utilizzare i tasti freccia per spostare l'orientamento suo lontano !!

risposta

15

Utilizzano le API Javascript standard HTML5 per ottenere ciò.

Ho visto diversi riferimenti a requestAnimationFrame nel loro codice. Questo metodo consente di utilizzare un browser compatibile, per visualizzare animazioni più fluide e ottimizzate, con un frame rate molto migliore di rispetto alle animazioni basate su setInterval. Questo è certamente ottenuto utilizzando la GPU e lo sfondo hardware disponibile.

GPU o ogni altro componente hardware non è possibile accedere direttamente utilizzando qualsiasi routine Javascript. Invece, il browser, in base alle direttive JS chiamate e al contesto di esecuzione, utilizzerà la GPU se possibile per ottimizzare alcuni trattamenti specifici, calcoli e rendering.

+0

Grazie, quindi stanno solo usando le funzioni standard HTML5? Sono leggermente meno impressionato ora, si rendono conto che stanno accedendo direttamente all'hardware GPU tramite Javascript. Naturalmente, ho iniziato a pensare a tutte le fantastiche possibilità che questo presenterebbe se fosse vero. Aahh bene. –

+0

Possono dire che stanno usando la GPU perché questo è in qualche modo vero. Tuttavia, non stanno ottenendo questo da soli, alla fine, l'unica applicazione che sceglierà se utilizzare la GPU o qualsiasi tipo di interazione hardware disponibile è il browser stesso. –

+0

dicono che usano un wrapper per ogni piattaforma su cui eseguono. quindi, invece di usare css3, usano requestAnimationFrame e normali elementi html, ma i calcoli 3D sono fatti in GPU. Pensalo come PhoneGap per GPU :) se vuoi. Dicono che su xbox per esempio il wrapper è in DirectX, mentre su iOS in OpenGL. – memical

1

Stanno usando trasformazioni 3D CSS. I browser Web utilizzano sempre più l'accelerazione hardware per fare questo tipo di cose su CSS3.

6

Per quanto riguarda famo.us: hanno analizzato i colli di bottiglia del tubo di rendering di Webkit e quindi hanno trovato un modo per aggirarli mentre costruivano le pagine. Fondamentalmente: la costruzione dell'albero DOM, la costruzione dell'albero di rendering, il layout dell'albero di rendering sono ignorati. Dai un'occhiata a this article per una spiegazione completa.

enter image description here

1

Credo che la biblioteca WebGL glsl.js potrebbe essere buono per questo, anche se i parametri di riferimento havnt visto ... https://github.com/gre/glsl.js/

anche questo approccio sembra fattibile;

fondamentalmente per utilizzare la gpu nel modo in cui ci piace, le funzioni ottimizzate per l'hardware (avere un piccolo sguardo su "blas") sono usate, non si vuole scriverle! stranamente sembra che la gente usi ancora i vecchi fortran blas .... ci sono alcune cose con la compilazione via llvm e poi l'uso di emscripten per trasformarlo in javascript. Use Emscripten with Fortran: LAPACK binding

il modo emscripten sembra la più versatile, im appena circa di check it out, ma sembra come una montagna, anche questo argomento sembra essere un po 'di una chiamata alle armi, emscripten funziona solo con FORTRAN se hack (vedi link dal secondo link). Penso che quello che stiamo cercando sia un blas support in javascript, questo non è un problema chiuso in alcun modo, e per alcuni di noi qui fuori è molto frustrante! speriamo che qualcuno abbia un link a queste librerie blasche non possiamo trovare ... per favore fatemi sapere se non ho abbastanza la testa intorno a questo problema, js è nuovo per me.

anche, suggerendo che html5 è sufficientemente "ottimizzato" per usare l'hardware, come possiamo fidarci di questo !? abbiamo bisogno di blas gpu ottimizzati (sottoprogrammi di algebra lineare di base) per es. prodotto punto.

penso che forse anche questi vecchi fortran blas in realtà non sono la cosa giusta per una moderna gpu? node-cuda sembra molto probabilmente la cosa migliore che ho trovato ...

Problemi correlati