WebGL基准测试 - 我应该创建哪些测试?

5

(我不确定这个问题是否应该放在https://softwareengineering.stackexchange.com/上,请在评论中提出您的想法)

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

目前我只考虑了以下测试:

  • 1个单色对象
  • 1个多色对象
  • 1个纹理对象
  • 1个带混合的纹理对象
  • 1个带光照的纹理对象
  • 1个带多个光照点的纹理对象
  • 将场景呈现为纹理并在另一个对象上使用它
  • 1个模型动画
  • 所有测试都使用更多对象:50、500、5000
  • 每次渲染更改着色器/程序(一次、两次、多次)

这将导致40个不同的测试,但我不确定这些测试是否对性能有意义。

一位朋友建议测试复杂的着色器,但由于着色器在图形硬件上运行,所以与Java桌面应用程序没有区别,对吗?

无论如何,我的感觉是JavaScript的性能是WebGL中的主要瓶颈。
更新
最终我进行了测试。在讨论基准测试方式后,我创建了以下内容:http://martin.cyor.eu/benchmark
3个回答

3

我同意@timday的观点,你应该偏向于调查一些“实际”的东西,正如你在评论中建议的那样,你可能想让故事围绕着在桌面应用程序和基于浏览器的应用程序之间进行决策。

这正是我现在正在开发的。我的客户有一个可视化应用程序,目前在Windows桌面上运行。对于他们来说,典型的场景有500,000个三角形,大量的纹理和透明度。目前,他们的用户不愿安装查看器 - 他们倾向于在企业环境中工作,在这种环境中系统管理员控制着计算机上安装的内容。而且,有几个用户更喜欢在他们的iPad上运行可视化效果,但是查看器在那里无法运行。因此,我的客户想知道WebGL是否可以解决他们的平台问题 - 不管任何浏览器都没有正式支持WebGL,并且IE和iPad都没有宣布任何支持。

请注意,任何基准测试都相对无意义,因为您正在测量一个移动目标。浏览器制造商正在努力实现WebGL,并且他们经常更新其测试版发布。他们不仅要致力于符合WebGL标准的实现,还必须担心浏览器安全问题和整体流程。 这个视频讨论了一些问题(并给你提供了一个参考)。此外,性能可能会因您的操作系统和图形硬件而异。
正如您所指出的,一旦WebGL在图形硬件中运行,它应该像桌面应用程序一样快。您的基准测试应该尝试确认这一点,然后您应该尝试测量由于在浏览器中而导致的性能损失的位置。我认为JavaScript本身不是瓶颈,只是因为要执行的JavaScript不是很多(而且这些天它非常快)。然而,正如上述视频末尾所描述的那样,JavaScript-C ++绑定,请求验证,流程控制等可能会导致低效率。另一方面,浏览器制造商(至少是Google)正在努力解决这些问题。
我注意到的问题不是帧速率/性能问题(在我的当前测试中,我可以以30fps渲染500,000个纹理三角形),而是帧速率似乎不太一致,有时会出现帧丢失。我怀疑这可能与相对简单的使用Javascript运行动画的setInterval()方式有关。(Mozilla的mozRequestAnimationFrame可能是更好地处理这个问题的方法)。
虽然我不知道以上内容对你的论文有多大帮助,但在我看来,你有一个丰富的主题,应该做更多的比较测试。也许你应该从一些基准测试开始,比较浏览器和桌面性能,然后尝试检查决定使用浏览器还是桌面以及编写WebGL应用程序的最佳实践。
此外,还有很多WebGL框架可供选择。我尝试了几个,非常印象深刻——从中可以学到很多东西。根据你的兴趣和论文要求,你可能也会对对这些进行基准测试感兴趣。
无论你走哪条路,我都认为有一个庞大的潜在WebGL用户群体将渴望获取你即将研究的信息。

谢谢你的回答。不支持官方 WebGL 实现的问题并不让我担心,因为这只是当前我应该拥有的“快照”。顺便说一下:我简直不能相信你创造了我在90年代小时候玩过的游戏——"Boulder Dash"...... - WarrenFaith

2
你选择基准应该取决于你打算如何使用基准分数(或者说,面向哪个受众以及他们打算如何使用这些分数);可以预期它们会影响某些决策-你应该从那个决策开始,然后倒推出基准应该衡量什么。
我认为你提出的清单属于基准测试谱系中的“合成”端;它们似乎更适用于具有性能分析器的WebGL/浏览器实现者,而不是试图在WebGL实现/平台之间进行选择以确定哪个最适合运行应用程序的人(参见OpenGL基准测试的历史,其中所有种类的荒谬都声称为合成每秒多边形数字,直到SPECviewperf出现并强制执行一些现实世界的测试用例)。

我也在寻找这样的东西,有人试图在WebGL实现/平台之间做出选择,以决定哪个最有可能运行应用程序。我需要达到的结果是给开发者一个提示,告诉他们是否应该开发桌面应用程序,还是WebGL已经可以用于他们的应用程序了...还有一些额外测试的想法吗?构建更大的场景,加入更多的特效?在同一个测试中使用多个特效? - WarrenFaith
1
嗯...你的基准测试需要在WebGL上做一些“真实”的事情,但它实际上会被用于什么样的事情呢?我不知道!我建议基于一些“真实世界”的WebGL代码(如SpecViewPerf基准测试)的基准测试将比合成的基准测试对你的受众更有用。听起来你还应该针对两种实现进行目标设置——一个是WebGL,另一个是C/C++和OpenGL(例如),并查看差异以及性能开始分歧的地方。 - timday
这鼓励了我,因为这正是我所思考的方向...谢谢! - WarrenFaith

1

我不经常访问这个网站,所以我觉得很有趣,我刚刚看到了你的问题,因为我也正在编写我的毕业论文。一个月前,我想到了同样的问题,并决定不将不同的WebGL框架相互对比,主要是因为我认为主要区别可能在于它们使用的数学库。正如你所说,我也得出结论,gpu 上运行的部分不应该有任何区别。

将 WebGL 与桌面图形进行比较是我没有考虑过的事情,但这可能是有用的。请记住,Chrome 和 Firefox 的最近的 WebGL 实现在 Windows 上默认通过 ANGLE 使用 DirectX。

顺便说一下,这里有一些 Webgl 基准测试: http://webgl-bench.appspot.com/

祝好运!


我不比较WebGL框架,但我在想是否应该使用一个框架而不是自己做所有的事情……你做了什么?你是自己做还是用了框架?我能看看你的基准吗?我从来没有听说过ANGLE,幸运的是我是在Linux下开发 :) 但这是我分析结果时需要记住的。 - WarrenFaith
当我谈论比较框架时,我是在参考brainjam的建议。抱歉没有表达清楚。正如我所说,我没有进行任何基准测试。我的主题是着色器,但我们选择了一个不太具体的主题名称,因为我们/我不确定我会做什么。有时我也会在linux上... - einSelbst
你能给我你阅读到的角度默认使用的来源吗?我找不到任何提到它的地方...先谢谢你了... - WarrenFaith
当然,它在这里:https://www.khronos.org/webgl/public-mailing-list/archives/1012/msg00055.html - 真是糟糕,现在有些信息只能在谷歌搜索结果的第二页找到... - einSelbst

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接