2013-03-04 21 views
10

Tôi đã xem qua bằng chứng khái niệm này sớm hơn hôm nay (trên TechCrunch.com) và bị thổi bay đi và tò mò về cách họ quản lý để đạt được kết quả cuối cùng. Họ nói rằng họ không sử dụng webGL hoặc bất kỳ plugin nào nhưng họ có thể tương tác trực tiếp với GPU và hiển thị hình ảnh 3D ở tốc độ tối đa 60 khung hình/giây mà không sử dụng gì ngoài Javascript. Bất kỳ ý tưởng làm thế nào điều này có thể được thực hiện, hoặc làm thế nào để truy cập GPU từ Javascript nói chung mà không cần sử dụng các plugin?Truy cập GPU thông qua trình duyệt web

Site Địa chỉ là: famo.us

ps: Hãy thử sử dụng các phím mũi tên để chuyển hướng xa nó ra !!

Trả lời

15

Họ đang sử dụng các API Javascript chuẩn HTML5 để đạt được điều này.

Tôi đã xem một số tham chiếu đến requestAnimationFrame trong mã của chúng. Phương pháp này cho phép người dùng sử dụng trình duyệt tương thích, hiển thị nhiều hình ảnh động và được tối ưu hóa tốt hơn, với tỷ lệ khung hình tốt hơn nhiều so với hoạt ảnh setInterval sẽ cho phép bạn có. Điều này chắc chắn đạt được bằng cách sử dụng GPU và nền phần cứng có sẵn.

GPU hoặc mọi thành phần phần cứng khác không thể truy cập trực tiếp bằng bất kỳ thói quen Javascript nào. Thay vào đó, trình duyệt, dựa trên các chỉ thị JS và ngữ cảnh thực thi, sẽ sử dụng GPU nếu có thể để tối ưu hóa một số phương pháp, phép tính và kết xuất cụ thể.

+0

Cảm ơn, vì vậy chúng chỉ sử dụng các hàm html5 chuẩn? Bây giờ tôi hơi kém ấn tượng, họ tạo ra như họ đang truy cập trực tiếp phần cứng GPU thông qua Javascript. Đương nhiên, tôi bắt đầu suy nghĩ về tất cả những khả năng tuyệt vời mà điều này sẽ thể hiện nếu điều này đúng. Aahh tốt. –

+0

Họ có thể nói rằng họ đang sử dụng GPU vì điều này là bằng cách nào đó đúng. Tuy nhiên, họ không đạt được điều này, cuối cùng, ứng dụng duy nhất sẽ chọn sử dụng GPU hay bất kỳ loại tương tác phần cứng nào có sẵn là chính trình duyệt. –

+0

họ thực sự nói rằng họ sử dụng một wrapper cho mỗi nền tảng mà họ chạy trên. vì vậy thay vì sử dụng css3, họ sử dụng requestAnimationFrame và các phần tử html bình thường, nhưng các tính toán 3D được thực hiện trong GPU. Hãy nghĩ về nó như điện thoại cho GPU :) nếu bạn muốn. Họ đề cập rằng trên xbox ví dụ bao bọc là trong DirectX, trong khi trên iOS trong OpenGL. – memical

1

Họ đang sử dụng các biến đổi CSS 3D. Các trình duyệt web ngày càng sử dụng khả năng tăng tốc phần cứng để thực hiện các loại CSS3 này.

6

Liên quan đến famo.us: họ đã phân tích các nút cổ chai của ống dựng hình Webkit và sau đó tìm cách vượt qua chúng trong khi xây dựng các trang. Về cơ bản: việc xây dựng cây DOM, xây dựng cây Render, Layout của Render Tree bị bỏ qua. Hãy xem this article để có giải thích toàn bộ.

enter image description here

1

tôi nghĩ rằng thư viện WebGL glsl.js có thể là tốt cho điều này, mặc dù tôi havnt chuẩn thấy ... https://github.com/gre/glsl.js/

cũng cách tiếp cận này có vẻ khả thi;

về cơ bản sử dụng gpu theo cách chúng tôi muốn, các chức năng tối ưu hóa phần cứng (có một chút nhìn vào "blas") được sử dụng, bạn không muốn viết chúng! kỳ lạ có vẻ như mọi người vẫn còn sử dụng cũ fortran blas .... có một số công cụ với biên dịch thông qua llvm và sau đó sử dụng emscripten để biến nó thành javascript. Use Emscripten with Fortran: LAPACK binding

cách emscripten có vẻ linh hoạt nhất, im chỉ để kiểm tra xem nó ra, nhưng nó trông giống như một ngọn núi, chủ đề này có vẻ hơi kêu gọi, emscripten chỉ hoạt động với fortran nếu bạn hack nó (xem liên kết từ liên kết thứ hai). tôi nghĩ rằng những gì chúng tôi đang tìm kiếm là hỗ trợ blas trong javascript, đây không phải là một vấn đề đóng bởi bất kỳ phương tiện, và đối với một vài người trong chúng ta ra ở đây nó là rất bực bội! hy vọng ai đó có liên kết đến các thư viện blas này, chúng tôi không thể tìm thấy ... hãy cho tôi biết nếu tôi không hoàn toàn có vấn đề về vấn đề này, js là điều mới mẻ đối với tôi.

cũng cho thấy html5 đủ "tối ưu" để sử dụng phần cứng, làm thế nào chúng ta có thể tin tưởng điều này !? chúng ta cần blas tối ưu hóa gpu (chương trình con đại số tuyến tính cơ bản), ví dụ: dot sản phẩm.

tôi nghĩ rằng có lẽ cũng là những fortran blas cũ arnt thực sự là điều đúng đắn cho một gpu hiện đại? nút-cuda dường như rất có thể là điều tốt nhất tôi đã tìm thấy ...