我今天早些时候(在TechCrunch.com上)遇到了这个概念证明,并且对于他们如何设法完成最终结果感到震惊和好奇。他们表示他们不使用webGL或任何插件,但他们能够直接与GPU交互并使用Javascript以高达60 fps的速度呈现3D视觉效果。有没有想过如何做到这一点,或者如何在不使用插件的情况下从Javascript访问GPU?
网站地址为:famo.us
ps:尝试使用箭头键将方向移到远处!!
答案 0 :(得分:16)
他们正在使用标准的HTML5
Javascript API来实现这一目标。
我在代码中看到了requestAnimationFrame
的几个引用。此方法允许使用兼容浏览器的人显示更流畅和优化的动画,其中帧速率远比基于setInterval
的动画允许的更好。这肯定是通过使用GPU和可用的硬件背景来实现的。
使用任何Javascript例程都无法直接访问GPU或其他所有硬件组件。相反,基于被调用的JS指令和执行上下文的浏览器将使用GPU (如果可能)来优化某些特定的处理,演算和渲染。
答案 1 :(得分:6)
关于famo.us:他们确实分析了Webkit渲染管道的瓶颈,然后找到了在构建页面时绕过它们的方法。基本上:绕过DOM树构造,渲染树构造,渲染树布局。请查看this article以获得完整的解释。
答案 2 :(得分:1)
他们正在使用CSS 3D变换。 Web浏览器越来越多地使用硬件加速来完成这些CSS3的事情。
答案 3 :(得分:1)
我认为webGL glsl.js库可能对此有好处,尽管我看过基准测试...... https://github.com/gre/glsl.js/
这种方法似乎也可行;
基本上以我们喜欢的方式使用gpu,使用硬件优化的功能(稍微调查一下" blas"),你不想写这些!奇怪的是,似乎人们仍然使用旧的fortran blas ....有一些东西通过llvm编译然后使用emscripten将其变成javascript。 Use Emscripten with Fortran: LAPACK binding
emscripten方式似乎是最通用的,我即将检查它,但它看起来像一座山,这个话题似乎有点像武器,emscripten只适用于fortran如果你破解它(见来自第二个链接的链接)。我认为我们正在寻找的是javascript中的支持,这不是一个封闭的问题,对于我们这里的一些人来说非常令人沮丧!希望有人链接到我们无法找到的这些blas库... 如果我对这个问题没有全面了解,请告诉我,js对我来说是新的。另外,建议html5足够"优化"使用硬件,我们怎么能相信这个!?我们需要gpu优化的blas(基本线性代数子程序),例如点积。
我想也许这些古老的堡垒实际上对于现代的gpu来说是正确的吗? node-cuda似乎很可能是我找到的最好的东西......