Jul*_*ult 9 opengl profiling rendering
现在我们有非常先进的工具来消除渲染,允许看到不同的阶段,绘制调用所花费的时间等等.但是如果没有它们,图形管道在理解内部发生的事情时就是一个黑盒子.
假设由于某种原因你没有这样的工具或者非常有限的工具.无论如何,你会如何衡量渲染中的时间?
我知道丢弃绘制调用以查看CPU时间,设置1x1视口以查看几何体成本,使用哑片段着色器突出显示填充率等技巧...它们已经很有用但只能粗略地了解一下正在进行,并没有告诉并行性的水平.
此外,在每个绘图调用的每个阶段花费的时间似乎很难,特别是考虑到测量时由于噪声导致的精度不足.
当您的背包几乎是空的并且您仍需要描绘您的渲染时,您使用了哪些技巧?你的瑞士军刀是什么?
小智 5
小代码/阶段/等花费的绝对时间。并不那么相关,因为 GPU 驱动程序优化/批处理/并行性/版本使得在没有 GPU 计数器的情况下几乎不可能进行精确的代码测量。(如果您与供应商库一起使用,您可以获得)
您可以轻松衡量的是每个代码更改的影响。你只会获得相对的影响,而这正是你真正需要的。这只是使用帧渲染时间。
理想情况下,您的目标应该是能够在运行时编辑着色器或管道代码,并有一种直接的方法来检查对整个典型场景的影响,例如比较多个代码路径之间的图形。(注意静态场景,否则您将得到高度优化的静态视图,但动态场景性能较差)
请注意,场景状态加载/保存/记录对于许多其他事情都很方便,从调试到撤消/重做到即时重新加载,更不用说保存游戏了。添加屏幕截图+图像差异,您也可以对图形代码进行单元测试。
如果可以的话,将其添加到您的 CI 服务器中,这样巨大的代码影响就不会被忽视。(也可以帮助艺术家签入资产,而不评估渲染影响)相关 CI 图形测试工作的必读内容如下:http://aras-p.info/blog/2011/06/17/testing-图形代码 4 年后/