现在我们拥有非常先进的工具来消除渲染,允许看到不同的阶段,绘制调用所花费的时间等等。但是如果没有它们,当了解内部发生的事情时,图形管道就是一个黑盒子。
假设由于某种原因你没有这样的工具或非常有限的工具。无论如何,你会如何衡量渲染中的时间?
我知道丢弃绘制调用以查看CPU时间,设置1x1视口以查看几何体成本,使用哑片段着色器突出显示填充率等技巧...它们已经很有用但只能给出粗略的关于发生了什么的想法,并且没有说明并行度的水平。
另外,每次绘制调用每个阶段花费的时间似乎很难,尤其是考虑到测量时由于噪声导致的精度不足。
当你的背包几乎是空的并且你还需要描绘你的渲染时,你会使用什么技巧?你的个人瑞士军刀是什么?
答案 0 :(得分:4)
小代码/阶段/等花费的绝对时间。并不是那么相关,因为GPU驱动程序优化/批处理/并行/版本使得几乎不可能在没有GPU计数器的情况下进行精确的代码测量。 (如果您使用供应商库,则可以获得)
您可以轻松衡量的是每个代码更改的影响。你只会受到相对影响,而这正是你真正需要的。那只是使用帧渲染时间。
理想情况下,您应该能够在运行时编辑着色器或管道代码,并且可以直接检查整个典型场景的影响,例如只比较几个代码路径之间的图形。 (注意静态场景,否则你将以高度优化的静态视图结束,但动态场景表现不佳)
请注意,场景状态加载/保存/记录对于很多其他事情都很方便,从调试到撤消/重做到动态重新加载,更不用说存储游戏了。 添加屏幕截图接受者+图像差异,您也可以对图形代码进行单元测试。
如果可以,请将其添加到CI服务器,以免影响巨大的代码影响。 (帮助艺术家办理登记资产时,不评估渲染影响) 必须阅读相关的CI图形测试工作:http://aras-p.info/blog/2011/06/17/testing-graphics-code-4-years-later/
答案 1 :(得分:1)
注意:我正在回答这个问题:“使用分析器分析图形渲染”,因为我正在寻找的东西;)
我主要在Mac上工作,而且我正在使用多种工具:
关于“愚蠢的碎片着色器突出填充物”的诀窍是什么? (绘制一个简单的颜色?或更先进的东西?)