(我不确定这是否应该开启 https://softwareengineering.stackexchange.com/ 或者不知道,如果你这么认为,请评论)

我即将为我的学士论文创建 WebGL 实现的基准。我不确定我应该创建什么样的测试,以及我是否应该只测量每秒的帧数,或者是否可以获得一些其他有用的数据来进行基准测试......

目前我只是想到这样的测试:

  • 1 个单色物体
  • 1 个多色物体
  • 1 个纹理对象
  • 1 个带混合的纹理对象
  • 1 个带闪电的纹理对象
  • 1 个具有多个照明点的纹理对象
  • 1 个场景渲染为纹理并将其用于另一个对象
  • 1个模型动画
  • 使用更多对象的所有测试:50、500、5000
  • 每次渲染更改着色器/程序(一次、两次、多次)

这将导致 40 种不同的测试,但我不确定这些是否是对性能的重要测试。

一位朋友建议在复杂的着色器上进行测试,但由于着色器在图形硬件上运行,因此与 java 桌面应用程序应该没有区别,对吧?

无论如何,我的感觉是,JavaScript 的性能是 WebGL 的主要瓶颈。

更新

我终于做了我的测试。在讨论了基准测试的工作方式之后,我创建了以下内容: http://martin.cyor.eu/benchmark

有帮助吗?

解决方案

您选择的基准测试应取决于您打算对基准分数(或分数的预期受众群体以及他们打算与之处理的人)的意图);据推测,他们应该影响某些决定 - 您应该从该决定开始,然后从中倒退,以弄清楚基准应衡量的内容。

我会说您提议的清单落在基准测试范围的“合成”端。它们似乎是一种对WebGL/浏览器实现者更有用的东西,而不是试图在WebGL实现/平台之间进行选择以决定哪种可能运行应用程序的人(cf openGL基准标准的历史记录,都可以在所有位置进行所有操作(cf)每秒的合成多边形数字都被要求索取的胡说八道直到 SpecViewPerf 出现并实施了一些现实的现实测试案例)。

其他提示

我同意 @timday 的观点,即你应该将你的调查偏向于“真实”的东西,正如你在评论中建议的那样,你可能希望这个故事是关于在基于桌面或基于浏览器的应用程序之间做出决定的。

这正是我现在正在做的事情。我的客户有一个当前在 Windows 桌面上运行的可视化应用程序。他们的一个典型场景有 500,000 个三角形、大量纹理和透明度。目前,他们的用户不愿意安装查看器 - 他们倾向于在系统管理员控制其计算机上安装的内容的公司环境中工作。一些用户更愿意在他们的 iPad 上运行可视化,而查看器无论如何都不会运行。所以我的客户想知道 WebGL 是否可以解决他们的平台问题 - 尽管还没有浏览器正式支持 WebGL,而且 IE 和 iPad 都没有宣布任何类型的支持。

请记住,您所做的任何基准测试都相对毫无意义,因为您正在测量一个移动目标。浏览器制造商正在努力实现 WebGL,并且他们经常更新其测试版。他们不仅致力于实现 WebGL 一致性,而且还必须担心浏览器安全问题和整体管道流程。 这个视频 讨论一些问题(并让您了解要研究的内容)。此外,性能可能会根据您的操作系统和图形硬件而有所不同。

正如您所指出的,一旦 WebGL 在图形硬件中运行,它的运行速度应该与桌面应用程序一样快。您的基准测试应该尝试确认这一点,然后您应该尝试测量由于使用浏览器而造成的性能损失。我的感觉是,Javascript 本身并不是瓶颈,只是因为没有那么多 Javascript 需要执行(而且现在速度相当快)。然而,正如上述视频末尾所述,Javascript-C++ 绑定、请求验证、流程控制等方面可能会出现效率低下的情况。另一方面,浏览器制造商(至少是谷歌)正在努力解决这些问题。

我注意到的一件事不是帧率/性能问题(在我当前的测试中,我可以以 30fps 渲染 500,000 个纹理三角形),但帧率似乎不太一致,而且帧似乎被丢弃时。我怀疑,但不知道这是否与相对简单有关 setInterval() 方式或在 Javascript 中运行动画。(Mozilla 的 mozRequestAnimationFrame 可能是更好地处理此问题的一种方法)。

虽然我不知道上述内容对你的论文有多大帮助,但在我看来,你的主题很丰富,你应该做的不仅仅是炮制简单的基准。也许您应该从一些基准开始,比较浏览器与其他浏览器。桌面性能,然后尝试检查最佳实践,不仅可以在浏览器和桌面之间做出决定,还可以编写 WebGL 应用程序。

还有很多 WebGL 框架。我尝试了几个,印象非常深刻——有很多东西值得我们学习。根据您的兴趣和论文要求,您可能也有兴趣对这些进行基准测试。

无论您采取哪种方式,我怀疑有一个庞大的潜在 WebGL 采用者社区将渴望获得您将要研究的信息。

我不访问该网站,所以我觉得很有趣,我只是阅读您的问题,因为我还在写关于该主题的浴缸。一个月前,我正在考虑同样的问题,并决定不对彼此的不同WebGL框架进行基准测试,主要是因为我认为主要区别可能在于他们使用的数学图书馆。正如您所说,我也得出结论,GPU上运行的零件没有区别。我不考虑将WebGL与桌面图形进行比较,但这可能很有用。请记住,Chrome和Firefox的最新WebGL实现每个默认值通过Windows使用角度使用Directx。

顺便说一句,这里是某种WebGL基准: http://webgl-bench.appspot.com/

祝你好运!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top