【发布时间】:2022-03-17 00:34:23
【问题描述】:
我有一个显示器网格(12*2=24 显示器)作为一个大显示器(大墙大小的显示器)运行。
我使用 three.js 构建了一个可视化,具有超过 10 000 000 个数据点和 12690 x 3840 分辨率。因此,这种可视化使用了 GPU 的全部功能,并且与可视化的交互变得缓慢。
我想通过一个服务器将渲染分布在 12 台计算机上以获得更好的性能,能够添加更多的数据点并进行流畅的交互。
我该如何实现?
【问题讨论】:
-
多少个核心?根据数据处理的相互依赖关系,机器可能已经有处理数据处理需求的咕噜声(webWorkers)。用于取决于 GPU 负载的渲染。如果完全渲染像素,工作人员将无济于事。但是,如果 GPU 有空闲时间等待数据,那么工作人员可能会有所帮助。但是有了 JS,你就没有手瞎了,可以平稳地跑,然后随机爬行。您需要从 janky 浏览器应用程序转为原生 (C++) 到流畅且快速的原生应用程序。 BTW 12690 很奇怪,我想你的意思是 12960
-
我们可以使用工人的 GPU 吗?顺便说一句,是的,它是 12960=1080*12
-
是的,您可以使用
OffscreenCanvasAPI 在工作人员中访问WebGL。但是,只有一个 GPU 和多个内核,您必须非常小心。跨线程同步 GPU 调用很棘手 一次只有一个工作人员可以访问 GPU,并且由于 JS 阻止等待绘制调用的工作人员将拒绝其他工作人员访问。最好是一个线程来处理 GPU 将非渲染处理加载到线程。
标签: three.js webgl distributed-computing