5

(我不确定这是否应该在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

4

3 回答 3

3

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

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

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

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

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

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

那里也有很多 WebGL 框架。我尝试了几个,印象非常深刻——可以从他们身上学到很多东西。根据您的兴趣和论文要求,您可能也有兴趣对这些进行基准测试。

不管你走哪条路,我怀疑会有一大群潜在的 WebGL 采用者会渴望你将要研究的那种信息。

于 2011-01-06T17:34:46.627 回答
2

你选择的基准应该取决于你打算用基准分数做什么(或者分数的目标受众是谁以及他们打算用这些分数做什么);大概它们应该影响某些决定——你应该从那个决定开始,然后从那个决定开始,找出基准应该衡量的内容。

我想说您提出的清单属于基准测试范围的“综合”端;它们似乎对具有分析器的 WebGL/浏览器实现者更有用,而不是对试图在 WebGL 实现/平台之间进行选择以决定哪个可能最好地运行应用程序的人更有用(参见 OpenGL 基准测试的历史,其中所有在SPECviewperf出现并实施了一些现实世界的测试用例之前,人们曾经声称合成多边形每秒的数字是胡说八道)。

于 2011-01-05T21:05:31.737 回答
1

我不经常访问这个网站,所以我觉得我刚刚读了你的问题有点好笑,因为我也在写关于那个话题的洗澡。一个月前,我正在考虑同样的问题,并决定不对不同的 WebGL 框架进行基准测试,主要是因为我认为主要的区别可能在于它们使用的数学库。正如你所说,我也得出结论,在 gpu 上运行的部件应该没有区别。将 WebGL 与桌面图形进行比较是我没有考虑过的,但它可能很有用。请记住,Chrome 和 Firefox 的最新 WebGL 实现默认在 Windows 上通过 ANGLE 使用 DirectX。

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

祝你好运!

于 2011-01-07T06:34:31.270 回答